@aws-cdk/toolkit-lib 0.3.4 → 0.3.5

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 (49) hide show
  1. package/api-extractor.json +6 -3
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/actions/diff/index.d.ts +1 -1
  5. package/lib/actions/diff/index.js +1 -1
  6. package/lib/actions/refactor/index.d.ts +32 -0
  7. package/lib/actions/refactor/index.js +1 -1
  8. package/lib/api/aws-auth/awscli-compatible.d.ts +6 -5
  9. package/lib/api/aws-auth/awscli-compatible.js +1 -1
  10. package/lib/api/aws-auth/credential-plugins.d.ts +2 -2
  11. package/lib/api/aws-auth/credential-plugins.js +1 -1
  12. package/lib/api/aws-auth/provider-caching.d.ts +3 -3
  13. package/lib/api/aws-auth/provider-caching.js +1 -1
  14. package/lib/api/aws-auth/sdk-logger.d.ts +8 -2
  15. package/lib/api/aws-auth/sdk-logger.js +4 -4
  16. package/lib/api/aws-auth/sdk-provider.d.ts +4 -3
  17. package/lib/api/aws-auth/sdk-provider.js +1 -1
  18. package/lib/api/aws-auth/sdk.d.ts +7 -6
  19. package/lib/api/aws-auth/sdk.js +3 -3
  20. package/lib/api/aws-auth/tracing.d.ts +2 -2
  21. package/lib/api/aws-auth/tracing.js +1 -1
  22. package/lib/api/aws-auth/types.d.ts +3 -3
  23. package/lib/api/aws-auth/types.js +1 -1
  24. package/lib/api/bootstrap/bootstrap-template.yaml +12 -1
  25. package/lib/api/cloud-assembly/index.d.ts +2 -1
  26. package/lib/api/cloud-assembly/index.js +1 -1
  27. package/lib/api/cloud-assembly/private/source-builder.d.ts +4 -4
  28. package/lib/api/cloud-assembly/private/source-builder.js +5 -5
  29. package/lib/api/hotswap/common.d.ts +2 -1
  30. package/lib/api/hotswap/common.js +8 -2
  31. package/lib/api/hotswap/ecs-services.js +3 -2
  32. package/lib/api/io/private/index.d.ts +0 -1
  33. package/lib/api/io/private/index.js +1 -2
  34. package/lib/api/plugin/plugin.d.ts +4 -4
  35. package/lib/api/plugin/plugin.js +5 -5
  36. package/lib/api/refactoring/execution.d.ts +7 -0
  37. package/lib/api/refactoring/execution.js +43 -0
  38. package/lib/api/refactoring/index.d.ts +3 -1
  39. package/lib/api/refactoring/index.js +64 -3
  40. package/lib/index_bg.wasm +0 -0
  41. package/lib/payloads/deploy.d.ts +1 -1
  42. package/lib/payloads/deploy.js +1 -1
  43. package/lib/toolkit/toolkit.js +46 -14
  44. package/package.json +18 -17
  45. package/tsdoc.json +6 -1
  46. package/lib/api/io/private/sdk-logger.d.ts +0 -3
  47. package/lib/api/io/private/sdk-logger.js +0 -124
  48. package/lib/api/private.d.ts +0 -1
  49. package/lib/api/private.js +0 -18
@@ -212,10 +212,10 @@ let SDK = class SDK {
212
212
  registerTaskDefinition: (input) => client.send(new client_ecs_1.RegisterTaskDefinitionCommand(input)),
213
213
  updateService: (input) => client.send(new client_ecs_1.UpdateServiceCommand(input)),
214
214
  // Waiters
215
- waitUntilServicesStable: (input) => {
215
+ waitUntilServicesStable: (input, timeoutSeconds) => {
216
216
  return (0, client_ecs_1.waitUntilServicesStable)({
217
217
  client,
218
- maxWaitTime: 600,
218
+ maxWaitTime: timeoutSeconds ?? 600,
219
219
  minDelay: 6,
220
220
  maxDelay: 6,
221
221
  }, input);
@@ -388,4 +388,4 @@ exports.SDK = SDK = __decorate([
388
388
  tracing_1.traceMemberMethods
389
389
  ], SDK);
390
390
  const CURRENT_ACCOUNT_KEY = Symbol('current_account_key');
391
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQWNBLDREQVFpQztBQU9qQyxzRUFJc0M7QUEwRHRDLDBFQThCd0M7QUFPeEMsNEVBSXlDO0FBQ3pDLGdFQUttQztBQUNuQyxvREE2QjZCO0FBcUI3QixvREFXNkI7QUFVN0Isb0RBTTZCO0FBVzdCLGdHQU9tRDtBQUNuRCxvREFXNkI7QUFDN0Isb0RBUTZCO0FBQzdCLDBEQWtCZ0M7QUFDaEMsOERBV2tDO0FBcUJsQyxrREFVNEI7QUFDNUIsNEVBS3lDO0FBS3pDLG9EQUc2QjtBQUM3QixvREFLNkI7QUFDN0Isb0RBQTBFO0FBQzFFLHNEQUE4QztBQUM5QyxxRUFBMEU7QUFHMUUsbURBQTZEO0FBRTdELG1EQUF3RDtBQUN4RCxxQ0FBdUM7QUFFdkMsdUNBQStDO0FBQy9DLDZDQUFtRDtBQUNuRCwrREFBa0U7QUFDbEUscUNBQWdEO0FBQ2hELDJDQUFrRDtBQTJNbEQ7O0dBRUc7QUFFSSxJQUFNLEdBQUcsR0FBVCxNQUFNLEdBQUc7SUE2Qks7SUE1QkgsYUFBYSxDQUFTO0lBRXRCLE1BQU0sQ0FBdUI7SUFFMUIsTUFBTSxDQUFVO0lBRWxCLFlBQVksQ0FBQztJQUU5Qjs7T0FFRztJQUNjLGdCQUFnQixHQUFHLElBQUksb0NBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV0Rzs7Ozs7O09BTUc7SUFDSyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFdEM7O09BRUc7SUFDYyxLQUFLLENBQWlDO0lBRXZELFlBQ21CLFlBQTJDLEVBQzVELE1BQWMsRUFDZCxjQUFzQyxFQUN0QyxRQUFrQixFQUNsQixNQUFlO1FBSkUsaUJBQVksR0FBWixZQUFZLENBQStCO1FBTTVELE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxH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LENBQUM7b0JBQ2YsTUFBTSxJQUFJLG1DQUFtQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUVyRCw0REFBNEQ7Z0JBQzVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUN2RixNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxxQ0FBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUE7QUExZVksa0JBQUc7Y0FBSCxHQUFHO0lBRGYsNEJBQWtCO0dBQ04sR0FBRyxDQTBlZjtBQUVELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZ1bmN0aW9uQ29uZmlndXJhdGlvbixcbiAgR2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gIEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRJbnB1dCxcbiAgU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlQXBpS2V5Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQsXG4gIFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWFwcHN5bmMnO1xuaW1wb3J0IHtcbiAgQXBwU3luY0NsaWVudCxcbiAgR2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kLFxuICBwYWdpbmF0ZUxpc3RGdW5jdGlvbnMsXG4gIFN0YXJ0U2NoZW1hQ3JlYXRpb25Db21tYW5kLFxuICBVcGRhdGVBcGlLZXlDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZVJlc29sdmVyQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWFwcHN5bmMnO1xuaW1wb3J0IHR5cGUge1xuICBHZXRSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgR2V0UmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICBMaXN0UmVzb3VyY2VzQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkY29udHJvbCc7XG5pbXBvcnQge1xuICBDbG91ZENvbnRyb2xDbGllbnQsXG4gIEdldFJlc291cmNlQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlc0NvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGNvbnRyb2wnO1xuaW1wb3J0IHR5cGUge1xuICBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZElucHV0LFxuICBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3RhY2tzQ29tbWFuZElucHV0LFxuICBMaXN0U3RhY2tzQ29tbWFuZE91dHB1dCxcbiAgUm9sbGJhY2tTdGFja0NvbW1hbmRJbnB1dCxcbiAgUm9sbGJhY2tTdGFja0NvbW1hbmRPdXRwdXQsXG4gIFN0YWNrUmVzb3VyY2VTdW1tYXJ5LFxuICBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZUNoYW5nZVNldENvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVN0YWNrQ29tbWFuZElucHV0LFxuICBDcmVhdGVTdGFja0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIERlbGV0ZVN0YWNrQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhY2tzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVN0YWNrc0NvbW1hbmRPdXRwdXQsXG4gIEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQsXG4gIEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgR2V0VGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kSW5wdXQsXG4gIEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRPdXRwdXQsXG4gIExpc3RFeHBvcnRzQ29tbWFuZElucHV0LFxuICBMaXN0RXhwb3J0c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0LFxuICBTdGFydFJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVN0YWNrQ29tbWFuZElucHV0LFxuICBVcGRhdGVTdGFja0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgU3RhY2tTdW1tYXJ5LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHtcbiAgcGFnaW5hdGVMaXN0U3RhY2tzLFxuICBDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQsXG4gIENyZWF0ZUNoYW5nZVNldENvbW1hbmQsXG4gIENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgQ3JlYXRlU3RhY2tDb21tYW5kLFxuICBEZWxldGVDaGFuZ2VTZXRDb21tYW5kLFxuICBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQsXG4gIERlbGV0ZVN0YWNrQ29tbWFuZCxcbiAgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kLFxuICBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kLFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tzQ29tbWFuZCxcbiAgRXhlY3V0ZUNoYW5nZVNldENvbW1hbmQsXG4gIEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgR2V0VGVtcGxhdGVDb21tYW5kLFxuICBHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kLFxuICBMaXN0RXhwb3J0c0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZCxcbiAgTGlzdFN0YWNrc0NvbW1hbmQsXG4gIHBhZ2luYXRlTGlzdFN0YWNrUmVzb3VyY2VzLFxuICBSb2xsYmFja1N0YWNrQ29tbWFuZCxcbiAgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kLFxuICBVcGRhdGVTdGFja0NvbW1hbmQsXG4gIFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7XG4gIEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRJbnB1dCxcbiAgRmlsdGVyTG9nRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3Vkd2F0Y2gtbG9ncyc7XG5pbXBvcnQge1xuICBDbG91ZFdhdGNoTG9nc0NsaWVudCxcbiAgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kLFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWR3YXRjaC1sb2dzJztcbmltcG9ydCB7XG4gIENvZGVCdWlsZENsaWVudCxcbiAgVXBkYXRlUHJvamVjdENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUHJvamVjdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNvZGVidWlsZCc7XG5pbXBvcnQge1xuICBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUltYWdlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN1Ym5ldHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVN1Ym5ldHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZwY3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVZwY3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kT3V0cHV0LFxuICBFQzJDbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lYzInO1xuaW1wb3J0IHR5cGUge1xuICBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZElucHV0LFxuICBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZE91dHB1dCxcbiAgTGlzdEltYWdlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIFB1dEltYWdlQ29tbWFuZElucHV0LFxuICBQdXRJbWFnZUNvbW1hbmRPdXRwdXQsXG4gIEJhdGNoR2V0SW1hZ2VDb21tYW5kSW5wdXQsXG4gIEJhdGNoR2V0SW1hZ2VDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZElucHV0LFxuICBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQgYXMgRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dCBhcyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmRPdXRwdXQsXG4gIEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRJbnB1dCxcbiAgR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZE91dHB1dCxcbiAgUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjcic7XG5pbXBvcnQge1xuICBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZCxcbiAgQ3JlYXRlUmVwb3NpdG9yeUNvbW1hbmQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCBhcyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmQsXG4gIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZCxcbiAgRUNSQ2xpZW50LFxuICBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kLFxuICBMaXN0SW1hZ2VzQ29tbWFuZCxcbiAgUHV0SW1hZ2VDb21tYW5kLFxuICBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEJhdGNoR2V0SW1hZ2VDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNyJztcbmltcG9ydCB0eXBlIHtcbiAgRGVzY3JpYmVTZXJ2aWNlc0NvbW1hbmRJbnB1dCxcbiAgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRJbnB1dCxcbiAgTGlzdENsdXN0ZXJzQ29tbWFuZElucHV0LFxuICBMaXN0Q2x1c3RlcnNDb21tYW5kT3V0cHV0LFxuICBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU2VydmljZUNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3MnO1xuaW1wb3J0IHtcbiAgRUNTQ2xpZW50LFxuICBMaXN0Q2x1c3RlcnNDb21tYW5kLFxuICBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZCxcbiAgVXBkYXRlU2VydmljZUNvbW1hbmQsXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNzJztcbmltcG9ydCB0eXBlIHtcbiAgTGlzdGVuZXIsXG4gIExvYWRCYWxhbmNlcixcbiAgRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0LFxuICBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVRhZ3NDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlVGFnc0NvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lbGFzdGljLWxvYWQtYmFsYW5jaW5nLXYyJztcbmltcG9ydCB7XG4gIERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZCxcbiAgRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZCxcbiAgRGVzY3JpYmVUYWdzQ29tbWFuZCxcbiAgRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCxcbiAgcGFnaW5hdGVEZXNjcmliZUxpc3RlbmVycyxcbiAgcGFnaW5hdGVEZXNjcmliZUxvYWRCYWxhbmNlcnMsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lbGFzdGljLWxvYWQtYmFsYW5jaW5nLXYyJztcbmltcG9ydCB7XG4gIENyZWF0ZVBvbGljeUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFJvbGVDb21tYW5kLFxuICB0eXBlIEdldFJvbGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Um9sZUNvbW1hbmRPdXRwdXQsXG4gIElBTUNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWlhbSc7XG5pbXBvcnQge1xuICBEZXNjcmliZUtleUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0LFxuICBLTVNDbGllbnQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1rbXMnO1xuaW1wb3J0IHtcbiAgSW52b2tlQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZE91dHB1dCxcbiAgTGFtYmRhQ2xpZW50LFxuICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWRWMixcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBHZXRIb3N0ZWRab25lQ29tbWFuZCxcbiAgdHlwZSBHZXRIb3N0ZWRab25lQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEhvc3RlZFpvbmVDb21tYW5kT3V0cHV0LFxuICBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kLFxuICB0eXBlIExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kT3V0cHV0LFxuICBMaXN0SG9zdGVkWm9uZXNDb21tYW5kLFxuICB0eXBlIExpc3RIb3N0ZWRab25lc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0SG9zdGVkWm9uZXNDb21tYW5kT3V0cHV0LFxuICBSb3V0ZTUzQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtcm91dGUtNTMnO1xuaW1wb3J0IHR5cGUge1xuICBEZWxldGVPYmplY3RzQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZElucHV0LFxuICBHZXRPYmplY3RDb21tYW5kT3V0cHV0LFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0LFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZElucHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHtcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kLFxuICBHZXRPYmplY3RDb21tYW5kLFxuICBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBTM0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7XG4gIEdldFNlY3JldFZhbHVlQ29tbWFuZCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQsXG4gIFNlY3JldHNNYW5hZ2VyQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2ZuJztcbmltcG9ydCB7XG4gIFNGTkNsaWVudCxcbiAgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNmbic7XG5pbXBvcnQge1xuICBHZXRQYXJhbWV0ZXJDb21tYW5kLFxuICB0eXBlIEdldFBhcmFtZXRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0LFxuICBTU01DbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kLCBTVFNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IFVwbG9hZCB9IGZyb20gJ0Bhd3Mtc2RrL2xpYi1zdG9yYWdlJztcbmltcG9ydCB7IGdldEVuZHBvaW50RnJvbUluc3RydWN0aW9ucyB9IGZyb20gJ0BzbWl0aHkvbWlkZGxld2FyZS1lbmRwb2ludCc7XG5pbXBvcnQgdHlwZSB7IE5vZGVIdHRwSGFuZGxlck9wdGlvbnMgfSBmcm9tICdAc21pdGh5L25vZGUtaHR0cC1oYW5kbGVyJztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIsIExvZ2dlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuaW1wb3J0IHR5cGUgeyBXYWl0ZXJSZXN1bHQgfSBmcm9tICdAc21pdGh5L3V0aWwtd2FpdGVyJztcbmltcG9ydCB7IEFjY291bnRBY2Nlc3NLZXlDYWNoZSB9IGZyb20gJy4vYWNjb3VudC1jYWNoZSc7XG5pbXBvcnQgeyBjYWNoZWRBc3luYyB9IGZyb20gJy4vY2FjaGVkJztcbmltcG9ydCB0eXBlIHsgQWNjb3VudCB9IGZyb20gJy4vc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IHRyYWNlTWVtYmVyTWV0aG9kcyB9IGZyb20gJy4vdHJhY2luZyc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xpVXNlckFnZW50IH0gZnJvbSAnLi91c2VyLWFnZW50JztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFMzQ2xpZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBBUElzIGFyZSB1c2VkIHRoYXQgcmVxdWlyZSBNRDUgY2hlY2tzdW1zLlxuICAgKlxuICAgKiBTb21lIFMzIEFQSXMgaW4gU0RLdjIgaGF2ZSBhIGJ1ZyB0aGF0IGFsd2F5cyByZXF1aXJlcyB0aGVtIHRvIHVzZSBhIE1ENSBjaGVja3N1bS5cbiAgICogVGhlc2UgQVBJcyBhcmUgbm90IGdvaW5nIHRvIGJlIHN1cHBvcnRlZCBpbiBhIEZJUFMgZW52aXJvbm1lbnQuXG4gICAqL1xuICBuZWVkc01kNUNoZWNrc3Vtcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWRkaXRpb25hbCBTREsgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2RrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGRlc2NyaXB0aXZlIHN0cmluZ3MgdGhhdCBpbmRpY2F0ZSB3aGVyZSB0aGUgXCJBc3N1bWVSb2xlXCIgY3JlZGVudGlhbHMgYXJlIGNvbWluZyBmcm9tXG4gICAqXG4gICAqIFdpbGwgYmUgcHJpbnRlZCBpbiBhbiBlcnJvciBtZXNzYWdlIHRvIGhlbHAgdXNlcnMgZGlhZ25vc2UgYXV0aCBwcm9ibGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVDcmVkZW50aWFsc1NvdXJjZURlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vLyBUT0RPOiBzdGlsbCBzb21lIGNsZWFudXAgaGVyZS4gTWFrZSB0aGUgcGFnaW5hdGlvbiBmdW5jdGlvbnMgZG8gYWxsIHRoZSB3b3JrIGhlcmUgaW5zdGVhZCBvZiBpbiBpbmRpdmlkdWFsIHBhY2thZ2VzLlxuLy8gQWxzbyBhZGQgYXN5bmMvYXdhaXQuIERvZXMgdGhhdCBhY3R1YWxseSBtYXR0ZXIgaW4gdGhpcyBjb250ZXh0PyBGaW5kIG91dCBhbmQgdXBkYXRlIGFjY29yZGluZ2x5LlxuXG4vLyBBbHNvIGFkZCBub3RlcyB0byB0aGUgUFIgYWJvdXQgd2h5IHlvdSBpbXBvcnRlZCBldmVyeXRoaW5nIGluZGl2aWR1YWxseSBhbmQgdXNlZCAndHlwZScgc28gcmV2aWV3ZXJzIGRvbid0IGhhdmUgdG8gYXNrLlxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25PcHRpb25zIHtcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxzOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcjtcbiAgcmVxdWVzdEhhbmRsZXI6IE5vZGVIdHRwSGFuZGxlck9wdGlvbnM7XG4gIHJldHJ5U3RyYXRlZ3k6IENvbmZpZ3VyZWRSZXRyeVN0cmF0ZWd5O1xuICBjdXN0b21Vc2VyQWdlbnQ6IHN0cmluZztcbiAgbG9nZ2VyPzogTG9nZ2VyO1xuICBzM0Rpc2FibGVCb2R5U2lnbmluZz86IGJvb2xlYW47XG4gIGNvbXB1dGVDaGVja3N1bXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBTeW5jQ2xpZW50IHtcbiAgZ2V0U2NoZW1hQ3JlYXRpb25TdGF0dXMoaW5wdXQ6IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQ+O1xuICBzdGFydFNjaGVtYUNyZWF0aW9uKGlucHV0OiBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUFwaUtleShpbnB1dDogVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlRnVuY3Rpb24oaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVSZXNvbHZlcihpbnB1dDogVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb24gZnVuY3Rpb25zXG4gIGxpc3RGdW5jdGlvbnMoaW5wdXQ6IExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZ1bmN0aW9uQ29uZmlndXJhdGlvbltdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRDb250cm9sQ2xpZW50IHtcbiAgbGlzdFJlc291cmNlcyhpbnB1dDogTGlzdFJlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFJlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBnZXRSZXNvdXJjZShpbnB1dDogR2V0UmVzb3VyY2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJlc291cmNlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgY29udGludWVVcGRhdGVSb2xsYmFjayhpbnB1dDogQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRPdXRwdXQ+O1xuICBjcmVhdGVDaGFuZ2VTZXQoaW5wdXQ6IENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgY3JlYXRlU3RhY2soaW5wdXQ6IENyZWF0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVDaGFuZ2VTZXQoaW5wdXQ6IERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlU3RhY2soaW5wdXQ6IERlbGV0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUNoYW5nZVNldChpbnB1dDogRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGUoXG4gICAgaW5wdXQ6IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8RGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlc291cmNlU2NhbihpbnB1dDogRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlU3RhY2tzKGlucHV0OiBEZXNjcmliZVN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTdGFja1Jlc291cmNlcyhpbnB1dDogRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBleGVjdXRlQ2hhbmdlU2V0KGlucHV0OiBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGdldEdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZ2V0VGVtcGxhdGUoaW5wdXQ6IEdldFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRUZW1wbGF0ZVN1bW1hcnkoaW5wdXQ6IEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZE91dHB1dD47XG4gIGxpc3RFeHBvcnRzKGlucHV0OiBMaXN0RXhwb3J0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0UmVzb3VyY2VTY2FucyhpbnB1dD86IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0U3RhY2tzKGlucHV0OiBMaXN0U3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0U3RhY2tzQ29tbWFuZE91dHB1dD47XG4gIHJvbGxiYWNrU3RhY2soaW5wdXQ6IFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0PjtcbiAgc3RhcnRSZXNvdXJjZVNjYW4oaW5wdXQ6IFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVTdGFjayhpbnB1dDogVXBkYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbihcbiAgICBpbnB1dDogVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvLyBQYWdpbmF0aW9uIGZ1bmN0aW9uc1xuICBkZXNjcmliZVN0YWNrRXZlbnRzKGlucHV0OiBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RTdGFja1Jlc291cmNlcyhpbnB1dDogTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFja1Jlc291cmNlU3VtbWFyeVtdPjtcbiAgcGFnaW5hdGVkTGlzdFN0YWNrcyhpbnB1dDogTGlzdFN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhY2tTdW1tYXJ5W10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDbG91ZFdhdGNoTG9nc0NsaWVudCB7XG4gIGRlc2NyaWJlTG9nR3JvdXBzKGlucHV0OiBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0PjtcbiAgZmlsdGVyTG9nRXZlbnRzKGlucHV0OiBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2RlQnVpbGRDbGllbnQge1xuICB1cGRhdGVQcm9qZWN0KGlucHV0OiBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dD47XG59XG5leHBvcnQgaW50ZXJmYWNlIElFQzJDbGllbnQge1xuICBkZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzKFxuICAgIGlucHV0OiBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IERlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUluc3RhbmNlcyhpbnB1dDogRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlUm91dGVUYWJsZXMoaW5wdXQ6IERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTZWN1cml0eUdyb3VwcyhpbnB1dDogRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVN1Ym5ldHMoaW5wdXQ6IERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdWJuZXRzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlcyhcbiAgICBpbnB1dDogRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVZwY3MoaW5wdXQ6IERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcGNzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBuR2F0ZXdheXMoaW5wdXQ6IERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRUNSQ2xpZW50IHtcbiAgYmF0Y2hEZWxldGVJbWFnZShpbnB1dDogQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQ+O1xuICBiYXRjaEdldEltYWdlKGlucHV0OiBCYXRjaEdldEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaEdldEltYWdlQ29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZVJlcG9zaXRvcnkoaW5wdXQ6IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlcG9zaXRvcmllcyhpbnB1dDogRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dD47XG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbihpbnB1dDogR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0PjtcbiAgbGlzdEltYWdlcyhpbnB1dDogTGlzdEltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBwdXRJbWFnZShpbnB1dDogUHV0SW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dEltYWdlQ29tbWFuZE91dHB1dD47XG4gIHB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uKFxuICAgIGlucHV0OiBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFQ1NDbGllbnQge1xuICBsaXN0Q2x1c3RlcnMoaW5wdXQ6IExpc3RDbHVzdGVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dD47XG4gIHJlZ2lzdGVyVGFza0RlZmluaXRpb24oaW5wdXQ6IFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlU2VydmljZShpbnB1dDogVXBkYXRlU2VydmljZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQ+O1xuICAvLyBXYWl0ZXJzXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlKGlucHV0OiBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxXYWl0ZXJSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50IHtcbiAgZGVzY3JpYmVMaXN0ZW5lcnMoaW5wdXQ6IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUxvYWRCYWxhbmNlcnMoaW5wdXQ6IERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVGFncyhpbnB1dDogRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVRhZ3NDb21tYW5kT3V0cHV0PjtcbiAgLy8gUGFnaW5hdGlvblxuICBwYWdpbmF0ZURlc2NyaWJlTGlzdGVuZXJzKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdGVuZXJbXT47XG4gIHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExvYWRCYWxhbmNlcltdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSUFNQ2xpZW50IHtcbiAgY3JlYXRlUG9saWN5KGlucHV0OiBDcmVhdGVQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVBvbGljeUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRQb2xpY3koaW5wdXQ6IEdldFBvbGljeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0UG9saWN5Q29tbWFuZE91dHB1dD47XG4gIGdldFJvbGUoaW5wdXQ6IEdldFJvbGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJvbGVDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJS01TQ2xpZW50IHtcbiAgZGVzY3JpYmVLZXkoaW5wdXQ6IERlc2NyaWJlS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQ+O1xuICBsaXN0QWxpYXNlcyhpbnB1dDogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhbWJkYUNsaWVudCB7XG4gIGludm9rZUNvbW1hbmQoaW5wdXQ6IEludm9rZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8SW52b2tlQ29tbWFuZE91dHB1dD47XG4gIHB1Ymxpc2hWZXJzaW9uKGlucHV0OiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlQWxpYXMoaW5wdXQ6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVGdW5jdGlvbkNvZGUoaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbihcbiAgICBpbnB1dDogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvLyBXYWl0ZXJzXG4gIHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZChkZWxheVNlY29uZHM6IG51bWJlciwgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8V2FpdGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUm91dGU1M0NsaWVudCB7XG4gIGdldEhvc3RlZFpvbmUoaW5wdXQ6IEdldEhvc3RlZFpvbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEhvc3RlZFpvbmVDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEhvc3RlZFpvbmVzKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0SG9zdGVkWm9uZXNCeU5hbWUoaW5wdXQ6IExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVMzQ2xpZW50IHtcbiAgZGVsZXRlT2JqZWN0cyhpbnB1dDogRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVPYmplY3RUYWdnaW5nKGlucHV0OiBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIGdldEJ1Y2tldEVuY3J5cHRpb24oaW5wdXQ6IEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0PjtcbiAgZ2V0QnVja2V0TG9jYXRpb24oaW5wdXQ6IEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICBnZXRPYmplY3QoaW5wdXQ6IEdldE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0Q29tbWFuZE91dHB1dD47XG4gIGdldE9iamVjdFRhZ2dpbmcoaW5wdXQ6IEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PjtcbiAgbGlzdE9iamVjdHNWMihpbnB1dDogTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdE9iamVjdHNWMkNvbW1hbmRPdXRwdXQ+O1xuICBwdXRPYmplY3RUYWdnaW5nKGlucHV0OiBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIHVwbG9hZChpbnB1dDogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWNyZXRzTWFuYWdlckNsaWVudCB7XG4gIGdldFNlY3JldFZhbHVlKGlucHV0OiBHZXRTZWNyZXRWYWx1ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0U2VjcmV0VmFsdWVDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU1NNQ2xpZW50IHtcbiAgZ2V0UGFyYW1ldGVyKGlucHV0OiBHZXRQYXJhbWV0ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdGVwRnVuY3Rpb25zQ2xpZW50IHtcbiAgdXBkYXRlU3RhdGVNYWNoaW5lKGlucHV0OiBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQ+O1xufVxuXG4vKipcbiAqIEJhc2UgZnVuY3Rpb25hbGl0eSBvZiBTREsgd2l0aG91dCBjcmVkZW50aWFsIGZldGNoaW5nXG4gKi9cbkB0cmFjZU1lbWJlck1ldGhvZHNcbmV4cG9ydCBjbGFzcyBTREsge1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFJlZ2lvbjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb25PcHRpb25zO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dnZXI/OiBMb2dnZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhY2NvdW50Q2FjaGU7XG5cbiAgLyoqXG4gICAqIFNUUyBpcyB1c2VkIHRvIGNoZWNrIGNyZWRlbnRpYWwgdmFsaWRpdHksIGRvbid0IGRvIHRvbyBtYW55IHJldHJpZXMuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN0c1JldHJ5U3RyYXRlZ3kgPSBuZXcgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3koMywgKGF0dGVtcHQpID0+IDEwMCAqICgyICoqIGF0dGVtcHQpKTtcblxuICAvKipcbiAgICogV2hldGhlciB3ZSBoYXZlIHByb29mIHRoYXQgdGhlIGNyZWRlbnRpYWxzIGhhdmUgbm90IGV4cGlyZWRcbiAgICpcbiAgICogV2UgbmVlZCB0byBkbyBzb21lIG1hbnVhbCBwbHVtYmluZyBhcm91bmQgdGhpcyBiZWNhdXNlIHRoZSBKUyBTREt2MiB0cmVhdHMgYEV4cGlyZWRUb2tlbmBcbiAgICogYXMgcmV0cmlhYmxlIGFuZCB3ZSBoYXZlIGhlZnR5IHJldHJpZXMgb24gQ0ZOIGNhbGxzIG1ha2luZyB0aGUgQ0xJIGhhbmcgZm9yIGEgZ29vZCAxNSBtaW51dGVzXG4gICAqIGlmIHRoZSBjcmVkZW50aWFscyBoYXZlIGV4cGlyZWQuXG4gICAqL1xuICBwcml2YXRlIF9jcmVkZW50aWFsc1ZhbGlkYXRlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRvIGNyZWF0ZSBkZWJ1ZyBtZXNzYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWJ1ZzogKG1zZzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JlZFByb3ZpZGVyOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcixcbiAgICByZWdpb246IHN0cmluZyxcbiAgICByZXF1ZXN0SGFuZGxlcjogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gICAgbG9nZ2VyPzogTG9nZ2VyLFxuICApIHtcbiAgICBjb25zdCBkZWJ1Z0ZuID0gYXN5bmMgKG1zZzogc3RyaW5nKSA9PiBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9TREtfREVCVUcubXNnKG1zZykpO1xuICAgIHRoaXMuYWNjb3VudENhY2hlID0gbmV3IEFjY291bnRBY2Nlc3NLZXlDYWNoZShBY2NvdW50QWNjZXNzS2V5Q2FjaGUuREVGQVVMVF9QQVRILCBkZWJ1Z0ZuKTtcbiAgICB0aGlzLmRlYnVnID0gZGVidWdGbjtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBjcmVkUHJvdmlkZXIsXG4gICAgICByZXF1ZXN0SGFuZGxlcixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg3LCAoYXR0ZW1wdCkgPT4gMzAwICogKDIgKiogYXR0ZW1wdCkpLFxuICAgICAgY3VzdG9tVXNlckFnZW50OiBkZWZhdWx0Q2xpVXNlckFnZW50KCksXG4gICAgICBsb2dnZXIsXG4gICAgfTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmN1cnJlbnRSZWdpb24gPSByZWdpb247XG4gIH1cblxuICBwdWJsaWMgYXBwZW5kQ3VzdG9tVXNlckFnZW50KHVzZXJBZ2VudERhdGE/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXVzZXJBZ2VudERhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q3VzdG9tVXNlckFnZW50ID0gdGhpcy5jb25maWcuY3VzdG9tVXNlckFnZW50O1xuICAgIHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudCA9IGN1cnJlbnRDdXN0b21Vc2VyQWdlbnQgPyBgJHtjdXJyZW50Q3VzdG9tVXNlckFnZW50fSAke3VzZXJBZ2VudERhdGF9YCA6IHVzZXJBZ2VudERhdGE7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ3VzdG9tVXNlckFnZW50KHVzZXJBZ2VudERhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudCA9IHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudD8ucmVwbGFjZSh1c2VyQWdlbnREYXRhLCAnJyk7XG4gIH1cblxuICBwdWJsaWMgYXBwc3luYygpOiBJQXBwU3luY0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEFwcFN5bmNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRTY2hlbWFDcmVhdGlvblN0YXR1czogKFxuICAgICAgICBpbnB1dDogR2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgc3RhcnRTY2hlbWFDcmVhdGlvbjogKGlucHV0OiBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFN0YXJ0U2NoZW1hQ3JlYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVBcGlLZXk6IChpbnB1dDogVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlQXBpS2V5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlRnVuY3Rpb246IChpbnB1dDogVXBkYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlUmVzb2x2ZXI6IChpbnB1dDogVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVJlc29sdmVyQ29tbWFuZChpbnB1dCkpLFxuXG4gICAgICAvLyBQYWdpbmF0aW9uIEZ1bmN0aW9uc1xuICAgICAgbGlzdEZ1bmN0aW9uczogYXN5bmMgKGlucHV0OiBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0KTogUHJvbWlzZTxGdW5jdGlvbkNvbmZpZ3VyYXRpb25bXT4gPT4ge1xuICAgICAgICBjb25zdCBmdW5jdGlvbnMgPSBBcnJheTxGdW5jdGlvbkNvbmZpZ3VyYXRpb24+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlTGlzdEZ1bmN0aW9ucyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaCguLi4ocGFnZS5mdW5jdGlvbnMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb25zO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNsb3VkQ29udHJvbCgpOiBJQ2xvdWRDb250cm9sQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xvdWRDb250cm9sQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGlzdFJlc291cmNlczogKGlucHV0OiBMaXN0UmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RSZXNvdXJjZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRSZXNvdXJjZTogKGlucHV0OiBHZXRSZXNvdXJjZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0UmVzb3VyY2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0UmVzb3VyY2VDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbG91ZEZvcm1hdGlvbigpOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSgxMSwgKGF0dGVtcHQ6IG51bWJlcikgPT4gMTAwMCAqICgyICoqIGF0dGVtcHQpKSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGludWVVcGRhdGVSb2xsYmFjazogYXN5bmMgKFxuICAgICAgICBpbnB1dDogQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8Q29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlQ2hhbmdlU2V0OiAoaW5wdXQ6IENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGNyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlOiAoXG4gICAgICAgIGlucHV0OiBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8Q3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBjcmVhdGVTdGFjazogKGlucHV0OiBDcmVhdGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ3JlYXRlU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBkZWxldGVDaGFuZ2VTZXQ6IChpbnB1dDogRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVsZXRlR2VuZXJhdGVkVGVtcGxhdGU6IChcbiAgICAgICAgaW5wdXQ6IERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlbGV0ZVN0YWNrOiAoaW5wdXQ6IERlbGV0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVTdGFja0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVTdGFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlQ2hhbmdlU2V0OiAoaW5wdXQ6IERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUNoYW5nZVNldENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGU6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlUmVzb3VyY2VTY2FuOiAoaW5wdXQ6IERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tzOiAoaW5wdXQ6IERlc2NyaWJlU3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tSZXNvdXJjZXM6IChpbnB1dDogRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZXhlY3V0ZUNoYW5nZVNldDogKGlucHV0OiBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEV4ZWN1dGVDaGFuZ2VTZXRDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRHZW5lcmF0ZWRUZW1wbGF0ZTogKGlucHV0OiBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRUZW1wbGF0ZTogKGlucHV0OiBHZXRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0VGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRUZW1wbGF0ZVN1bW1hcnk6IChpbnB1dDogR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZVN1bW1hcnlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEV4cG9ydHM6IChpbnB1dDogTGlzdEV4cG9ydHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RFeHBvcnRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RFeHBvcnRzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXM6IChcbiAgICAgICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXM6IChcbiAgICAgICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RSZXNvdXJjZVNjYW5zOiAoaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RTdGFja3M6IChpbnB1dDogTGlzdFN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFN0YWNrc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0U3RhY2tzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcm9sbGJhY2tTdGFjazogKGlucHV0OiBSb2xsYmFja1N0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxSb2xsYmFja1N0YWNrQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFJvbGxiYWNrU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBzdGFydFJlc291cmNlU2NhbjogKGlucHV0OiBTdGFydFJlc291cmNlU2NhbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVTdGFjazogKGlucHV0OiBVcGRhdGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb246IChcbiAgICAgICAgaW5wdXQ6IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8VXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlU3RhY2tFdmVudHM6IChpbnB1dDogRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRPdXRwdXQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZChpbnB1dCkpO1xuICAgICAgfSxcbiAgICAgIGxpc3RTdGFja1Jlc291cmNlczogYXN5bmMgKGlucHV0OiBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YWNrUmVzb3VyY2VTdW1tYXJ5W10+ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhY2tSZXNvdXJjZXMgPSBBcnJheTxTdGFja1Jlc291cmNlU3VtbWFyeT4oKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yID0gcGFnaW5hdGVMaXN0U3RhY2tSZXNvdXJjZXMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgc3RhY2tSZXNvdXJjZXMucHVzaCguLi4ocGFnZT8uU3RhY2tSZXNvdXJjZVN1bW1hcmllcyB8fCBbXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlcztcbiAgICAgIH0sXG4gICAgICBwYWdpbmF0ZWRMaXN0U3RhY2tzOiBhc3luYyAoaW5wdXQ6IExpc3RTdGFja3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YWNrU3VtbWFyeVtdPiA9PiB7XG4gICAgICAgIGNvbnN0IHN0YWNrUmVzb3VyY2VzID0gQXJyYXk8U3RhY2tTdW1tYXJ5PigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZUxpc3RTdGFja3MoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgc3RhY2tSZXNvdXJjZXMucHVzaCguLi4ocGFnZT8uU3RhY2tTdW1tYXJpZXMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhY2tSZXNvdXJjZXM7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY2xvdWRXYXRjaExvZ3MoKTogSUNsb3VkV2F0Y2hMb2dzQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xvdWRXYXRjaExvZ3NDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmliZUxvZ0dyb3VwczogKGlucHV0OiBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kKGlucHV0KSksXG4gICAgICBmaWx0ZXJMb2dFdmVudHM6IChpbnB1dDogRmlsdGVyTG9nRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxGaWx0ZXJMb2dFdmVudHNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRmlsdGVyTG9nRXZlbnRzQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY29kZUJ1aWxkKCk6IElDb2RlQnVpbGRDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBDb2RlQnVpbGRDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVQcm9qZWN0OiAoaW5wdXQ6IFVwZGF0ZVByb2plY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVByb2plY3RDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlUHJvamVjdENvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVjMigpOiBJRUMyQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRUMyQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpYmVBdmFpbGFiaWxpdHlab25lczogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVJbWFnZXM6IChpbnB1dDogRGVzY3JpYmVJbWFnZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlSW1hZ2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVJbnN0YW5jZXM6IChpbnB1dDogRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVSb3V0ZVRhYmxlczogKGlucHV0OiBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVNlY3VyaXR5R3JvdXBzOiAoXG4gICAgICAgIGlucHV0OiBEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVN1Ym5ldHM6IChpbnB1dDogRGVzY3JpYmVTdWJuZXRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN1Ym5ldHNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdWJuZXRzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzOiAoXG4gICAgICAgIGlucHV0OiBEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVZwY3M6IChpbnB1dDogRGVzY3JpYmVWcGNzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVZwY3NDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVWcGNzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVWcG5HYXRld2F5czogKGlucHV0OiBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlY3IoKTogSUVDUkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEVDUkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhdGNoRGVsZXRlSW1hZ2U6IChpbnB1dDogQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBCYXRjaERlbGV0ZUltYWdlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgYmF0Y2hHZXRJbWFnZTogKGlucHV0OiBCYXRjaEdldEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaEdldEltYWdlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEJhdGNoR2V0SW1hZ2VDb21tYW5kKGlucHV0KSksXG4gICAgICBjcmVhdGVSZXBvc2l0b3J5OiAoaW5wdXQ6IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ3JlYXRlUmVwb3NpdG9yeUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlSW1hZ2VzOiAoaW5wdXQ6IEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlUmVwb3NpdG9yaWVzOiAoaW5wdXQ6IERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldEF1dGhvcml6YXRpb25Ub2tlbjogKGlucHV0OiBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0SW1hZ2VzOiAoaW5wdXQ6IExpc3RJbWFnZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RJbWFnZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdEltYWdlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHB1dEltYWdlOiAoaW5wdXQ6IFB1dEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRJbWFnZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBQdXRJbWFnZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uOiAoXG4gICAgICAgIGlucHV0OiBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8UHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlY3MoKTogSUVDU0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEVDU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpc3RDbHVzdGVyczogKGlucHV0OiBMaXN0Q2x1c3RlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RDbHVzdGVyc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0Q2x1c3RlcnNDb21tYW5kKGlucHV0KSksXG4gICAgICByZWdpc3RlclRhc2tEZWZpbml0aW9uOiAoXG4gICAgICAgIGlucHV0OiBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVTZXJ2aWNlOiAoaW5wdXQ6IFVwZGF0ZVNlcnZpY2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVNlcnZpY2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlU2VydmljZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIC8vIFdhaXRlcnNcbiAgICAgIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlOiAoaW5wdXQ6IERlc2NyaWJlU2VydmljZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPFdhaXRlclJlc3VsdD4gPT4ge1xuICAgICAgICByZXR1cm4gd2FpdFVudGlsU2VydmljZXNTdGFibGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgbWF4V2FpdFRpbWU6IDYwMCxcbiAgICAgICAgICAgIG1pbkRlbGF5OiA2LFxuICAgICAgICAgICAgbWF4RGVsYXk6IDYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlbGJ2MigpOiBJRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEVsYXN0aWNMb2FkQmFsYW5jaW5nVjJDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyczogKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnM6IChpbnB1dDogRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVUYWdzOiAoaW5wdXQ6IERlc2NyaWJlVGFnc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVUYWdzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlVGFnc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIC8vIFBhZ2luYXRpb24gRnVuY3Rpb25zXG4gICAgICBwYWdpbmF0ZURlc2NyaWJlTGlzdGVuZXJzOiBhc3luYyAoaW5wdXQ6IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0ZW5lcltdPiA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IEFycmF5PExpc3RlbmVyPigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZURlc2NyaWJlTGlzdGVuZXJzKHsgY2xpZW50IH0sIGlucHV0KTtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBwYWdlIG9mIHBhZ2luYXRvcikge1xuICAgICAgICAgIGxpc3RlbmVycy5wdXNoKC4uLihwYWdlPy5MaXN0ZW5lcnMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGlzdGVuZXJzO1xuICAgICAgfSxcbiAgICAgIHBhZ2luYXRlRGVzY3JpYmVMb2FkQmFsYW5jZXJzOiBhc3luYyAoaW5wdXQ6IERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TG9hZEJhbGFuY2VyW10+ID0+IHtcbiAgICAgICAgY29uc3QgbG9hZEJhbGFuY2VycyA9IEFycmF5PExvYWRCYWxhbmNlcj4oKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yID0gcGFnaW5hdGVEZXNjcmliZUxvYWRCYWxhbmNlcnMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgbG9hZEJhbGFuY2Vycy5wdXNoKC4uLihwYWdlPy5Mb2FkQmFsYW5jZXJzIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvYWRCYWxhbmNlcnM7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaWFtKCk6IElJQU1DbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBJQU1DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBjcmVhdGVQb2xpY3k6IChpbnB1dDogQ3JlYXRlUG9saWN5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVQb2xpY3lDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQ3JlYXRlUG9saWN5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0UG9saWN5OiAoaW5wdXQ6IEdldFBvbGljeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0UG9saWN5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFBvbGljeUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldFJvbGU6IChpbnB1dDogR2V0Um9sZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0Um9sZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBHZXRSb2xlQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMga21zKCk6IElLTVNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBLTVNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmliZUtleTogKGlucHV0OiBEZXNjcmliZUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVLZXlDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0QWxpYXNlczogKGlucHV0OiBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdEFsaWFzZXNDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBsYW1iZGEoKTogSUxhbWJkYUNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IExhbWJkYUNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludm9rZUNvbW1hbmQ6IChpbnB1dDogSW52b2tlQ29tbWFuZElucHV0KTogUHJvbWlzZTxJbnZva2VDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgSW52b2tlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcHVibGlzaFZlcnNpb246IChpbnB1dDogUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlQWxpYXM6IChpbnB1dDogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUFsaWFzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlRnVuY3Rpb25Db2RlOiAoaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbjogKFxuICAgICAgICBpbnB1dDogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgLy8gV2FpdGVyc1xuICAgICAgd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkOiAoXG4gICAgICAgIGRlbGF5U2Vjb25kczogbnVtYmVyLFxuICAgICAgICBpbnB1dDogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxXYWl0ZXJSZXN1bHQ+ID0+IHtcbiAgICAgICAgcmV0dXJuIHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZFYyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsaWVudCxcbiAgICAgICAgICAgIG1heERlbGF5OiBkZWxheVNlY29uZHMsXG4gICAgICAgICAgICBtaW5EZWxheTogZGVsYXlTZWNvbmRzLFxuICAgICAgICAgICAgbWF4V2FpdFRpbWU6IGRlbGF5U2Vjb25kcyAqIDYwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcm91dGU1MygpOiBJUm91dGU1M0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJvdXRlNTNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRIb3N0ZWRab25lOiAoaW5wdXQ6IEdldEhvc3RlZFpvbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEhvc3RlZFpvbmVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0SG9zdGVkWm9uZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RIb3N0ZWRab25lczogKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0SG9zdGVkWm9uZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0SG9zdGVkWm9uZXNCeU5hbWU6IChpbnB1dDogTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgczMoKTogSVMzQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUzNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBkZWxldGVPYmplY3RzOiAoaW5wdXQ6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlT2JqZWN0c0NvbW1hbmQoe1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIENoZWNrc3VtQWxnb3JpdGhtOiAnU0hBMjU2JyxcbiAgICAgICAgfSkpLFxuICAgICAgZGVsZXRlT2JqZWN0VGFnZ2luZzogKGlucHV0OiBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRCdWNrZXRFbmNyeXB0aW9uOiAoaW5wdXQ6IEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldEJ1Y2tldExvY2F0aW9uOiAoaW5wdXQ6IEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldE9iamVjdDogKGlucHV0OiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRPYmplY3RDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRPYmplY3RUYWdnaW5nOiAoaW5wdXQ6IEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RPYmplY3RzVjI6IChpbnB1dDogTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdE9iamVjdHNWMkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0T2JqZWN0c1YyQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcHV0T2JqZWN0VGFnZ2luZzogKGlucHV0OiBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kKHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBDaGVja3N1bUFsZ29yaXRobTogJ1NIQTI1NicsXG4gICAgICAgIH0pKSxcbiAgICAgIHVwbG9hZDogKGlucHV0OiBQdXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgcGFyYW1zOiB7IC4uLmlucHV0LCBDaGVja3N1bUFsZ29yaXRobTogJ1NIQTI1NicgfSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB1cGxvYWQuZG9uZSgpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihgVXBsb2FkIGZhaWxlZDogJHtmb3JtYXRFcnJvck1lc3NhZ2UoZSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzZWNyZXRzTWFuYWdlcigpOiBJU2VjcmV0c01hbmFnZXJDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFNlY3JldFZhbHVlOiAoaW5wdXQ6IEdldFNlY3JldFZhbHVlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRTZWNyZXRWYWx1ZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNzbSgpOiBJU1NNQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU1NNQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0UGFyYW1ldGVyOiAoaW5wdXQ6IEdldFBhcmFtZXRlckNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0UGFyYW1ldGVyQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFBhcmFtZXRlckNvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0ZXBGdW5jdGlvbnMoKTogSVN0ZXBGdW5jdGlvbnNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTRk5DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVTdGF0ZU1hY2hpbmU6IChpbnB1dDogVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFXUyBTREsgdjMgcmVxdWlyZXMgYSBjbGllbnQgY29uZmlnIGFuZCBhIGNvbW1hbmQgaW4gb3JkZXIgdG8gZ2V0IGFuIGVuZHBvaW50IGZvclxuICAgKiBhbnkgZ2l2ZW4gc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRVcmxTdWZmaXgocmVnaW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNmbiA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICBjb25zdCBlbmRwb2ludCA9IGF3YWl0IGdldEVuZHBvaW50RnJvbUluc3RydWN0aW9ucyh7fSwgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQsIHsgLi4uY2ZuLmNvbmZpZyB9KTtcbiAgICByZXR1cm4gZW5kcG9pbnQudXJsLmhvc3RuYW1lLnNwbGl0KGAke3JlZ2lvbn0uYCkucG9wKCkhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGN1cnJlbnRBY2NvdW50KCk6IFByb21pc2U8QWNjb3VudD4ge1xuICAgIHJldHVybiBjYWNoZWRBc3luYyh0aGlzLCBDVVJSRU5UX0FDQ09VTlRfS0VZLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjcmVkcyA9IGF3YWl0IHRoaXMuY3JlZFByb3ZpZGVyKCk7XG4gICAgICByZXR1cm4gdGhpcy5hY2NvdW50Q2FjaGUuZmV0Y2goY3JlZHMuYWNjZXNzS2V5SWQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBvbmUsIHJlc29sdmUgZnJvbSBTVFMgYW5kIHN0b3JlIGluIGNhY2hlLlxuICAgICAgICBhd2FpdCB0aGlzLmRlYnVnKCdMb29raW5nIHVwIGRlZmF1bHQgYWNjb3VudCBJRCBmcm9tIFNUUycpO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgICByZXRyeVN0cmF0ZWd5OiB0aGlzLnN0c1JldHJ5U3RyYXRlZ3ksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7fSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZW5kKGNvbW1hbmQpO1xuICAgICAgICBjb25zdCBhY2NvdW50SWQgPSByZXN1bHQuQWNjb3VudDtcbiAgICAgICAgY29uc3QgcGFydGl0aW9uID0gcmVzdWx0LkFybiEuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgaWYgKCFhY2NvdW50SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihcIlNUUyBkaWRuJ3QgcmV0dXJuIGFuIGFjY291bnQgSURcIik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kZWJ1ZyhgRGVmYXVsdCBhY2NvdW50IElEOiAke2FjY291bnRJZH1gKTtcblxuICAgICAgICAvLyBTYXZlIGFub3RoZXIgU1RTIGNhbGwgbGF0ZXIgaWYgdGhpcyBvbmUgYWxyZWFkeSBzdWNjZWVkZWRcbiAgICAgICAgdGhpcy5fY3JlZGVudGlhbHNWYWxpZGF0ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4geyBhY2NvdW50SWQsIHBhcnRpdGlvbiB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBzdXJlIHRoZSB0aGUgY3VycmVudCBjcmVkZW50aWFscyBhcmUgbm90IGV4cGlyZWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNyZWRlbnRpYWxzKCkge1xuICAgIGlmICh0aGlzLl9jcmVkZW50aWFsc1ZhbGlkYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTVFNDbGllbnQoeyAuLi50aGlzLmNvbmZpZywgcmV0cnlTdHJhdGVneTogdGhpcy5zdHNSZXRyeVN0cmF0ZWd5IH0pO1xuICAgIGF3YWl0IGNsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcbiAgICB0aGlzLl9jcmVkZW50aWFsc1ZhbGlkYXRlZCA9IHRydWU7XG4gIH1cbn1cblxuY29uc3QgQ1VSUkVOVF9BQ0NPVU5UX0tFWSA9IFN5bWJvbCgnY3VycmVudF9hY2NvdW50X2tleScpO1xuIl19
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQWVBLDREQVFpQztBQU9qQyxzRUFJc0M7QUEwRHRDLDBFQThCd0M7QUFPeEMsNEVBSXlDO0FBQ3pDLGdFQUttQztBQUNuQyxvREE2QjZCO0FBcUI3QixvREFXNkI7QUFVN0Isb0RBTTZCO0FBVzdCLGdHQU9tRDtBQUNuRCxvREFXNkI7QUFDN0Isb0RBUTZCO0FBQzdCLDBEQWtCZ0M7QUFDaEMsOERBV2tDO0FBcUJsQyxrREFVNEI7QUFDNUIsNEVBS3lDO0FBS3pDLG9EQUc2QjtBQUM3QixvREFLNkI7QUFDN0Isb0RBQTBFO0FBQzFFLHNEQUE4QztBQUM5QyxxRUFBMEU7QUFFMUUsbURBQTZEO0FBRTdELG1EQUF3RDtBQUN4RCxxQ0FBdUM7QUFHdkMsdUNBQStDO0FBQy9DLDZDQUFtRDtBQUNuRCwrREFBa0U7QUFDbEUscUNBQWdEO0FBQ2hELDJDQUFrRDtBQTJNbEQ7O0dBRUc7QUFFSSxJQUFNLEdBQUcsR0FBVCxNQUFNLEdBQUc7SUE2Qks7SUE1QkgsYUFBYSxDQUFTO0lBRXRCLE1BQU0sQ0FBdUI7SUFFMUIsTUFBTSxDQUFjO0lBRXRCLFlBQVksQ0FBQztJQUU5Qjs7T0FFRztJQUNjLGdCQUFnQixHQUFHLElBQUksb0NBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV0Rzs7Ozs7O09BTUc7SUFDSyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFdEM7O09BRUc7SUFDYyxLQUFLLENBQWlDO0lBRXZELFlBQ21CLFlBQStDLEVBQ2hFLE1BQWMsRUFDZCxjQUFzQyxFQUN0QyxRQUFrQixFQUNsQixNQUFtQjtRQUpGLGlCQUFZLEdBQVosWUFBWSxDQUFtQztRQU1oRSxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUs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NUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNmLE1BQU0sSUFBSSxtQ0FBbUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFFckQsNERBQTREO2dCQUM1RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdkYsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7Q0FDRixDQUFBO0FBMWVZLGtCQUFHO2NBQUgsR0FBRztJQURmLDRCQUFrQjtHQUNOLEdBQUcsQ0EwZWY7QUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTREt2M0NvbXBhdGlibGVDcmVkZW50aWFsUHJvdmlkZXIgfSBmcm9tICdAYXdzLWNkay9jbGktcGx1Z2luLWNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHtcbiAgRnVuY3Rpb25Db25maWd1cmF0aW9uLFxuICBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgR2V0U2NoZW1hQ3JlYXRpb25TdGF0dXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0LFxuICBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0LFxuICBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0LFxuICBVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVSZXNvbHZlckNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlUmVzb2x2ZXJDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXBwc3luYyc7XG5pbXBvcnQge1xuICBBcHBTeW5jQ2xpZW50LFxuICBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmQsXG4gIHBhZ2luYXRlTGlzdEZ1bmN0aW9ucyxcbiAgU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZUFwaUtleUNvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgVXBkYXRlUmVzb2x2ZXJDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXBwc3luYyc7XG5pbXBvcnQgdHlwZSB7XG4gIEdldFJlc291cmNlQ29tbWFuZElucHV0LFxuICBHZXRSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIExpc3RSZXNvdXJjZXNDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRjb250cm9sJztcbmltcG9ydCB7XG4gIENsb3VkQ29udHJvbENsaWVudCxcbiAgR2V0UmVzb3VyY2VDb21tYW5kLFxuICBMaXN0UmVzb3VyY2VzQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkY29udHJvbCc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kSW5wdXQsXG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdGFja3NDb21tYW5kSW5wdXQsXG4gIExpc3RTdGFja3NDb21tYW5kT3V0cHV0LFxuICBSb2xsYmFja1N0YWNrQ29tbWFuZElucHV0LFxuICBSb2xsYmFja1N0YWNrQ29tbWFuZE91dHB1dCxcbiAgU3RhY2tSZXNvdXJjZVN1bW1hcnksXG4gIENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVN0YWNrQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0LFxuICBEZWxldGVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVTdGFja0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlU3RhY2tDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQsXG4gIERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlU3RhY2tzQ29tbWFuZE91dHB1dCxcbiAgRXhlY3V0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCxcbiAgRXhlY3V0ZUNoYW5nZVNldENvbW1hbmRPdXRwdXQsXG4gIEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gIEdldFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICBHZXRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gIEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCxcbiAgR2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZE91dHB1dCxcbiAgTGlzdEV4cG9ydHNDb21tYW5kSW5wdXQsXG4gIExpc3RFeHBvcnRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0LFxuICBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQsXG4gIFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU3RhY2tDb21tYW5kSW5wdXQsXG4gIFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZElucHV0LFxuICBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kT3V0cHV0LFxuICBTdGFja1N1bW1hcnksXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQge1xuICBwYWdpbmF0ZUxpc3RTdGFja3MsXG4gIENsb3VkRm9ybWF0aW9uQ2xpZW50LFxuICBDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZCxcbiAgQ3JlYXRlQ2hhbmdlU2V0Q29tbWFuZCxcbiAgQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kLFxuICBDcmVhdGVTdGFja0NvbW1hbmQsXG4gIERlbGV0ZUNoYW5nZVNldENvbW1hbmQsXG4gIERlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZCxcbiAgRGVsZXRlU3RhY2tDb21tYW5kLFxuICBEZXNjcmliZUNoYW5nZVNldENvbW1hbmQsXG4gIERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kLFxuICBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kLFxuICBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kLFxuICBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZCxcbiAgR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kLFxuICBHZXRUZW1wbGF0ZUNvbW1hbmQsXG4gIEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmQsXG4gIExpc3RFeHBvcnRzQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kLFxuICBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kLFxuICBMaXN0U3RhY2tzQ29tbWFuZCxcbiAgcGFnaW5hdGVMaXN0U3RhY2tSZXNvdXJjZXMsXG4gIFJvbGxiYWNrU3RhY2tDb21tYW5kLFxuICBTdGFydFJlc291cmNlU2NhbkNvbW1hbmQsXG4gIFVwZGF0ZVN0YWNrQ29tbWFuZCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHtcbiAgRmlsdGVyTG9nRXZlbnRzQ29tbWFuZElucHV0LFxuICBGaWx0ZXJMb2dFdmVudHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWR3YXRjaC1sb2dzJztcbmltcG9ydCB7XG4gIENsb3VkV2F0Y2hMb2dzQ2xpZW50LFxuICBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmQsXG4gIEZpbHRlckxvZ0V2ZW50c0NvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZHdhdGNoLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQ29kZUJ1aWxkQ2xpZW50LFxuICBVcGRhdGVQcm9qZWN0Q29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVByb2plY3RDb21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY29kZWJ1aWxkJztcbmltcG9ydCB7XG4gIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW1hZ2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlU2VjdXJpdHlHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlU3VibmV0c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVTdWJuZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlU3VibmV0c0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRPdXRwdXQsXG4gIEVDMkNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjMic7XG5pbXBvcnQgdHlwZSB7XG4gIEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kSW5wdXQsXG4gIEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kT3V0cHV0LFxuICBMaXN0SW1hZ2VzQ29tbWFuZElucHV0LFxuICBMaXN0SW1hZ2VzQ29tbWFuZE91dHB1dCxcbiAgUHV0SW1hZ2VDb21tYW5kSW5wdXQsXG4gIFB1dEltYWdlQ29tbWFuZE91dHB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCBhcyBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0IGFzIEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dCxcbiAgR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0LFxuICBHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0LFxuICBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNyJztcbmltcG9ydCB7XG4gIEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kLFxuICBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZCxcbiAgRGVzY3JpYmVJbWFnZXNDb21tYW5kIGFzIEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kLFxuICBFQ1JDbGllbnQsXG4gIEdldEF1dGhvcml6YXRpb25Ub2tlbkNvbW1hbmQsXG4gIExpc3RJbWFnZXNDb21tYW5kLFxuICBQdXRJbWFnZUNvbW1hbmQsXG4gIFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgQmF0Y2hHZXRJbWFnZUNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3InO1xuaW1wb3J0IHR5cGUge1xuICBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0LFxuICBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZElucHV0LFxuICBMaXN0Q2x1c3RlcnNDb21tYW5kSW5wdXQsXG4gIExpc3RDbHVzdGVyc0NvbW1hbmRPdXRwdXQsXG4gIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVTZXJ2aWNlQ29tbWFuZElucHV0LFxuICBVcGRhdGVTZXJ2aWNlQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjcyc7XG5pbXBvcnQge1xuICBFQ1NDbGllbnQsXG4gIExpc3RDbHVzdGVyc0NvbW1hbmQsXG4gIFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kLFxuICBVcGRhdGVTZXJ2aWNlQ29tbWFuZCxcbiAgd2FpdFVudGlsU2VydmljZXNTdGFibGUsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3MnO1xuaW1wb3J0IHR5cGUge1xuICBMaXN0ZW5lcixcbiAgTG9hZEJhbGFuY2VyLFxuICBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQsXG4gIERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVGFnc0NvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVUYWdzQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVsYXN0aWMtbG9hZC1iYWxhbmNpbmctdjInO1xuaW1wb3J0IHtcbiAgRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kLFxuICBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kLFxuICBEZXNjcmliZVRhZ3NDb21tYW5kLFxuICBFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50LFxuICBwYWdpbmF0ZURlc2NyaWJlTGlzdGVuZXJzLFxuICBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2Vycyxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVsYXN0aWMtbG9hZC1iYWxhbmNpbmctdjInO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUG9saWN5Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0Um9sZUNvbW1hbmQsXG4gIHR5cGUgR2V0Um9sZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRSb2xlQ29tbWFuZE91dHB1dCxcbiAgSUFNQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtaWFtJztcbmltcG9ydCB7XG4gIERlc2NyaWJlS2V5Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUtleUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQsXG4gIEtNU0NsaWVudCxcbiAgTGlzdEFsaWFzZXNDb21tYW5kLFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWttcyc7XG5pbXBvcnQge1xuICBJbnZva2VDb21tYW5kLFxuICB0eXBlIEludm9rZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VDb21tYW5kT3V0cHV0LFxuICBMYW1iZGFDbGllbnQsXG4gIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIHdhaXRVbnRpbEZ1bmN0aW9uVXBkYXRlZFYyLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtbGFtYmRhJztcbmltcG9ydCB7XG4gIEdldEhvc3RlZFpvbmVDb21tYW5kLFxuICB0eXBlIEdldEhvc3RlZFpvbmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0SG9zdGVkWm9uZUNvbW1hbmRPdXRwdXQsXG4gIExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQnlOYW1lQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRPdXRwdXQsXG4gIExpc3RIb3N0ZWRab25lc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEhvc3RlZFpvbmVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RIb3N0ZWRab25lc0NvbW1hbmRPdXRwdXQsXG4gIFJvdXRlNTNDbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1yb3V0ZS01Myc7XG5pbXBvcnQgdHlwZSB7XG4gIERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQsXG4gIExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQge1xuICBEZWxldGVPYmplY3RzQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIFMzQ2xpZW50LFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHtcbiAgR2V0U2VjcmV0VmFsdWVDb21tYW5kLFxuICB0eXBlIEdldFNlY3JldFZhbHVlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dCxcbiAgU2VjcmV0c01hbmFnZXJDbGllbnQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQsXG4gIFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZm4nO1xuaW1wb3J0IHtcbiAgU0ZOQ2xpZW50LFxuICBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2ZuJztcbmltcG9ydCB7XG4gIEdldFBhcmFtZXRlckNvbW1hbmQsXG4gIHR5cGUgR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQsXG4gIFNTTUNsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG5pbXBvcnQgeyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQsIFNUU0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSAnQGF3cy1zZGsvbGliLXN0b3JhZ2UnO1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zIH0gZnJvbSAnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50JztcbmltcG9ydCB0eXBlIHsgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvbm9kZS1odHRwLWhhbmRsZXInO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuaW1wb3J0IHR5cGUgeyBXYWl0ZXJSZXN1bHQgfSBmcm9tICdAc21pdGh5L3V0aWwtd2FpdGVyJztcbmltcG9ydCB7IEFjY291bnRBY2Nlc3NLZXlDYWNoZSB9IGZyb20gJy4vYWNjb3VudC1jYWNoZSc7XG5pbXBvcnQgeyBjYWNoZWRBc3luYyB9IGZyb20gJy4vY2FjaGVkJztcbmltcG9ydCB0eXBlIHsgSVNka0xvZ2dlciB9IGZyb20gJy4vc2RrLWxvZ2dlcic7XG5pbXBvcnQgdHlwZSB7IEFjY291bnQgfSBmcm9tICcuL3Nkay1wcm92aWRlcic7XG5pbXBvcnQgeyB0cmFjZU1lbWJlck1ldGhvZHMgfSBmcm9tICcuL3RyYWNpbmcnO1xuaW1wb3J0IHsgZGVmYXVsdENsaVVzZXJBZ2VudCB9IGZyb20gJy4vdXNlci1hZ2VudCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgSU8sIHR5cGUgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuZXhwb3J0IGludGVyZmFjZSBTM0NsaWVudE9wdGlvbnMge1xuICAvKipcbiAgICogSWYgQVBJcyBhcmUgdXNlZCB0aGF0IHJlcXVpcmUgTUQ1IGNoZWNrc3Vtcy5cbiAgICpcbiAgICogU29tZSBTMyBBUElzIGluIFNES3YyIGhhdmUgYSBidWcgdGhhdCBhbHdheXMgcmVxdWlyZXMgdGhlbSB0byB1c2UgYSBNRDUgY2hlY2tzdW0uXG4gICAqIFRoZXNlIEFQSXMgYXJlIG5vdCBnb2luZyB0byBiZSBzdXBwb3J0ZWQgaW4gYSBGSVBTIGVudmlyb25tZW50LlxuICAgKi9cbiAgbmVlZHNNZDVDaGVja3N1bXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFkZGl0aW9uYWwgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka09wdGlvbnMge1xuICAvKipcbiAgICogQWRkaXRpb25hbCBkZXNjcmlwdGl2ZSBzdHJpbmdzIHRoYXQgaW5kaWNhdGUgd2hlcmUgdGhlIFwiQXNzdW1lUm9sZVwiIGNyZWRlbnRpYWxzIGFyZSBjb21pbmcgZnJvbVxuICAgKlxuICAgKiBXaWxsIGJlIHByaW50ZWQgaW4gYW4gZXJyb3IgbWVzc2FnZSB0byBoZWxwIHVzZXJzIGRpYWdub3NlIGF1dGggcHJvYmxlbXMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQ3JlZGVudGlhbHNTb3VyY2VEZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLy8gVE9ETzogc3RpbGwgc29tZSBjbGVhbnVwIGhlcmUuIE1ha2UgdGhlIHBhZ2luYXRpb24gZnVuY3Rpb25zIGRvIGFsbCB0aGUgd29yayBoZXJlIGluc3RlYWQgb2YgaW4gaW5kaXZpZHVhbCBwYWNrYWdlcy5cbi8vIEFsc28gYWRkIGFzeW5jL2F3YWl0LiBEb2VzIHRoYXQgYWN0dWFsbHkgbWF0dGVyIGluIHRoaXMgY29udGV4dD8gRmluZCBvdXQgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cblxuLy8gQWxzbyBhZGQgbm90ZXMgdG8gdGhlIFBSIGFib3V0IHdoeSB5b3UgaW1wb3J0ZWQgZXZlcnl0aGluZyBpbmRpdmlkdWFsbHkgYW5kIHVzZWQgJ3R5cGUnIHNvIHJldmlld2VycyBkb24ndCBoYXZlIHRvIGFzay5cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBjcmVkZW50aWFsczogU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbFByb3ZpZGVyO1xuICByZXF1ZXN0SGFuZGxlcjogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucztcbiAgcmV0cnlTdHJhdGVneTogQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3k7XG4gIGN1c3RvbVVzZXJBZ2VudDogc3RyaW5nO1xuICBsb2dnZXI/OiBJU2RrTG9nZ2VyO1xuICBzM0Rpc2FibGVCb2R5U2lnbmluZz86IGJvb2xlYW47XG4gIGNvbXB1dGVDaGVja3N1bXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBTeW5jQ2xpZW50IHtcbiAgZ2V0U2NoZW1hQ3JlYXRpb25TdGF0dXMoaW5wdXQ6IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQ+O1xuICBzdGFydFNjaGVtYUNyZWF0aW9uKGlucHV0OiBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUFwaUtleShpbnB1dDogVXBkYXRlQXBpS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVBcGlLZXlDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlRnVuY3Rpb24oaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVSZXNvbHZlcihpbnB1dDogVXBkYXRlUmVzb2x2ZXJDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVJlc29sdmVyQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb24gZnVuY3Rpb25zXG4gIGxpc3RGdW5jdGlvbnMoaW5wdXQ6IExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZ1bmN0aW9uQ29uZmlndXJhdGlvbltdPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRDb250cm9sQ2xpZW50IHtcbiAgbGlzdFJlc291cmNlcyhpbnB1dDogTGlzdFJlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFJlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBnZXRSZXNvdXJjZShpbnB1dDogR2V0UmVzb3VyY2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJlc291cmNlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgY29udGludWVVcGRhdGVSb2xsYmFjayhpbnB1dDogQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmRPdXRwdXQ+O1xuICBjcmVhdGVDaGFuZ2VTZXQoaW5wdXQ6IENyZWF0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBDcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8Q3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgY3JlYXRlU3RhY2soaW5wdXQ6IENyZWF0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZWxldGVDaGFuZ2VTZXQoaW5wdXQ6IERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlU3RhY2soaW5wdXQ6IERlbGV0ZVN0YWNrQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVTdGFja0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUNoYW5nZVNldChpbnB1dDogRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGUoXG4gICAgaW5wdXQ6IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8RGVzY3JpYmVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlc291cmNlU2NhbihpbnB1dDogRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlU3RhY2tzKGlucHV0OiBEZXNjcmliZVN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTdGFja1Jlc291cmNlcyhpbnB1dDogRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBleGVjdXRlQ2hhbmdlU2V0KGlucHV0OiBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZElucHV0KTogUHJvbWlzZTxFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD47XG4gIGdldEdlbmVyYXRlZFRlbXBsYXRlKGlucHV0OiBHZXRHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PjtcbiAgZ2V0VGVtcGxhdGUoaW5wdXQ6IEdldFRlbXBsYXRlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRUZW1wbGF0ZUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRUZW1wbGF0ZVN1bW1hcnkoaW5wdXQ6IEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZE91dHB1dD47XG4gIGxpc3RFeHBvcnRzKGlucHV0OiBMaXN0RXhwb3J0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEV4cG9ydHNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPExpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXMoXG4gICAgaW5wdXQ6IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlc291cmNlc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0UmVzb3VyY2VTY2FucyhpbnB1dD86IExpc3RSZXNvdXJjZVNjYW5zQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRPdXRwdXQ+O1xuICBsaXN0U3RhY2tzKGlucHV0OiBMaXN0U3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0U3RhY2tzQ29tbWFuZE91dHB1dD47XG4gIHJvbGxiYWNrU3RhY2soaW5wdXQ6IFJvbGxiYWNrU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFJvbGxiYWNrU3RhY2tDb21tYW5kT3V0cHV0PjtcbiAgc3RhcnRSZXNvdXJjZVNjYW4oaW5wdXQ6IFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFydFJlc291cmNlU2NhbkNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVTdGFjayhpbnB1dDogVXBkYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbihcbiAgICBpbnB1dDogVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRPdXRwdXQ+O1xuICAvLyBQYWdpbmF0aW9uIGZ1bmN0aW9uc1xuICBkZXNjcmliZVN0YWNrRXZlbnRzKGlucHV0OiBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZE91dHB1dD47XG4gIGxpc3RTdGFja1Jlc291cmNlcyhpbnB1dDogTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFja1Jlc291cmNlU3VtbWFyeVtdPjtcbiAgcGFnaW5hdGVkTGlzdFN0YWNrcyhpbnB1dDogTGlzdFN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhY2tTdW1tYXJ5W10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDbG91ZFdhdGNoTG9nc0NsaWVudCB7XG4gIGRlc2NyaWJlTG9nR3JvdXBzKGlucHV0OiBEZXNjcmliZUxvZ0dyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMb2dHcm91cHNDb21tYW5kT3V0cHV0PjtcbiAgZmlsdGVyTG9nRXZlbnRzKGlucHV0OiBGaWx0ZXJMb2dFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2RlQnVpbGRDbGllbnQge1xuICB1cGRhdGVQcm9qZWN0KGlucHV0OiBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dD47XG59XG5leHBvcnQgaW50ZXJmYWNlIElFQzJDbGllbnQge1xuICBkZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzKFxuICAgIGlucHV0OiBEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IERlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZUluc3RhbmNlcyhpbnB1dDogRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlUm91dGVUYWJsZXMoaW5wdXQ6IERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUm91dGVUYWJsZXNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVTZWN1cml0eUdyb3VwcyhpbnB1dDogRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVN1Ym5ldHMoaW5wdXQ6IERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdWJuZXRzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlcyhcbiAgICBpbnB1dDogRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICApOiBQcm9taXNlPERlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVZwY3MoaW5wdXQ6IERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcGNzQ29tbWFuZE91dHB1dD47XG4gIGRlc2NyaWJlVnBuR2F0ZXdheXMoaW5wdXQ6IERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlVnBuR2F0ZXdheXNDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRUNSQ2xpZW50IHtcbiAgYmF0Y2hEZWxldGVJbWFnZShpbnB1dDogQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hEZWxldGVJbWFnZUNvbW1hbmRPdXRwdXQ+O1xuICBiYXRjaEdldEltYWdlKGlucHV0OiBCYXRjaEdldEltYWdlQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaEdldEltYWdlQ29tbWFuZE91dHB1dD47XG4gIGNyZWF0ZVJlcG9zaXRvcnkoaW5wdXQ6IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVJbWFnZXMoaW5wdXQ6IEVDUkRlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVJlcG9zaXRvcmllcyhpbnB1dDogRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlUmVwb3NpdG9yaWVzQ29tbWFuZE91dHB1dD47XG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbihpbnB1dDogR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0PjtcbiAgbGlzdEltYWdlcyhpbnB1dDogTGlzdEltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEltYWdlc0NvbW1hbmRPdXRwdXQ+O1xuICBwdXRJbWFnZShpbnB1dDogUHV0SW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dEltYWdlQ29tbWFuZE91dHB1dD47XG4gIHB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uKFxuICAgIGlucHV0OiBQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxQdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFQ1NDbGllbnQge1xuICBsaXN0Q2x1c3RlcnMoaW5wdXQ6IExpc3RDbHVzdGVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdENsdXN0ZXJzQ29tbWFuZE91dHB1dD47XG4gIHJlZ2lzdGVyVGFza0RlZmluaXRpb24oaW5wdXQ6IFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFJlZ2lzdGVyVGFza0RlZmluaXRpb25Db21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlU2VydmljZShpbnB1dDogVXBkYXRlU2VydmljZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlU2VydmljZUNvbW1hbmRPdXRwdXQ+O1xuICAvLyBXYWl0ZXJzXG4gIHdhaXRVbnRpbFNlcnZpY2VzU3RhYmxlKGlucHV0OiBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0LCB0aW1lb3V0U2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8V2FpdGVyUmVzdWx0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCB7XG4gIGRlc2NyaWJlTGlzdGVuZXJzKGlucHV0OiBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kT3V0cHV0PjtcbiAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQ+O1xuICBkZXNjcmliZVRhZ3MoaW5wdXQ6IERlc2NyaWJlVGFnc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVUYWdzQ29tbWFuZE91dHB1dD47XG4gIC8vIFBhZ2luYXRpb25cbiAgcGFnaW5hdGVEZXNjcmliZUxpc3RlbmVycyhpbnB1dDogRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RlbmVyW10+O1xuICBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2VycyhpbnB1dDogRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMb2FkQmFsYW5jZXJbXT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUlBTUNsaWVudCB7XG4gIGNyZWF0ZVBvbGljeShpbnB1dDogQ3JlYXRlUG9saWN5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVQb2xpY3lDb21tYW5kT3V0cHV0PjtcbiAgZ2V0UG9saWN5KGlucHV0OiBHZXRQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFBvbGljeUNvbW1hbmRPdXRwdXQ+O1xuICBnZXRSb2xlKGlucHV0OiBHZXRSb2xlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRSb2xlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUtNU0NsaWVudCB7XG4gIGRlc2NyaWJlS2V5KGlucHV0OiBEZXNjcmliZUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVLZXlDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEFsaWFzZXMoaW5wdXQ6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYW1iZGFDbGllbnQge1xuICBpbnZva2VDb21tYW5kKGlucHV0OiBJbnZva2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEludm9rZUNvbW1hbmRPdXRwdXQ+O1xuICBwdWJsaXNoVmVyc2lvbihpbnB1dDogUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dD47XG4gIHVwZGF0ZUFsaWFzKGlucHV0OiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0PjtcbiAgdXBkYXRlRnVuY3Rpb25Db2RlKGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQ+O1xuICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgKTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0PjtcbiAgLy8gV2FpdGVyc1xuICB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQoZGVsYXlTZWNvbmRzOiBudW1iZXIsIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPFdhaXRlclJlc3VsdD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlNTNDbGllbnQge1xuICBnZXRIb3N0ZWRab25lKGlucHV0OiBHZXRIb3N0ZWRab25lQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRIb3N0ZWRab25lQ29tbWFuZE91dHB1dD47XG4gIGxpc3RIb3N0ZWRab25lcyhpbnB1dDogTGlzdEhvc3RlZFpvbmVzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SG9zdGVkWm9uZXNDb21tYW5kT3V0cHV0PjtcbiAgbGlzdEhvc3RlZFpvbmVzQnlOYW1lKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRPdXRwdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTM0NsaWVudCB7XG4gIGRlbGV0ZU9iamVjdHMoaW5wdXQ6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PjtcbiAgZGVsZXRlT2JqZWN0VGFnZ2luZyhpbnB1dDogRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+O1xuICBnZXRCdWNrZXRFbmNyeXB0aW9uKGlucHV0OiBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dD47XG4gIGdldEJ1Y2tldExvY2F0aW9uKGlucHV0OiBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QnVja2V0TG9jYXRpb25Db21tYW5kT3V0cHV0PjtcbiAgZ2V0T2JqZWN0KGlucHV0OiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+O1xuICBnZXRPYmplY3RUYWdnaW5nKGlucHV0OiBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dD47XG4gIGxpc3RPYmplY3RzVjIoaW5wdXQ6IExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0PjtcbiAgcHV0T2JqZWN0VGFnZ2luZyhpbnB1dDogUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+O1xuICB1cGxvYWQoaW5wdXQ6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VjcmV0c01hbmFnZXJDbGllbnQge1xuICBnZXRTZWNyZXRWYWx1ZShpbnB1dDogR2V0U2VjcmV0VmFsdWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNTTUNsaWVudCB7XG4gIGdldFBhcmFtZXRlcihpbnB1dDogR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3RlcEZ1bmN0aW9uc0NsaWVudCB7XG4gIHVwZGF0ZVN0YXRlTWFjaGluZShpbnB1dDogVXBkYXRlU3RhdGVNYWNoaW5lQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kT3V0cHV0Pjtcbn1cblxuLyoqXG4gKiBCYXNlIGZ1bmN0aW9uYWxpdHkgb2YgU0RLIHdpdGhvdXQgY3JlZGVudGlhbCBmZXRjaGluZ1xuICovXG5AdHJhY2VNZW1iZXJNZXRob2RzXG5leHBvcnQgY2xhc3MgU0RLIHtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRSZWdpb246IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uT3B0aW9ucztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nZ2VyPzogSVNka0xvZ2dlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjY291bnRDYWNoZTtcblxuICAvKipcbiAgICogU1RTIGlzIHVzZWQgdG8gY2hlY2sgY3JlZGVudGlhbCB2YWxpZGl0eSwgZG9uJ3QgZG8gdG9vIG1hbnkgcmV0cmllcy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RzUmV0cnlTdHJhdGVneSA9IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSgzLCAoYXR0ZW1wdCkgPT4gMTAwICogKDIgKiogYXR0ZW1wdCkpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIGhhdmUgcHJvb2YgdGhhdCB0aGUgY3JlZGVudGlhbHMgaGF2ZSBub3QgZXhwaXJlZFxuICAgKlxuICAgKiBXZSBuZWVkIHRvIGRvIHNvbWUgbWFudWFsIHBsdW1iaW5nIGFyb3VuZCB0aGlzIGJlY2F1c2UgdGhlIEpTIFNES3YyIHRyZWF0cyBgRXhwaXJlZFRva2VuYFxuICAgKiBhcyByZXRyaWFibGUgYW5kIHdlIGhhdmUgaGVmdHkgcmV0cmllcyBvbiBDRk4gY2FsbHMgbWFraW5nIHRoZSBDTEkgaGFuZyBmb3IgYSBnb29kIDE1IG1pbnV0ZXNcbiAgICogaWYgdGhlIGNyZWRlbnRpYWxzIGhhdmUgZXhwaXJlZC5cbiAgICovXG4gIHByaXZhdGUgX2NyZWRlbnRpYWxzVmFsaWRhdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gY3JlYXRlIGRlYnVnIG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnOiAobXNnOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkUHJvdmlkZXI6IFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlcixcbiAgICByZWdpb246IHN0cmluZyxcbiAgICByZXF1ZXN0SGFuZGxlcjogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gICAgbG9nZ2VyPzogSVNka0xvZ2dlcixcbiAgKSB7XG4gICAgY29uc3QgZGVidWdGbiA9IGFzeW5jIChtc2c6IHN0cmluZykgPT4gaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfU0RLX0RFQlVHLm1zZyhtc2cpKTtcbiAgICB0aGlzLmFjY291bnRDYWNoZSA9IG5ldyBBY2NvdW50QWNjZXNzS2V5Q2FjaGUoQWNjb3VudEFjY2Vzc0tleUNhY2hlLkRFRkFVTFRfUEFUSCwgZGVidWdGbik7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnRm47XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICByZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogY3JlZFByb3ZpZGVyLFxuICAgICAgcmVxdWVzdEhhbmRsZXIsXG4gICAgICByZXRyeVN0cmF0ZWd5OiBuZXcgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3koNywgKGF0dGVtcHQpID0+IDMwMCAqICgyICoqIGF0dGVtcHQpKSxcbiAgICAgIGN1c3RvbVVzZXJBZ2VudDogZGVmYXVsdENsaVVzZXJBZ2VudCgpLFxuICAgICAgbG9nZ2VyLFxuICAgIH07XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jdXJyZW50UmVnaW9uID0gcmVnaW9uO1xuICB9XG5cbiAgcHVibGljIGFwcGVuZEN1c3RvbVVzZXJBZ2VudCh1c2VyQWdlbnREYXRhPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1c2VyQWdlbnREYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudEN1c3RvbVVzZXJBZ2VudCA9IHRoaXMuY29uZmlnLmN1c3RvbVVzZXJBZ2VudDtcbiAgICB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQgPSBjdXJyZW50Q3VzdG9tVXNlckFnZW50ID8gYCR7Y3VycmVudEN1c3RvbVVzZXJBZ2VudH0gJHt1c2VyQWdlbnREYXRhfWAgOiB1c2VyQWdlbnREYXRhO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUN1c3RvbVVzZXJBZ2VudCh1c2VyQWdlbnREYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQgPSB0aGlzLmNvbmZpZy5jdXN0b21Vc2VyQWdlbnQ/LnJlcGxhY2UodXNlckFnZW50RGF0YSwgJycpO1xuICB9XG5cbiAgcHVibGljIGFwcHN5bmMoKTogSUFwcFN5bmNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBBcHBTeW5jQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0U2NoZW1hQ3JlYXRpb25TdGF0dXM6IChcbiAgICAgICAgaW5wdXQ6IEdldFNjaGVtYUNyZWF0aW9uU3RhdHVzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBHZXRTY2hlbWFDcmVhdGlvblN0YXR1c0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHN0YXJ0U2NoZW1hQ3JlYXRpb246IChpbnB1dDogU3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8U3RhcnRTY2hlbWFDcmVhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBTdGFydFNjaGVtYUNyZWF0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlQXBpS2V5OiAoaW5wdXQ6IFVwZGF0ZUFwaUtleUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQXBpS2V5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZUFwaUtleUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZUZ1bmN0aW9uOiAoaW5wdXQ6IFVwZGF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHVwZGF0ZVJlc29sdmVyOiAoaW5wdXQ6IFVwZGF0ZVJlc29sdmVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVSZXNvbHZlckNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVSZXNvbHZlckNvbW1hbmQoaW5wdXQpKSxcblxuICAgICAgLy8gUGFnaW5hdGlvbiBGdW5jdGlvbnNcbiAgICAgIGxpc3RGdW5jdGlvbnM6IGFzeW5jIChpbnB1dDogTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RnVuY3Rpb25Db25maWd1cmF0aW9uW10+ID0+IHtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25zID0gQXJyYXk8RnVuY3Rpb25Db25maWd1cmF0aW9uPigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZUxpc3RGdW5jdGlvbnMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goLi4uKHBhZ2UuZnVuY3Rpb25zIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbG91ZENvbnRyb2woKTogSUNsb3VkQ29udHJvbENsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkQ29udHJvbENsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpc3RSZXNvdXJjZXM6IChpbnB1dDogTGlzdFJlc291cmNlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFJlc291cmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0UmVzb3VyY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0UmVzb3VyY2U6IChpbnB1dDogR2V0UmVzb3VyY2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFJlc291cmNlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFJlc291cmNlQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY2xvdWRGb3JtYXRpb24oKTogSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoe1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICByZXRyeVN0cmF0ZWd5OiBuZXcgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3koMTEsIChhdHRlbXB0OiBudW1iZXIpID0+IDEwMDAgKiAoMiAqKiBhdHRlbXB0KSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRpbnVlVXBkYXRlUm9sbGJhY2s6IGFzeW5jIChcbiAgICAgICAgaW5wdXQ6IENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGNyZWF0ZUNoYW5nZVNldDogKGlucHV0OiBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZUNoYW5nZVNldENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kKGlucHV0KSksXG4gICAgICBjcmVhdGVHZW5lcmF0ZWRUZW1wbGF0ZTogKFxuICAgICAgICBpbnB1dDogQ3JlYXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IENyZWF0ZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlU3RhY2s6IChpbnB1dDogQ3JlYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVN0YWNrQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZVN0YWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVsZXRlQ2hhbmdlU2V0OiAoaW5wdXQ6IERlbGV0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlQ2hhbmdlU2V0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlbGV0ZUNoYW5nZVNldENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlbGV0ZUdlbmVyYXRlZFRlbXBsYXRlOiAoXG4gICAgICAgIGlucHV0OiBEZWxldGVHZW5lcmF0ZWRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVsZXRlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBkZWxldGVTdGFjazogKGlucHV0OiBEZWxldGVTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlU3RhY2tDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlU3RhY2tDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUNoYW5nZVNldDogKGlucHV0OiBEZXNjcmliZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVDaGFuZ2VTZXRDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlOiAoXG4gICAgICAgIGlucHV0OiBEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZXNjcmliZUdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IERlc2NyaWJlR2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVJlc291cmNlU2NhbjogKGlucHV0OiBEZXNjcmliZVJlc291cmNlU2NhbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVSZXNvdXJjZVNjYW5Db21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVN0YWNrczogKGlucHV0OiBEZXNjcmliZVN0YWNrc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdGFja3NDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVN0YWNrUmVzb3VyY2VzOiAoaW5wdXQ6IERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3RhY2tSZXNvdXJjZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGV4ZWN1dGVDaGFuZ2VTZXQ6IChpbnB1dDogRXhlY3V0ZUNoYW5nZVNldENvbW1hbmRJbnB1dCk6IFByb21pc2U8RXhlY3V0ZUNoYW5nZVNldENvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBFeGVjdXRlQ2hhbmdlU2V0Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0R2VuZXJhdGVkVGVtcGxhdGU6IChpbnB1dDogR2V0R2VuZXJhdGVkVGVtcGxhdGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEdlbmVyYXRlZFRlbXBsYXRlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0VGVtcGxhdGU6IChpbnB1dDogR2V0VGVtcGxhdGVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFRlbXBsYXRlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0VGVtcGxhdGVTdW1tYXJ5OiAoaW5wdXQ6IEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0VGVtcGxhdGVTdW1tYXJ5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFRlbXBsYXRlU3VtbWFyeUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RFeHBvcnRzOiAoaW5wdXQ6IExpc3RFeHBvcnRzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0RXhwb3J0c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0RXhwb3J0c0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RSZXNvdXJjZVNjYW5SZWxhdGVkUmVzb3VyY2VzOiAoXG4gICAgICAgIGlucHV0OiBMaXN0UmVzb3VyY2VTY2FuUmVsYXRlZFJlc291cmNlc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdFJlc291cmNlU2NhblJlbGF0ZWRSZXNvdXJjZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzOiAoXG4gICAgICAgIGlucHV0OiBMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxMaXN0UmVzb3VyY2VTY2FuUmVzb3VyY2VzQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IExpc3RSZXNvdXJjZVNjYW5SZXNvdXJjZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0UmVzb3VyY2VTY2FuczogKGlucHV0OiBMaXN0UmVzb3VyY2VTY2Fuc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdFJlc291cmNlU2NhbnNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdFJlc291cmNlU2NhbnNDb21tYW5kKGlucHV0KSksXG4gICAgICBsaXN0U3RhY2tzOiAoaW5wdXQ6IExpc3RTdGFja3NDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RTdGFja3NDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdFN0YWNrc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIHJvbGxiYWNrU3RhY2s6IChpbnB1dDogUm9sbGJhY2tTdGFja0NvbW1hbmRJbnB1dCk6IFByb21pc2U8Um9sbGJhY2tTdGFja0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBSb2xsYmFja1N0YWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgc3RhcnRSZXNvdXJjZVNjYW46IChpbnB1dDogU3RhcnRSZXNvdXJjZVNjYW5Db21tYW5kSW5wdXQpOiBQcm9taXNlPFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFN0YXJ0UmVzb3VyY2VTY2FuQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlU3RhY2s6IChpbnB1dDogVXBkYXRlU3RhY2tDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YWNrQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVN0YWNrQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uOiAoXG4gICAgICAgIGlucHV0OiBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVN0YWNrRXZlbnRzOiAoaW5wdXQ6IERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kT3V0cHV0PiA9PiB7XG4gICAgICAgIHJldHVybiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmQoaW5wdXQpKTtcbiAgICAgIH0sXG4gICAgICBsaXN0U3RhY2tSZXNvdXJjZXM6IGFzeW5jIChpbnB1dDogTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFja1Jlc291cmNlU3VtbWFyeVtdPiA9PiB7XG4gICAgICAgIGNvbnN0IHN0YWNrUmVzb3VyY2VzID0gQXJyYXk8U3RhY2tSZXNvdXJjZVN1bW1hcnk+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlTGlzdFN0YWNrUmVzb3VyY2VzKHsgY2xpZW50IH0sIGlucHV0KTtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBwYWdlIG9mIHBhZ2luYXRvcikge1xuICAgICAgICAgIHN0YWNrUmVzb3VyY2VzLnB1c2goLi4uKHBhZ2U/LlN0YWNrUmVzb3VyY2VTdW1tYXJpZXMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhY2tSZXNvdXJjZXM7XG4gICAgICB9LFxuICAgICAgcGFnaW5hdGVkTGlzdFN0YWNrczogYXN5bmMgKGlucHV0OiBMaXN0U3RhY2tzQ29tbWFuZElucHV0KTogUHJvbWlzZTxTdGFja1N1bW1hcnlbXT4gPT4ge1xuICAgICAgICBjb25zdCBzdGFja1Jlc291cmNlcyA9IEFycmF5PFN0YWNrU3VtbWFyeT4oKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yID0gcGFnaW5hdGVMaXN0U3RhY2tzKHsgY2xpZW50IH0sIGlucHV0KTtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBwYWdlIG9mIHBhZ2luYXRvcikge1xuICAgICAgICAgIHN0YWNrUmVzb3VyY2VzLnB1c2goLi4uKHBhZ2U/LlN0YWNrU3VtbWFyaWVzIHx8IFtdKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YWNrUmVzb3VyY2VzO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNsb3VkV2F0Y2hMb2dzKCk6IElDbG91ZFdhdGNoTG9nc0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IENsb3VkV2F0Y2hMb2dzQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpYmVMb2dHcm91cHM6IChpbnB1dDogRGVzY3JpYmVMb2dHcm91cHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlTG9nR3JvdXBzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZmlsdGVyTG9nRXZlbnRzOiAoaW5wdXQ6IEZpbHRlckxvZ0V2ZW50c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RmlsdGVyTG9nRXZlbnRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEZpbHRlckxvZ0V2ZW50c0NvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGNvZGVCdWlsZCgpOiBJQ29kZUJ1aWxkQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgQ29kZUJ1aWxkQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlUHJvamVjdDogKGlucHV0OiBVcGRhdGVQcm9qZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVQcm9qZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVByb2plY3RDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlYzIoKTogSUVDMkNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEVDMkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXM6IChcbiAgICAgICAgaW5wdXQ6IERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPERlc2NyaWJlQXZhaWxhYmlsaXR5Wm9uZXNDb21tYW5kT3V0cHV0PiA9PiBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVBdmFpbGFiaWxpdHlab25lc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlSW1hZ2VzOiAoaW5wdXQ6IERlc2NyaWJlSW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUltYWdlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUltYWdlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlSW5zdGFuY2VzOiAoaW5wdXQ6IERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUluc3RhbmNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUluc3RhbmNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlUm91dGVUYWJsZXM6IChpbnB1dDogRGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSb3V0ZVRhYmxlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVJvdXRlVGFibGVzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTZWN1cml0eUdyb3VwczogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8RGVzY3JpYmVTZWN1cml0eUdyb3Vwc0NvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVNlY3VyaXR5R3JvdXBzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVTdWJuZXRzOiAoaW5wdXQ6IERlc2NyaWJlU3VibmV0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVTdWJuZXRzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlU3VibmV0c0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVnBjRW5kcG9pbnRTZXJ2aWNlczogKFxuICAgICAgICBpbnB1dDogRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZElucHV0LFxuICAgICAgKTogUHJvbWlzZTxEZXNjcmliZVZwY0VuZHBvaW50U2VydmljZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVWcGNFbmRwb2ludFNlcnZpY2VzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZGVzY3JpYmVWcGNzOiAoaW5wdXQ6IERlc2NyaWJlVnBjc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcGNzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IERlc2NyaWJlVnBjc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlVnBuR2F0ZXdheXM6IChpbnB1dDogRGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVWcG5HYXRld2F5c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZVZwbkdhdGV3YXlzQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWNyKCk6IElFQ1JDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFQ1JDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBiYXRjaERlbGV0ZUltYWdlOiAoaW5wdXQ6IEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoRGVsZXRlSW1hZ2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgQmF0Y2hEZWxldGVJbWFnZUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGJhdGNoR2V0SW1hZ2U6IChpbnB1dDogQmF0Y2hHZXRJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hHZXRJbWFnZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBCYXRjaEdldEltYWdlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgY3JlYXRlUmVwb3NpdG9yeTogKGlucHV0OiBDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZElucHV0KTogUHJvbWlzZTxDcmVhdGVSZXBvc2l0b3J5Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IENyZWF0ZVJlcG9zaXRvcnlDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZUltYWdlczogKGlucHV0OiBFQ1JEZXNjcmliZUltYWdlc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRUNSRGVzY3JpYmVJbWFnZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVJlcG9zaXRvcmllczogKGlucHV0OiBEZXNjcmliZVJlcG9zaXRvcmllc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVSZXBvc2l0b3JpZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRBdXRob3JpemF0aW9uVG9rZW46IChpbnB1dDogR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRBdXRob3JpemF0aW9uVG9rZW5Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0QXV0aG9yaXphdGlvblRva2VuQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEltYWdlczogKGlucHV0OiBMaXN0SW1hZ2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0SW1hZ2VzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RJbWFnZXNDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRJbWFnZTogKGlucHV0OiBQdXRJbWFnZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0SW1hZ2VDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHV0SW1hZ2VDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogKFxuICAgICAgICBpbnB1dDogUHV0SW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZWNzKCk6IElFQ1NDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBFQ1NDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBsaXN0Q2x1c3RlcnM6IChpbnB1dDogTGlzdENsdXN0ZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0Q2x1c3RlcnNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgTGlzdENsdXN0ZXJzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgcmVnaXN0ZXJUYXNrRGVmaW5pdGlvbjogKFxuICAgICAgICBpbnB1dDogUmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRJbnB1dCxcbiAgICAgICk6IFByb21pc2U8UmVnaXN0ZXJUYXNrRGVmaW5pdGlvbkNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBSZWdpc3RlclRhc2tEZWZpbml0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlU2VydmljZTogKGlucHV0OiBVcGRhdGVTZXJ2aWNlQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVTZXJ2aWNlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IFVwZGF0ZVNlcnZpY2VDb21tYW5kKGlucHV0KSksXG4gICAgICAvLyBXYWl0ZXJzXG4gICAgICB3YWl0VW50aWxTZXJ2aWNlc1N0YWJsZTogKGlucHV0OiBEZXNjcmliZVNlcnZpY2VzQ29tbWFuZElucHV0LCB0aW1lb3V0U2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8V2FpdGVyUmVzdWx0PiA9PiB7XG4gICAgICAgIHJldHVybiB3YWl0VW50aWxTZXJ2aWNlc1N0YWJsZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICBtYXhXYWl0VGltZTogdGltZW91dFNlY29uZHMgPz8gNjAwLFxuICAgICAgICAgICAgbWluRGVsYXk6IDYsXG4gICAgICAgICAgICBtYXhEZWxheTogNixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlucHV0LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGVsYnYyKCk6IElFbGFzdGljTG9hZEJhbGFuY2luZ1YyQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRWxhc3RpY0xvYWRCYWxhbmNpbmdWMkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzOiAoaW5wdXQ6IERlc2NyaWJlTGlzdGVuZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUxpc3RlbmVyc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2VyczogKGlucHV0OiBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlc2NyaWJlTG9hZEJhbGFuY2Vyc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUxvYWRCYWxhbmNlcnNDb21tYW5kKGlucHV0KSksXG4gICAgICBkZXNjcmliZVRhZ3M6IChpbnB1dDogRGVzY3JpYmVUYWdzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZVRhZ3NDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVzY3JpYmVUYWdzQ29tbWFuZChpbnB1dCkpLFxuICAgICAgLy8gUGFnaW5hdGlvbiBGdW5jdGlvbnNcbiAgICAgIHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnM6IGFzeW5jIChpbnB1dDogRGVzY3JpYmVMaXN0ZW5lcnNDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RlbmVyW10+ID0+IHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gQXJyYXk8TGlzdGVuZXI+KCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHBhZ2luYXRlRGVzY3JpYmVMaXN0ZW5lcnMoeyBjbGllbnQgfSwgaW5wdXQpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcGFnaW5hdG9yKSB7XG4gICAgICAgICAgbGlzdGVuZXJzLnB1c2goLi4uKHBhZ2U/Lkxpc3RlbmVycyB8fCBbXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnM7XG4gICAgICB9LFxuICAgICAgcGFnaW5hdGVEZXNjcmliZUxvYWRCYWxhbmNlcnM6IGFzeW5jIChpbnB1dDogRGVzY3JpYmVMb2FkQmFsYW5jZXJzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMb2FkQmFsYW5jZXJbXT4gPT4ge1xuICAgICAgICBjb25zdCBsb2FkQmFsYW5jZXJzID0gQXJyYXk8TG9hZEJhbGFuY2VyPigpO1xuICAgICAgICBjb25zdCBwYWdpbmF0b3IgPSBwYWdpbmF0ZURlc2NyaWJlTG9hZEJhbGFuY2Vycyh7IGNsaWVudCB9LCBpbnB1dCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcGFnZSBvZiBwYWdpbmF0b3IpIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJzLnB1c2goLi4uKHBhZ2U/LkxvYWRCYWxhbmNlcnMgfHwgW10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9hZEJhbGFuY2VycztcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpYW0oKTogSUlBTUNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IElBTUNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0ZVBvbGljeTogKGlucHV0OiBDcmVhdGVQb2xpY3lDb21tYW5kSW5wdXQpOiBQcm9taXNlPENyZWF0ZVBvbGljeUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBDcmVhdGVQb2xpY3lDb21tYW5kKGlucHV0KSksXG4gICAgICBnZXRQb2xpY3k6IChpbnB1dDogR2V0UG9saWN5Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQb2xpY3lDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0UG9saWN5Q29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0Um9sZTogKGlucHV0OiBHZXRSb2xlQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRSb2xlQ29tbWFuZE91dHB1dD4gPT4gY2xpZW50LnNlbmQobmV3IEdldFJvbGVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBrbXMoKTogSUtNU0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEtNU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaWJlS2V5OiAoaW5wdXQ6IERlc2NyaWJlS2V5Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZXNjcmliZUtleUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZXNjcmliZUtleUNvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RBbGlhc2VzOiAoaW5wdXQ6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0QWxpYXNlc0NvbW1hbmQoaW5wdXQpKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGxhbWJkYSgpOiBJTGFtYmRhQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgTGFtYmRhQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW52b2tlQ29tbWFuZDogKGlucHV0OiBJbnZva2VDb21tYW5kSW5wdXQpOiBQcm9taXNlPEludm9rZUNvbW1hbmRPdXRwdXQ+ID0+IGNsaWVudC5zZW5kKG5ldyBJbnZva2VDb21tYW5kKGlucHV0KSksXG4gICAgICBwdWJsaXNoVmVyc2lvbjogKGlucHV0OiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHVibGlzaFZlcnNpb25Db21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVBbGlhczogKGlucHV0OiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlQWxpYXNDb21tYW5kKGlucHV0KSksXG4gICAgICB1cGRhdGVGdW5jdGlvbkNvZGU6IChpbnB1dDogVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZChpbnB1dCkpLFxuICAgICAgdXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uOiAoXG4gICAgICAgIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kKGlucHV0KSksXG4gICAgICAvLyBXYWl0ZXJzXG4gICAgICB3YWl0VW50aWxGdW5jdGlvblVwZGF0ZWQ6IChcbiAgICAgICAgZGVsYXlTZWNvbmRzOiBudW1iZXIsXG4gICAgICAgIGlucHV0OiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgICApOiBQcm9taXNlPFdhaXRlclJlc3VsdD4gPT4ge1xuICAgICAgICByZXR1cm4gd2FpdFVudGlsRnVuY3Rpb25VcGRhdGVkVjIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgbWF4RGVsYXk6IGRlbGF5U2Vjb25kcyxcbiAgICAgICAgICAgIG1pbkRlbGF5OiBkZWxheVNlY29uZHMsXG4gICAgICAgICAgICBtYXhXYWl0VGltZTogZGVsYXlTZWNvbmRzICogNjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByb3V0ZTUzKCk6IElSb3V0ZTUzQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUm91dGU1M0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldEhvc3RlZFpvbmU6IChpbnB1dDogR2V0SG9zdGVkWm9uZUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SG9zdGVkWm9uZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRIb3N0ZWRab25lQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdEhvc3RlZFpvbmVzOiAoaW5wdXQ6IExpc3RIb3N0ZWRab25lc0NvbW1hbmRJbnB1dCk6IFByb21pc2U8TGlzdEhvc3RlZFpvbmVzQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RIb3N0ZWRab25lc0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGxpc3RIb3N0ZWRab25lc0J5TmFtZTogKGlucHV0OiBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPExpc3RIb3N0ZWRab25lc0J5TmFtZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBMaXN0SG9zdGVkWm9uZXNCeU5hbWVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzMygpOiBJUzNDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTM0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlbGV0ZU9iamVjdHM6IChpbnB1dDogRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBEZWxldGVPYmplY3RzQ29tbWFuZCh7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgQ2hlY2tzdW1BbGdvcml0aG06ICdTSEEyNTYnLFxuICAgICAgICB9KSksXG4gICAgICBkZWxldGVPYmplY3RUYWdnaW5nOiAoaW5wdXQ6IERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldEJ1Y2tldEVuY3J5cHRpb246IChpbnB1dDogR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0QnVja2V0TG9jYXRpb246IChpbnB1dDogR2V0QnVja2V0TG9jYXRpb25Db21tYW5kSW5wdXQpOiBQcm9taXNlPEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZChpbnB1dCkpLFxuICAgICAgZ2V0T2JqZWN0OiAoaW5wdXQ6IEdldE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldE9iamVjdENvbW1hbmQoaW5wdXQpKSxcbiAgICAgIGdldE9iamVjdFRhZ2dpbmc6IChpbnB1dDogR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZChpbnB1dCkpLFxuICAgICAgbGlzdE9iamVjdHNWMjogKGlucHV0OiBMaXN0T2JqZWN0c1YyQ29tbWFuZElucHV0KTogUHJvbWlzZTxMaXN0T2JqZWN0c1YyQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IExpc3RPYmplY3RzVjJDb21tYW5kKGlucHV0KSksXG4gICAgICBwdXRPYmplY3RUYWdnaW5nOiAoaW5wdXQ6IFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQoe1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIENoZWNrc3VtQWxnb3JpdGhtOiAnU0hBMjU2JyxcbiAgICAgICAgfSkpLFxuICAgICAgdXBsb2FkOiAoaW5wdXQ6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8Q29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdXBsb2FkID0gbmV3IFVwbG9hZCh7XG4gICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICBwYXJhbXM6IHsgLi4uaW5wdXQsIENoZWNrc3VtQWxnb3JpdGhtOiAnU0hBMjU2JyB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHVwbG9hZC5kb25lKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKGBVcGxvYWQgZmFpbGVkOiAke2Zvcm1hdEVycm9yTWVzc2FnZShlKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNlY3JldHNNYW5hZ2VyKCk6IElTZWNyZXRzTWFuYWdlckNsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0U2VjcmV0VmFsdWU6IChpbnB1dDogR2V0U2VjcmV0VmFsdWVDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldFNlY3JldFZhbHVlQ29tbWFuZE91dHB1dD4gPT5cbiAgICAgICAgY2xpZW50LnNlbmQobmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3NtKCk6IElTU01DbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTU01DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXRQYXJhbWV0ZXI6IChpbnB1dDogR2V0UGFyYW1ldGVyQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0PiA9PlxuICAgICAgICBjbGllbnQuc2VuZChuZXcgR2V0UGFyYW1ldGVyQ29tbWFuZChpbnB1dCkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RlcEZ1bmN0aW9ucygpOiBJU3RlcEZ1bmN0aW9uc0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNGTkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZTogKGlucHV0OiBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZVN0YXRlTWFjaGluZUNvbW1hbmRPdXRwdXQ+ID0+XG4gICAgICAgIGNsaWVudC5zZW5kKG5ldyBVcGRhdGVTdGF0ZU1hY2hpbmVDb21tYW5kKGlucHV0KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVdTIFNESyB2MyByZXF1aXJlcyBhIGNsaWVudCBjb25maWcgYW5kIGEgY29tbWFuZCBpbiBvcmRlciB0byBnZXQgYW4gZW5kcG9pbnQgZm9yXG4gICAqIGFueSBnaXZlbiBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFVybFN1ZmZpeChyZWdpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY2ZuID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHsgcmVnaW9uIH0pO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zKHt9LCBEZXNjcmliZVN0YWNrUmVzb3VyY2VzQ29tbWFuZCwgeyAuLi5jZm4uY29uZmlnIH0pO1xuICAgIHJldHVybiBlbmRwb2ludC51cmwuaG9zdG5hbWUuc3BsaXQoYCR7cmVnaW9ufS5gKS5wb3AoKSE7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3VycmVudEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50PiB7XG4gICAgcmV0dXJuIGNhY2hlZEFzeW5jKHRoaXMsIENVUlJFTlRfQUNDT1VOVF9LRVksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgdGhpcy5jcmVkUHJvdmlkZXIoKTtcbiAgICAgIHJldHVybiB0aGlzLmFjY291bnRDYWNoZS5mZXRjaChjcmVkcy5hY2Nlc3NLZXlJZCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBpZiB3ZSBkb24ndCBoYXZlIG9uZSwgcmVzb2x2ZSBmcm9tIFNUUyBhbmQgc3RvcmUgaW4gY2FjaGUuXG4gICAgICAgIGF3YWl0IHRoaXMuZGVidWcoJ0xvb2tpbmcgdXAgZGVmYXVsdCBhY2NvdW50IElEIGZyb20gU1RTJyk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTVFNDbGllbnQoe1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIHJldHJ5U3RyYXRlZ3k6IHRoaXMuc3RzUmV0cnlTdHJhdGVneSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IHJlc3VsdC5BY2NvdW50O1xuICAgICAgICBjb25zdCBwYXJ0aXRpb24gPSByZXN1bHQuQXJuIS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKFwiU1RTIGRpZG4ndCByZXR1cm4gYW4gYWNjb3VudCBJRFwiKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRlYnVnKGBEZWZhdWx0IGFjY291bnQgSUQ6ICR7YWNjb3VudElkfWApO1xuXG4gICAgICAgIC8vIFNhdmUgYW5vdGhlciBTVFMgY2FsbCBsYXRlciBpZiB0aGlzIG9uZSBhbHJlYWR5IHN1Y2NlZWRlZFxuICAgICAgICB0aGlzLl9jcmVkZW50aWFsc1ZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB7IGFjY291bnRJZCwgcGFydGl0aW9uIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHN1cmUgdGhlIHRoZSBjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSBub3QgZXhwaXJlZFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ3JlZGVudGlhbHMoKSB7XG4gICAgaWYgKHRoaXMuX2NyZWRlbnRpYWxzVmFsaWRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFNUU0NsaWVudCh7IC4uLnRoaXMuY29uZmlnLCByZXRyeVN0cmF0ZWd5OiB0aGlzLnN0c1JldHJ5U3RyYXRlZ3kgfSk7XG4gICAgYXdhaXQgY2xpZW50LnNlbmQobmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7fSkpO1xuICAgIHRoaXMuX2NyZWRlbnRpYWxzVmFsaWRhdGVkID0gdHJ1ZTtcbiAgfVxufVxuXG5jb25zdCBDVVJSRU5UX0FDQ09VTlRfS0VZID0gU3ltYm9sKCdjdXJyZW50X2FjY291bnRfa2V5Jyk7XG4iXX0=
@@ -1,9 +1,9 @@
1
- import type { Logger } from '@smithy/types';
1
+ import type { ISdkLogger } from './sdk-logger';
2
2
  export declare function setSdkTracing(enabled: boolean): void;
3
3
  /**
4
4
  * Method decorator to trace a single static or member method, any time it's called
5
5
  */
6
- export declare function callTrace(fn: string, className?: string, logger?: Logger): void;
6
+ export declare function callTrace(fn: string, className?: string, logger?: ISdkLogger): void;
7
7
  /**
8
8
  * Class decorator, enable tracing for all member methods on this class
9
9
  * @deprecated this doesn't work well with localized logging instances, don't use
@@ -57,4 +57,4 @@ function traceMemberMethods(constructor) {
57
57
  Object.defineProperty(constructor.prototype, name, newDescriptor);
58
58
  }
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyYWNpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxzQ0FFQztBQUtELDhCQU1DO0FBbUNELGdEQVNDO0FBNURELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZixTQUFnQixhQUFhLENBQUMsT0FBZ0I7SUFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsRUFBVSxFQUFFLFNBQWtCLEVBQUUsTUFBZTtJQUN2RSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLElBQUksYUFBYSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsUUFBZ0IsRUFBRSxZQUFvQixFQUFFLFVBQThCLEVBQUUsZUFBd0I7SUFDakgsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztJQUVuRixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1FBQ3pDLE1BQU0sTUFBTSxHQUFJLElBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLE1BQU0sRUFBRSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxhQUFhLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoSSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRVosTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLFlBQVksT0FBTyxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ1osT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLFdBQXFCO0lBQ3RELG1CQUFtQjtJQUNuQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxJQUFJLE9BQU8sVUFBVSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMzQyxTQUFTO1FBQ1gsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQztRQUN6RyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMb2dnZXIgfSBmcm9tICdAc21pdGh5L3R5cGVzJztcblxubGV0IEVOQUJMRUQgPSBmYWxzZTtcbmxldCBJTkRFTlQgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0U2RrVHJhY2luZyhlbmFibGVkOiBib29sZWFuKSB7XG4gIEVOQUJMRUQgPSBlbmFibGVkO1xufVxuXG4vKipcbiAqIE1ldGhvZCBkZWNvcmF0b3IgdG8gdHJhY2UgYSBzaW5nbGUgc3RhdGljIG9yIG1lbWJlciBtZXRob2QsIGFueSB0aW1lIGl0J3MgY2FsbGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxsVHJhY2UoZm46IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nLCBsb2dnZXI/OiBMb2dnZXIpIHtcbiAgaWYgKCFFTkFCTEVEIHx8ICFsb2dnZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuaW5mbyhgW3RyYWNlXSAkeycgJy5yZXBlYXQoSU5ERU5UKX0ke2NsYXNzTmFtZSB8fCAnKGFub255bW91cyknfSMke2ZufSgpYCk7XG59XG5cbi8qKlxuICogTWV0aG9kIGRlY29yYXRvciB0byB0cmFjZSBhIHNpbmdsZSBtZW1iZXIgbWV0aG9kIGFueSB0aW1lIGl0J3MgY2FsbGVkXG4gKi9cbmZ1bmN0aW9uIHRyYWNlQ2FsbChyZWNlaXZlcjogb2JqZWN0LCBfcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yLCBwYXJlbnRDbGFzc05hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgZm4gPSBkZXNjcmlwdG9yLnZhbHVlO1xuICBjb25zdCBjbGFzc05hbWUgPSB0eXBlb2YgcmVjZWl2ZXIgPT09ICdmdW5jdGlvbicgPyByZWNlaXZlci5uYW1lIDogcGFyZW50Q2xhc3NOYW1lO1xuXG4gIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBjb25zdCBsb2dnZXIgPSAodGhpcyBhcyBhbnkpLmxvZ2dlcjtcbiAgICBpZiAoIUVOQUJMRUQgfHwgdHlwZW9mIGxvZ2dlcj8uaW5mbyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvLmFwcGx5KGxvZ2dlciwgW2BbdHJhY2VdICR7JyAnLnJlcGVhdChJTkRFTlQpfSR7Y2xhc3NOYW1lIHx8IHRoaXMuY29uc3RydWN0b3IubmFtZSB8fCAnKGFub255bW91cyknfSMke2ZuLm5hbWV9KClgXSk7XG4gICAgSU5ERU5UICs9IDI7XG5cbiAgICBjb25zdCByZXQgPSBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICBpZiAocmV0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHJldC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgSU5ERU5UIC09IDI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgSU5ERU5UIC09IDI7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG5cbi8qKlxuICogQ2xhc3MgZGVjb3JhdG9yLCBlbmFibGUgdHJhY2luZyBmb3IgYWxsIG1lbWJlciBtZXRob2RzIG9uIHRoaXMgY2xhc3NcbiAqIEBkZXByZWNhdGVkIHRoaXMgZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBsb2NhbGl6ZWQgbG9nZ2luZyBpbnN0YW5jZXMsIGRvbid0IHVzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VNZW1iZXJNZXRob2RzKGNvbnN0cnVjdG9yOiBGdW5jdGlvbikge1xuICAvLyBJbnN0YW5jZSBtZW1iZXJzXG4gIGZvciAoY29uc3QgW25hbWUsIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGNvbnN0cnVjdG9yLnByb3RvdHlwZSkpKSB7XG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmV3RGVzY3JpcHRvciA9IHRyYWNlQ2FsbChjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIG5hbWUsIGRlc2NyaXB0b3IsIGNvbnN0cnVjdG9yLm5hbWUpID8/IGRlc2NyaXB0b3I7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbmFtZSwgbmV3RGVzY3JpcHRvcik7XG4gIH1cbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyYWNpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxzQ0FFQztBQUtELDhCQU1DO0FBbUNELGdEQVNDO0FBNURELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZixTQUFnQixhQUFhLENBQUMsT0FBZ0I7SUFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUMsRUFBVSxFQUFFLFNBQWtCLEVBQUUsTUFBbUI7SUFDM0UsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxJQUFJLGFBQWEsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsWUFBb0IsRUFBRSxVQUE4QixFQUFFLGVBQXdCO0lBQ2pILE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsT0FBTyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFFbkYsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztRQUN6QyxNQUFNLE1BQU0sR0FBSSxJQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25ELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksYUFBYSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEksTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVaLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNaLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxXQUFxQjtJQUN0RCxtQkFBbUI7SUFDbkIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0MsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDekcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNwRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSVNka0xvZ2dlciB9IGZyb20gJy4vc2RrLWxvZ2dlcic7XG5cbmxldCBFTkFCTEVEID0gZmFsc2U7XG5sZXQgSU5ERU5UID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNka1RyYWNpbmcoZW5hYmxlZDogYm9vbGVhbikge1xuICBFTkFCTEVEID0gZW5hYmxlZDtcbn1cblxuLyoqXG4gKiBNZXRob2QgZGVjb3JhdG9yIHRvIHRyYWNlIGEgc2luZ2xlIHN0YXRpYyBvciBtZW1iZXIgbWV0aG9kLCBhbnkgdGltZSBpdCdzIGNhbGxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbFRyYWNlKGZuOiBzdHJpbmcsIGNsYXNzTmFtZT86IHN0cmluZywgbG9nZ2VyPzogSVNka0xvZ2dlcikge1xuICBpZiAoIUVOQUJMRUQgfHwgIWxvZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZ2dlci5pbmZvKGBbdHJhY2VdICR7JyAnLnJlcGVhdChJTkRFTlQpfSR7Y2xhc3NOYW1lIHx8ICcoYW5vbnltb3VzKSd9IyR7Zm59KClgKTtcbn1cblxuLyoqXG4gKiBNZXRob2QgZGVjb3JhdG9yIHRvIHRyYWNlIGEgc2luZ2xlIG1lbWJlciBtZXRob2QgYW55IHRpbWUgaXQncyBjYWxsZWRcbiAqL1xuZnVuY3Rpb24gdHJhY2VDYWxsKHJlY2VpdmVyOiBvYmplY3QsIF9wcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IsIHBhcmVudENsYXNzTmFtZT86IHN0cmluZykge1xuICBjb25zdCBmbiA9IGRlc2NyaXB0b3IudmFsdWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IHR5cGVvZiByZWNlaXZlciA9PT0gJ2Z1bmN0aW9uJyA/IHJlY2VpdmVyLm5hbWUgOiBwYXJlbnRDbGFzc05hbWU7XG5cbiAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxvZ2dlciA9ICh0aGlzIGFzIGFueSkubG9nZ2VyO1xuICAgIGlmICghRU5BQkxFRCB8fCB0eXBlb2YgbG9nZ2VyPy5pbmZvICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmluZm8uYXBwbHkobG9nZ2VyLCBbYFt0cmFjZV0gJHsnICcucmVwZWF0KElOREVOVCl9JHtjbGFzc05hbWUgfHwgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIHx8ICcoYW5vbnltb3VzKSd9IyR7Zm4ubmFtZX0oKWBdKTtcbiAgICBJTkRFTlQgKz0gMjtcblxuICAgIGNvbnN0IHJldCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIGlmIChyZXQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gcmV0LmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBJTkRFTlQgLT0gMjtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBJTkRFTlQgLT0gMjtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9O1xuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuLyoqXG4gKiBDbGFzcyBkZWNvcmF0b3IsIGVuYWJsZSB0cmFjaW5nIGZvciBhbGwgbWVtYmVyIG1ldGhvZHMgb24gdGhpcyBjbGFzc1xuICogQGRlcHJlY2F0ZWQgdGhpcyBkb2Vzbid0IHdvcmsgd2VsbCB3aXRoIGxvY2FsaXplZCBsb2dnaW5nIGluc3RhbmNlcywgZG9uJ3QgdXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZU1lbWJlck1ldGhvZHMoY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XG4gIC8vIEluc3RhbmNlIG1lbWJlcnNcbiAgZm9yIChjb25zdCBbbmFtZSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY29uc3RydWN0b3IucHJvdG90eXBlKSkpIHtcbiAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IudmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBuZXdEZXNjcmlwdG9yID0gdHJhY2VDYWxsKGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbmFtZSwgZGVzY3JpcHRvciwgY29uc3RydWN0b3IubmFtZSkgPz8gZGVzY3JpcHRvcjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCBuYW1lLCBuZXdEZXNjcmlwdG9yKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import type { AwsCredentialIdentityProvider } from '@smithy/types';
1
+ import type { SDKv3CompatibleCredentialProvider } from '@aws-cdk/cli-plugin-contract';
2
2
  import type { SdkProviderServices } from '../shared-private';
3
3
  /**
4
4
  * Options for the default SDK provider
@@ -92,7 +92,7 @@ export interface CustomBaseCredentialsOption {
92
92
  * sure to also configure the necessary HTTP options (like proxy and user
93
93
  * agent) on the STS client directly; the toolkit code cannot do this for you.
94
94
  */
95
- readonly provider: AwsCredentialIdentityProvider;
95
+ readonly provider: SDKv3CompatibleCredentialProvider;
96
96
  /**
97
97
  * The default region to synthesize for
98
98
  *
@@ -105,6 +105,6 @@ export interface CustomBaseCredentialsOption {
105
105
  readonly region?: string;
106
106
  }
107
107
  export interface SdkBaseConfig {
108
- readonly credentialProvider: AwsCredentialIdentityProvider;
108
+ readonly credentialProvider: SDKv3CompatibleCredentialProvider;
109
109
  readonly defaultRegion?: string;
110
110
  }
@@ -73,4 +73,4 @@ class BaseCredentials {
73
73
  }
74
74
  }
75
75
  exports.BaseCredentials = BaseCredentials;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxzREFBcUQ7QUE4Q3JELE1BQXNCLGVBQWU7SUFDbkM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLElBQUk7UUFDaEIsT0FBTyxJQUFJLEtBQU0sU0FBUSxlQUFlO1lBQy9CLEtBQUssQ0FBQyxhQUFhO2dCQUN4QixPQUFPO29CQUNMLGtCQUFrQixFQUFFLEdBQUcsRUFBRTt3QkFDdkIsMkRBQTJEO3dCQUMzRCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7b0JBQzVFLENBQUM7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFFTSxRQUFRO2dCQUNiLE9BQU8sd0JBQXdCLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFtQyxFQUFFO1FBQ2xFLE9BQU8sSUFBSSxLQUFNLFNBQVEsZUFBZTtZQUMvQixhQUFhLENBQUMsUUFBNkI7Z0JBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksaUNBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZHLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUVNLFFBQVE7Z0JBQ2IsT0FBTyxvQ0FBb0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hFLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQW9DO1FBQ3ZELE9BQU8sSUFBSSxLQUFNLFNBQVEsZUFBZTtZQUMvQixhQUFhO2dCQUNsQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ3JCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxRQUFRO29CQUNwQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQzlCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFTSxRQUFRO2dCQUNiLE9BQU8sMEJBQTBCLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQzlDLEdBQUcsT0FBTztvQkFDVixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxHQUFHLENBQUM7WUFDUixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FNRjtBQS9FRCwwQ0ErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyU2VydmljZXMgfSBmcm9tICcuLi9zaGFyZWQtcHJpdmF0ZSc7XG5pbXBvcnQgeyBBd3NDbGlDb21wYXRpYmxlIH0gZnJvbSAnLi4vc2hhcmVkLXByaXZhdGUnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBkZWZhdWx0IFNESyBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBjcmVkZW50aWFscyBhbmQgcmVnaW9uIHVzZWQgdG8gc2VlZCB0aGUgVG9vbGtpdCB3aXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IEJhc2VDcmVkZW50aWFscy5hd3NDbGlDb21wYXRpYmxlKClcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VDcmVkZW50aWFscz86IEJhc2VDcmVkZW50aWFscztcblxuICAvKipcbiAgICogUHJvZmlsZSB0byByZWFkIGZyb20gfi8uYXdzIGZvciBiYXNlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJvZmlsZVxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGJhc2VDcmVkZW50aWFsc2AgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogSFRUUCBvcHRpb25zIGZvciBTREtcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBPcHRpb25zPzogU2RrSHR0cE9wdGlvbnM7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgaW5kaXZpZHVhbCBTREtzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2RrSHR0cE9wdGlvbnMge1xuICAvKipcbiAgICogUHJveHkgYWRkcmVzcyB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gcHJveHlcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5QWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgY2VydGlmaWNhdGUgYnVuZGxlIHRoYXQgY29udGFpbnMgYSBjZXJ0IHRvIGJlIHRydXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGNlcnRpZmljYXRlIGJ1bmRsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FCdW5kbGVQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNyZWRlbnRpYWxzIHtcbiAgLyoqXG4gICAqIFVzZSBubyBiYXNlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFRoZXJlIHdpbGwgYmUgbm8gY3VycmVudCBhY2NvdW50IGFuZCBubyBjdXJyZW50IHJlZ2lvbiBkdXJpbmcgc3ludGhlc2lzLiBUb1xuICAgKiBzdWNjZXNzZnVsbHkgZGVwbG95IHdpdGggdGhpcyBzZXQgb2YgYmFzZSBjcmVkZW50aWFsczpcbiAgICpcbiAgICogLSBUaGUgQ0RLIGFwcCBtdXN0IHByb3ZpZGUgY29uY3JldGUgYWNjb3VudHMgYW5kIHJlZ2lvbnMgZHVyaW5nIHN5bnRoZXNpc1xuICAgKiAtIENyZWRlbnRpYWwgcGx1Z2lucyBtdXN0IGJlIGluc3RhbGxlZCB0byBwcm92aWRlIGNyZWRlbnRpYWxzIGZvciB0aG9zZVxuICAgKiAgIGFjY291bnRzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub25lKCk6IEJhc2VDcmVkZW50aWFscyB7XG4gICAgcmV0dXJuIG5ldyBjbGFzcyBleHRlbmRzIEJhc2VDcmVkZW50aWFscyB7XG4gICAgICBwdWJsaWMgYXN5bmMgbWFrZVNka0NvbmZpZygpOiBQcm9taXNlPFNka0Jhc2VDb25maWc+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjcmVkZW50aWFsUHJvdmlkZXI6ICgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9uby10aHJvdy1kZWZhdWx0LWVycm9yXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBkdWUgdG8gQmFzZUNyZWRlbnRpYWxzLm5vbmUoKScpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuICdCYXNlQ3JlZGVudGlhbHMubm9uZSgpJztcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBiYXNlIGNyZWRlbnRpYWxzIGFuZCBiYXNlIHJlZ2lvbiB0aGUgc2FtZSB3YXkgdGhlIEFXUyBDTEkgd291bGRcbiAgICpcbiAgICogQ3JlZGVudGlhbHMgYW5kIHJlZ2lvbiB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgZmlyc3QsIGZhbGxpbmcgYmFja1xuICAgKiB0byBJTkkgZmlsZXMgb3Igb3RoZXIgc291cmNlcyBpZiBhdmFpbGFibGUuXG4gICAqXG4gICAqIFRoZSBwcm9maWxlIG5hbWUgaXMgY29uZmlndXJhYmxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhd3NDbGlDb21wYXRpYmxlKG9wdGlvbnM6IEF3c0NsaUNvbXBhdGlibGVPcHRpb25zID0ge30pOiBCYXNlQ3JlZGVudGlhbHMge1xuICAgIHJldHVybiBuZXcgY2xhc3MgZXh0ZW5kcyBCYXNlQ3JlZGVudGlhbHMge1xuICAgICAgcHVibGljIG1ha2VTZGtDb25maWcoc2VydmljZXM6IFNka1Byb3ZpZGVyU2VydmljZXMpOiBQcm9taXNlPFNka0Jhc2VDb25maWc+IHtcbiAgICAgICAgY29uc3QgYXdzQ2xpID0gbmV3IEF3c0NsaUNvbXBhdGlibGUoc2VydmljZXMuaW9IZWxwZXIsIHNlcnZpY2VzLnJlcXVlc3RIYW5kbGVyID8/IHt9LCBzZXJ2aWNlcy5sb2dnZXIpO1xuICAgICAgICByZXR1cm4gYXdzQ2xpLmJhc2VDb25maWcob3B0aW9ucy5wcm9maWxlKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gYEJhc2VDcmVkZW50aWFscy5hd3NDbGlDb21wYXRpYmxlKCR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9KWA7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYSBjdXN0b20gU0RLIGlkZW50aXR5IHByb3ZpZGVyIGZvciB0aGUgYmFzZSBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBJZiB5b3VyIHByb3ZpZGVyIHVzZXMgU1RTIGNhbGxzIHRvIG9idGFpbiBiYXNlIGNyZWRlbnRpYWxzLCB5b3UgbXVzdCBtYWtlXG4gICAqIHN1cmUgdG8gYWxzbyBjb25maWd1cmUgdGhlIG5lY2Vzc2FyeSBIVFRQIG9wdGlvbnMgKGxpa2UgcHJveHkgYW5kIHVzZXJcbiAgICogYWdlbnQpIGFuZCB0aGUgcmVnaW9uIG9uIHRoZSBTVFMgY2xpZW50IGRpcmVjdGx5OyB0aGUgdG9vbGtpdCBjb2RlIGNhbm5vdFxuICAgKiBkbyB0aGlzIGZvciB5b3UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShvcHRpb25zOiBDdXN0b21CYXNlQ3JlZGVudGlhbHNPcHRpb24pOiBCYXNlQ3JlZGVudGlhbHMge1xuICAgIHJldHVybiBuZXcgY2xhc3MgZXh0ZW5kcyBCYXNlQ3JlZGVudGlhbHMge1xuICAgICAgcHVibGljIG1ha2VTZGtDb25maWcoKTogUHJvbWlzZTxTZGtCYXNlQ29uZmlnPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgIGNyZWRlbnRpYWxQcm92aWRlcjogb3B0aW9ucy5wcm92aWRlcixcbiAgICAgICAgICBkZWZhdWx0UmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGBCYXNlQ3JlZGVudGlhbHMuY3VzdG9tKCR7SlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgcHJvdmlkZXI6ICcuLi4nLFxuICAgICAgICB9KX0pYDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgU0RLIGNvbmZpZyBmcm9tIHRoZSBCYXNlQ3JlZGVudGlhbHMgc2V0dGluZ3NcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBtYWtlU2RrQ29uZmlnKHNlcnZpY2VzOiBTZGtQcm92aWRlclNlcnZpY2VzKTogUHJvbWlzZTxTZGtCYXNlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBd3NDbGlDb21wYXRpYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcHJvZmlsZSB0byByZWFkIGZyb20gYH4vLmF3cy9jcmVkZW50aWFsc2AuXG4gICAqXG4gICAqIElmIG5vdCBzdXBwbGllZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQVdTX1BST0ZJTEUgd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBzZXQuXG4gICAqL1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUJhc2VDcmVkZW50aWFsc09wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgY3JlZGVudGlhbHMgcHJvdmlkZXIgdG8gdXNlIHRvIG9idGFpbiBiYXNlIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIElmIHlvdXIgcHJvdmlkZXIgdXNlcyBTVFMgY2FsbHMgdG8gb2J0YWluIGJhc2UgY3JlZGVudGlhbHMsIHlvdSBtdXN0IG1ha2VcbiAgICogc3VyZSB0byBhbHNvIGNvbmZpZ3VyZSB0aGUgbmVjZXNzYXJ5IEhUVFAgb3B0aW9ucyAobGlrZSBwcm94eSBhbmQgdXNlclxuICAgKiBhZ2VudCkgb24gdGhlIFNUUyBjbGllbnQgZGlyZWN0bHk7IHRoZSB0b29sa2l0IGNvZGUgY2Fubm90IGRvIHRoaXMgZm9yIHlvdS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcmVnaW9uIHRvIHN5bnRoZXNpemUgZm9yXG4gICAqXG4gICAqIENESyBhcHBsaWNhdGlvbnMgY2FuIG92ZXJyaWRlIHRoaXMgcmVnaW9uLiBOT1RFOiB0aGlzIHJlZ2lvbiB3aWxsICpub3QqXG4gICAqIGFmZmVjdCBhbnkgU1RTIGNhbGxzIG1hZGUgYnkgdGhlIGdpdmVuIHByb3ZpZGVyLCBpZiBhbnkuIFlvdSBuZWVkIHRvIGNvbmZpZ3VyZVxuICAgKiB5b3VyIGNyZWRlbnRpYWwgcHJvdmlkZXIgc2VwYXJhdGVseS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ3VzLWVhc3QtMSdcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZGtCYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyOiBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlcjtcblxuICByZWFkb25seSBkZWZhdWx0UmVnaW9uPzogc3RyaW5nO1xufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxzREFBcUQ7QUE4Q3JELE1BQXNCLGVBQWU7SUFDbkM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLElBQUk7UUFDaEIsT0FBTyxJQUFJLEtBQU0sU0FBUSxlQUFlO1lBQy9CLEtBQUssQ0FBQyxhQUFhO2dCQUN4QixPQUFPO29CQUNMLGtCQUFrQixFQUFFLEdBQUcsRUFBRTt3QkFDdkIsMkRBQTJEO3dCQUMzRCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7b0JBQzVFLENBQUM7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFFTSxRQUFRO2dCQUNiLE9BQU8sd0JBQXdCLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFtQyxFQUFFO1FBQ2xFLE9BQU8sSUFBSSxLQUFNLFNBQVEsZUFBZTtZQUMvQixhQUFhLENBQUMsUUFBNkI7Z0JBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksaUNBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZHLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUVNLFFBQVE7Z0JBQ2IsT0FBTyxvQ0FBb0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hFLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQW9DO1FBQ3ZELE9BQU8sSUFBSSxLQUFNLFNBQVEsZUFBZTtZQUMvQixhQUFhO2dCQUNsQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7b0JBQ3JCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxRQUFRO29CQUNwQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQzlCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFTSxRQUFRO2dCQUNiLE9BQU8sMEJBQTBCLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQzlDLEdBQUcsT0FBTztvQkFDVixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxHQUFHLENBQUM7WUFDUixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FNRjtBQS9FRCwwQ0ErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlciB9IGZyb20gJ0Bhd3MtY2RrL2NsaS1wbHVnaW4tY29udHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlclNlcnZpY2VzIH0gZnJvbSAnLi4vc2hhcmVkLXByaXZhdGUnO1xuaW1wb3J0IHsgQXdzQ2xpQ29tcGF0aWJsZSB9IGZyb20gJy4uL3NoYXJlZC1wcml2YXRlJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZGVmYXVsdCBTREsgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZGtDb25maWcge1xuICAvKipcbiAgICogVGhlIGJhc2UgY3JlZGVudGlhbHMgYW5kIHJlZ2lvbiB1c2VkIHRvIHNlZWQgdGhlIFRvb2xraXQgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBCYXNlQ3JlZGVudGlhbHMuYXdzQ2xpQ29tcGF0aWJsZSgpXG4gICAqL1xuICByZWFkb25seSBiYXNlQ3JlZGVudGlhbHM/OiBCYXNlQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIFByb2ZpbGUgdG8gcmVhZCBmcm9tIH4vLmF3cyBmb3IgYmFzZSBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHByb2ZpbGVcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBiYXNlQ3JlZGVudGlhbHNgIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhUVFAgb3B0aW9ucyBmb3IgU0RLXG4gICAqL1xuICByZWFkb25seSBodHRwT3B0aW9ucz86IFNka0h0dHBPcHRpb25zO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGluZGl2aWR1YWwgU0RLc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNka0h0dHBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb3h5IGFkZHJlc3MgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHByb3h5XG4gICAqL1xuICByZWFkb25seSBwcm94eUFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGNlcnRpZmljYXRlIGJ1bmRsZSB0aGF0IGNvbnRhaW5zIGEgY2VydCB0byBiZSB0cnVzdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjZXJ0aWZpY2F0ZSBidW5kbGVcbiAgICovXG4gIHJlYWRvbmx5IGNhQnVuZGxlUGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDcmVkZW50aWFscyB7XG4gIC8qKlxuICAgKiBVc2Ugbm8gYmFzZSBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBUaGVyZSB3aWxsIGJlIG5vIGN1cnJlbnQgYWNjb3VudCBhbmQgbm8gY3VycmVudCByZWdpb24gZHVyaW5nIHN5bnRoZXNpcy4gVG9cbiAgICogc3VjY2Vzc2Z1bGx5IGRlcGxveSB3aXRoIHRoaXMgc2V0IG9mIGJhc2UgY3JlZGVudGlhbHM6XG4gICAqXG4gICAqIC0gVGhlIENESyBhcHAgbXVzdCBwcm92aWRlIGNvbmNyZXRlIGFjY291bnRzIGFuZCByZWdpb25zIGR1cmluZyBzeW50aGVzaXNcbiAgICogLSBDcmVkZW50aWFsIHBsdWdpbnMgbXVzdCBiZSBpbnN0YWxsZWQgdG8gcHJvdmlkZSBjcmVkZW50aWFscyBmb3IgdGhvc2VcbiAgICogICBhY2NvdW50cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbm9uZSgpOiBCYXNlQ3JlZGVudGlhbHMge1xuICAgIHJldHVybiBuZXcgY2xhc3MgZXh0ZW5kcyBCYXNlQ3JlZGVudGlhbHMge1xuICAgICAgcHVibGljIGFzeW5jIG1ha2VTZGtDb25maWcoKTogUHJvbWlzZTxTZGtCYXNlQ29uZmlnPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY3JlZGVudGlhbFByb3ZpZGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvbm8tdGhyb3ctZGVmYXVsdC1lcnJvclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjcmVkZW50aWFscyBhdmFpbGFibGUgZHVlIHRvIEJhc2VDcmVkZW50aWFscy5ub25lKCknKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiAnQmFzZUNyZWRlbnRpYWxzLm5vbmUoKSc7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW4gYmFzZSBjcmVkZW50aWFscyBhbmQgYmFzZSByZWdpb24gdGhlIHNhbWUgd2F5IHRoZSBBV1MgQ0xJIHdvdWxkXG4gICAqXG4gICAqIENyZWRlbnRpYWxzIGFuZCByZWdpb24gd2lsbCBiZSByZWFkIGZyb20gdGhlIGVudmlyb25tZW50IGZpcnN0LCBmYWxsaW5nIGJhY2tcbiAgICogdG8gSU5JIGZpbGVzIG9yIG90aGVyIHNvdXJjZXMgaWYgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBUaGUgcHJvZmlsZSBuYW1lIGlzIGNvbmZpZ3VyYWJsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXdzQ2xpQ29tcGF0aWJsZShvcHRpb25zOiBBd3NDbGlDb21wYXRpYmxlT3B0aW9ucyA9IHt9KTogQmFzZUNyZWRlbnRpYWxzIHtcbiAgICByZXR1cm4gbmV3IGNsYXNzIGV4dGVuZHMgQmFzZUNyZWRlbnRpYWxzIHtcbiAgICAgIHB1YmxpYyBtYWtlU2RrQ29uZmlnKHNlcnZpY2VzOiBTZGtQcm92aWRlclNlcnZpY2VzKTogUHJvbWlzZTxTZGtCYXNlQ29uZmlnPiB7XG4gICAgICAgIGNvbnN0IGF3c0NsaSA9IG5ldyBBd3NDbGlDb21wYXRpYmxlKHNlcnZpY2VzLmlvSGVscGVyLCBzZXJ2aWNlcy5yZXF1ZXN0SGFuZGxlciA/PyB7fSwgc2VydmljZXMubG9nZ2VyKTtcbiAgICAgICAgcmV0dXJuIGF3c0NsaS5iYXNlQ29uZmlnKG9wdGlvbnMucHJvZmlsZSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGBCYXNlQ3JlZGVudGlhbHMuYXdzQ2xpQ29tcGF0aWJsZSgke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSlgO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVXNlIGEgY3VzdG9tIFNESyBpZGVudGl0eSBwcm92aWRlciBmb3IgdGhlIGJhc2UgY3JlZGVudGlhbHNcbiAgICpcbiAgICogSWYgeW91ciBwcm92aWRlciB1c2VzIFNUUyBjYWxscyB0byBvYnRhaW4gYmFzZSBjcmVkZW50aWFscywgeW91IG11c3QgbWFrZVxuICAgKiBzdXJlIHRvIGFsc28gY29uZmlndXJlIHRoZSBuZWNlc3NhcnkgSFRUUCBvcHRpb25zIChsaWtlIHByb3h5IGFuZCB1c2VyXG4gICAqIGFnZW50KSBhbmQgdGhlIHJlZ2lvbiBvbiB0aGUgU1RTIGNsaWVudCBkaXJlY3RseTsgdGhlIHRvb2xraXQgY29kZSBjYW5ub3RcbiAgICogZG8gdGhpcyBmb3IgeW91LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b20ob3B0aW9uczogQ3VzdG9tQmFzZUNyZWRlbnRpYWxzT3B0aW9uKTogQmFzZUNyZWRlbnRpYWxzIHtcbiAgICByZXR1cm4gbmV3IGNsYXNzIGV4dGVuZHMgQmFzZUNyZWRlbnRpYWxzIHtcbiAgICAgIHB1YmxpYyBtYWtlU2RrQ29uZmlnKCk6IFByb21pc2U8U2RrQmFzZUNvbmZpZz4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICBjcmVkZW50aWFsUHJvdmlkZXI6IG9wdGlvbnMucHJvdmlkZXIsXG4gICAgICAgICAgZGVmYXVsdFJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgQmFzZUNyZWRlbnRpYWxzLmN1c3RvbSgke0pTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHByb3ZpZGVyOiAnLi4uJyxcbiAgICAgICAgfSl9KWA7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIFNESyBjb25maWcgZnJvbSB0aGUgQmFzZUNyZWRlbnRpYWxzIHNldHRpbmdzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbWFrZVNka0NvbmZpZyhzZXJ2aWNlczogU2RrUHJvdmlkZXJTZXJ2aWNlcyk6IFByb21pc2U8U2RrQmFzZUNvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ2xpQ29tcGF0aWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHByb2ZpbGUgdG8gcmVhZCBmcm9tIGB+Ly5hd3MvY3JlZGVudGlhbHNgLlxuICAgKlxuICAgKiBJZiBub3Qgc3VwcGxpZWQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEFXU19QUk9GSUxFIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2UgZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21CYXNlQ3JlZGVudGlhbHNPcHRpb24ge1xuICAvKipcbiAgICogVGhlIGNyZWRlbnRpYWxzIHByb3ZpZGVyIHRvIHVzZSB0byBvYnRhaW4gYmFzZSBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBJZiB5b3VyIHByb3ZpZGVyIHVzZXMgU1RTIGNhbGxzIHRvIG9idGFpbiBiYXNlIGNyZWRlbnRpYWxzLCB5b3UgbXVzdCBtYWtlXG4gICAqIHN1cmUgdG8gYWxzbyBjb25maWd1cmUgdGhlIG5lY2Vzc2FyeSBIVFRQIG9wdGlvbnMgKGxpa2UgcHJveHkgYW5kIHVzZXJcbiAgICogYWdlbnQpIG9uIHRoZSBTVFMgY2xpZW50IGRpcmVjdGx5OyB0aGUgdG9vbGtpdCBjb2RlIGNhbm5vdCBkbyB0aGlzIGZvciB5b3UuXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogU0RLdjNDb21wYXRpYmxlQ3JlZGVudGlhbFByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCByZWdpb24gdG8gc3ludGhlc2l6ZSBmb3JcbiAgICpcbiAgICogQ0RLIGFwcGxpY2F0aW9ucyBjYW4gb3ZlcnJpZGUgdGhpcyByZWdpb24uIE5PVEU6IHRoaXMgcmVnaW9uIHdpbGwgKm5vdCpcbiAgICogYWZmZWN0IGFueSBTVFMgY2FsbHMgbWFkZSBieSB0aGUgZ2l2ZW4gcHJvdmlkZXIsIGlmIGFueS4gWW91IG5lZWQgdG8gY29uZmlndXJlXG4gICAqIHlvdXIgY3JlZGVudGlhbCBwcm92aWRlciBzZXBhcmF0ZWx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAndXMtZWFzdC0xJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNka0Jhc2VDb25maWcge1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXI6IFNES3YzQ29tcGF0aWJsZUNyZWRlbnRpYWxQcm92aWRlcjtcblxuICByZWFkb25seSBkZWZhdWx0UmVnaW9uPzogc3RyaW5nO1xufVxuIl19
@@ -575,6 +575,17 @@ Resources:
575
575
  - ssm:GetParameters # CreateChangeSet uses this to evaluate any SSM parameters (like `CdkBootstrapVersion`)
576
576
  Resource:
577
577
  - Fn::Sub: "arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter${CdkBootstrapVersion}"
578
+ - Sid: Refactor
579
+ Effect: Allow
580
+ Action:
581
+ # Permissions needed to use the CDK CLI with stack refactor
582
+ - cloudformation:CreateStackRefactor
583
+ - cloudformation:DescribeStackRefactor
584
+ - cloudformation:ExecuteStackRefactor
585
+ - cloudformation:ListStackRefactorActions
586
+ - cloudformation:ListStackRefactors
587
+ - cloudformation:ListStacks
588
+ Resource: "*"
578
589
  Version: '2012-10-17'
579
590
  PolicyName: default
580
591
  RoleName:
@@ -672,7 +683,7 @@ Resources:
672
683
  Type: String
673
684
  Name:
674
685
  Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'
675
- Value: '27'
686
+ Value: '28'
676
687
  Outputs:
677
688
  BucketName:
678
689
  Description: The name of the S3 bucket owned by the CDK toolkit stack
@@ -1,4 +1,5 @@
1
- export { ExpandStackSelection, StackSelectionStrategy, StackSelector } from './stack-selector';
1
+ export { ExpandStackSelection, StackSelectionStrategy } from './stack-selector';
2
+ export type { StackSelector } from './stack-selector';
2
3
  export * from './cached-source';
3
4
  export * from './source-builder';
4
5
  export * from './types';
@@ -21,4 +21,4 @@ Object.defineProperty(exports, "StackSelectionStrategy", { enumerable: true, get
21
21
  __exportStar(require("./cached-source"), exports);
22
22
  __exportStar(require("./source-builder"), exports);
23
23
  __exportStar(require("./types"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUErRjtBQUF0RixzSEFBQSxvQkFBb0IsT0FBQTtBQUFFLHdIQUFBLHNCQUFzQixPQUFBO0FBQ3JELGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRXhwYW5kU3RhY2tTZWxlY3Rpb24sIFN0YWNrU2VsZWN0aW9uU3RyYXRlZ3ksIFN0YWNrU2VsZWN0b3IgfSBmcm9tICcuL3N0YWNrLXNlbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGVkLXNvdXJjZSc7XG5leHBvcnQgKiBmcm9tICcuL3NvdXJjZS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFnRjtBQUF2RSxzSEFBQSxvQkFBb0IsT0FBQTtBQUFFLHdIQUFBLHNCQUFzQixPQUFBO0FBRXJELGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRXhwYW5kU3RhY2tTZWxlY3Rpb24sIFN0YWNrU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3N0YWNrLXNlbGVjdG9yJztcbmV4cG9ydCB0eXBlIHsgU3RhY2tTZWxlY3RvciB9IGZyb20gJy4vc3RhY2stc2VsZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZWQtc291cmNlJztcbmV4cG9ydCAqIGZyb20gJy4vc291cmNlLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
@@ -15,8 +15,8 @@ export declare abstract class CloudAssemblySourceBuilder {
15
15
  * directory. This means that while the CloudAssembly is being used, no CDK
16
16
  * app synthesis can take place into that directory.
17
17
  *
18
- * @param builder the builder function
19
- * @param props additional configuration properties
18
+ * @param builder - the builder function
19
+ * @param props - additional configuration properties
20
20
  * @returns the CloudAssembly source
21
21
  */
22
22
  fromAssemblyBuilder(builder: AssemblyBuilder, props?: AssemblySourceProps): Promise<ICloudAssemblySource>;
@@ -27,7 +27,7 @@ export declare abstract class CloudAssemblySourceBuilder {
27
27
  * the CloudAssembly is being used, no CDK app synthesis can take place into
28
28
  * that directory.
29
29
  *
30
- * @param directory the directory of a already produced Cloud Assembly.
30
+ * @param directory - directory the directory of a already produced Cloud Assembly.
31
31
  * @returns the CloudAssembly source
32
32
  */
33
33
  fromAssemblyDirectory(directory: string, props?: AssemblyDirectoryProps): Promise<ICloudAssemblySource>;
@@ -45,7 +45,7 @@ export declare abstract class CloudAssemblySourceBuilder {
45
45
  * directory. This means that while the CloudAssembly is being used, no CDK
46
46
  * app synthesis can take place into that directory.
47
47
  *
48
- * @param props additional configuration properties
48
+ * @param props - additional configuration properties
49
49
  * @returns the CloudAssembly source
50
50
  */
51
51
  fromCdkApp(app: string, props?: FromCdkAppOptions): Promise<ICloudAssemblySource>;