@bnsights/bbsf-admin-portal 1.0.32 → 1.0.35

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 (60) hide show
  1. package/README.md +5 -0
  2. package/bnsights-bbsf-admin-portal-1.0.35.tgz +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +1248 -1118
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +9 -1
  6. package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +18 -14
  7. package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.component.js +6 -2
  8. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +6 -1
  9. package/esm2015/lib/Pages/departments/department/department.component.js +14 -15
  10. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +33 -42
  11. package/esm2015/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.js +2 -2
  12. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +21 -21
  13. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +21 -21
  14. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +44 -44
  15. package/esm2015/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.js +2 -1
  16. package/esm2015/lib/Pages/localizations/localizations.component.js +18 -17
  17. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +23 -21
  18. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +6 -6
  19. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +17 -13
  20. package/esm2015/lib/Pages/notifications/add/add.component.js +2 -1
  21. package/esm2015/lib/Pages/notifications/edit/edit.component.js +2 -1
  22. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +19 -17
  23. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +6 -6
  24. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +38 -38
  25. package/esm2015/lib/Pages/notifications/templates/templates.component.js +51 -45
  26. package/esm2015/lib/Pages/providers/provider/provider.component.js +22 -16
  27. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +36 -33
  28. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +5 -2
  29. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +11 -9
  30. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +25 -19
  31. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
  32. package/esm2015/lib/Pages/sectors/sector/sector.component.js +5 -5
  33. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +4 -4
  34. package/esm2015/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.js +1 -1
  35. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +1 -26
  36. package/esm2015/lib/Pages/shared/models/LocalizationModels/EditResourceModel.js +6 -1
  37. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.js +3 -3
  38. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.js +1 -1
  39. package/esm2015/lib/Pages/shared/models/UserModels/AddUserModel.js +3 -1
  40. package/esm2015/lib/Pages/shared/models/UserModels/EditUserModel.js +3 -1
  41. package/esm2015/lib/Pages/users/users.component.js +42 -37
  42. package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +73 -67
  43. package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +21 -1
  44. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +27 -19
  45. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +19 -19
  46. package/fesm2015/bnsights-bbsf-admin-portal.js +1249 -1116
  47. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  48. package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +1 -1
  49. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +1 -0
  50. package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +2 -0
  51. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +6 -7
  52. package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +3 -4
  53. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +2 -2
  54. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +1 -0
  55. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +2 -0
  56. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +2 -0
  57. package/package.json +2 -2
  58. package/bnsights-bbsf-admin-portal-1.0.32.tgz +0 -0
  59. package/esm2015/lib/Pages/shared/Enums/ADWindowsType.js +0 -6
  60. package/lib/Pages/shared/Enums/ADWindowsType.d.ts +0 -4
@@ -247,6 +247,7 @@ export class ConfigurationComponent {
247
247
  this.Key.Type = InputType.Text;
248
248
  this.Key.IsRequired = true;
249
249
  this.Key.Value = null;
250
+ this.Key.MaxLength = 256;
250
251
  this.Scope = new DropdownOptions();
251
252
  this.Scope.Name = "Scope";
252
253
  this.Scope.LabelKey = "Scope";
@@ -303,12 +304,14 @@ export class ConfigurationComponent {
303
304
  this.Value.Type = InputType.Text;
304
305
  this.Value.Value = null;
305
306
  this.Value.IsRequired = true;
307
+ this.Value.MaxLength = 5000;
306
308
  this.DefaultValue = new TextBoxOptions();
307
309
  this.DefaultValue.Name = "DefaultValue";
308
310
  this.DefaultValue.LabelKey = "DefaultValue";
309
311
  this.DefaultValue.Type = InputType.Text;
310
312
  this.DefaultValue.Value = null;
311
313
  this.DefaultValue.IsRequired = true;
314
+ this.DefaultValue.MaxLength = 5000;
312
315
  this.ShowValueAndDefaultValue = true;
313
316
  break;
314
317
  case ConfigurationValueTypes.Toggle:
@@ -499,12 +502,14 @@ export class ConfigurationComponent {
499
502
  this.EditTextValue.Type = InputType.Text;
500
503
  this.EditTextValue.Value = configuration.textValue;
501
504
  this.EditTextValue.IsRequired = true;
505
+ this.EditTextValue.MaxLength = 5000;
502
506
  this.EditTextDefaultValue = new TextBoxOptions();
503
507
  this.EditTextDefaultValue.Name = "EditTextDefaultValue";
504
508
  this.EditTextDefaultValue.LabelKey = "DefaultValue";
505
509
  this.EditTextDefaultValue.Type = InputType.Text;
506
510
  this.EditTextDefaultValue.Value = configuration.defaultTextValue;
507
511
  this.EditTextDefaultValue.IsRequired = true;
512
+ this.EditTextDefaultValue.MaxLength = 5000;
508
513
  break;
509
514
  case ConfigurationValueTypes.Toggle:
510
515
  this.ShowValueToggleAndDefaultValue = true;
@@ -765,4 +770,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
765
770
  type: ViewChild,
766
771
  args: ['ConfirmationModalControl', { static: false }]
767
772
  }] } });
768
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1oRyxNQUFNLE9BQU8sc0JBQXNCO0lBNEZqQyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzdFLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGtCQUFzQyxFQUFVLHFCQUE0QyxFQUM1RixZQUFzQixFQUFVLHFCQUE0QztRQUhsRSxnQkFBVyxHQUFYLFdBQVcs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ICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucywgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Db25maWd1cmF0aW9uTW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRERMU291cmNlLCBDb25maWd1cmF0aW9uVmFsdWVUeXBlcywgU2NvcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9Db25maWd1cmF0aW9uL1wiO1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBDb25maWd1cmF0aW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQ29uZmlndXJhdGlvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFNjb3Blc0xpc3Q6IGFueVtdID0gW107XHJcbiAgUGVybWlzc2lvbkxpc3Q6IGFueVtdID0gW107XHJcbiAgVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cEl0ZW1zTGlzdDogYW55W10gPSBbXTtcclxuICBWYWx1ZVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFZhbHVlU291cmNlTGlzdDogYW55W10gPSBbXTtcclxuICBDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvL0FkZCxFZGl0IHJlcXVpcmVkIGZsYWdzXHJcbiAgU2hvd1Blcm1pc3Npb25MaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1VzZXJzTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dEcm9wRG93blNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBJdGVtc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93U291cmNlRnVuY3Rpb25EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmZpZ3VyYXRpb246IGFueSA9IG51bGw7XHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBLZXk6IFRleHRCb3hPcHRpb25zO1xyXG4gIFZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgU291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgU291cmNlRnVuY0RlZmF1bHRWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgRGVmYXVsdFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgU2NvcGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQ2F0ZWdvcnk6IERyb3Bkb3duT3B0aW9ucztcclxuICBQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgVXNlcjogRHJvcGRvd25PcHRpb25zO1xyXG4gIFNvdXJjZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cDogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgRWRpdEtleTogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VGV4dFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0RGVmYXVsdFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VQYXRoOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRGdW5jdGlvblNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFZhbHVlVG9nZ2VsZTogVG9nZ2xlU2xpZGVPcHRpb25zID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gIEVkaXREZWZhdWx0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdFNjb3BlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFR5cGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRVc2VyOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXA6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XHJcbiAgQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQ6IHN0cmluZztcclxuICBFZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRDogc3RyaW5nO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRDogc3RyaW5nO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBDb25maWd1cmF0aW9uc1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICAvL29uIGxhbmcgY2hhbmdlZFxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKCk7XHJcblxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0Q29uZmlndXJhdGlvbnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldENvbmZpZ3VyYXRpb25MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vQWRkIGNvbmZpZ3VyYXRpb25cclxuICBzaG93QWRkQ29uZmlndXJhdGlvbk1vZGFsKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuXHJcbiAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5yZXNldENvbmZpZ3VyYXRpb25GbGFncygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIC8vTGlzdHMgbG9hZGluZ1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5TY29wZXNMaXN0ID0gcmVzdWx0T2JqLnNjb3BlcztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uTGlzdDtcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIHRoaXMuTG9va3Vwc0xpc3QgPSByZXN1bHRPYmoubG9va3VwcztcclxuICAgICAgdGhpcy5WYWx1ZVR5cGVMaXN0ID0gcmVzdWx0T2JqLnZhbHVlVHlwZTtcclxuICAgICAgdGhpcy5WYWx1ZVNvdXJjZUxpc3QgPSByZXN1bHRPYmoudmFsdWVTb3VyY2U7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnlMaXN0ID0gcmVzdWx0T2JqLmNhdGVnb3J5O1xyXG5cclxuXHJcbiAgICAgIC8vRm9ybSBhbmQgY29udHJvbHMgcmVpbml0aWFsaXplXHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1cclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQ29uZmlndXJhdGlvbk1vZGVsO1xyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZENvbmZpZ3VyYXRpb25GdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICAvL1N0YXRpYyBjb250cm9sc1xyXG4gICAgICB0aGlzLktleSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLktleS5OYW1lID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5LZXkuTGFiZWxLZXkgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLktleS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuS2V5LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLktleS5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLlNjb3BlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNjb3BlLk5hbWUgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUuTGFiZWxLZXkgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuU2NvcGUuRGF0YVNvdXJjZSA9IHRoaXMuU2NvcGVzTGlzdDtcclxuICAgICAgdGhpcy5TY29wZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlNjb3BlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TY29wZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UeXBlLk5hbWUgPSBcIlR5cGVcIjtcclxuICAgICAgdGhpcy5UeXBlLkxhYmVsS2V5ID0gXCJUeXBlXCI7XHJcbiAgICAgIHRoaXMuVHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5UeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlVHlwZUxpc3Q7XHJcbiAgICAgIHRoaXMuVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkNhdGVnb3J5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5Lk5hbWUgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuTGFiZWxLZXkgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuRGF0YVNvdXJjZSA9IHRoaXMuQ2F0ZWdvcnlMaXN0O1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuTmFtZSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlVzZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVXNlci5OYW1lID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuVXNlci5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLlVzZXIuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuVXNlci5EYXRhU291cmNlID0gdGhpcy5Vc2Vyc0xpc3Q7XHJcbiAgICAgIHRoaXMuVXNlci5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIENoYW5nZVR5cGVWYWx1ZShrZXkpIHtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMucmVtb3ZlRm9ybUNvbnRyb2xzKCk7XHJcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICB0aGlzLlZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5OYW1lID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5OYW1lID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLlZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRvZ2dsZTpcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuTmFtZSA9IFwiVmFsdWVUb2dnZWxcIjtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5OYW1lID0gXCJEZWZhdWx0VmFsdWVUb2dnZWxcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICB0aGlzLlNvdXJjZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5OYW1lID0gXCJTb3VyY2VcIjtcclxuICAgICAgICB0aGlzLlNvdXJjZS5MYWJlbEtleSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuRGF0YVNvdXJjZSA9IHRoaXMuVmFsdWVTb3VyY2VMaXN0O1xyXG4gICAgICAgIHRoaXMuU291cmNlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0Ryb3BEb3duU291cmNlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENoYW5nZVNvdXJjZShrZXkpIHtcclxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cDpcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJGdW5jdGlvblNvdXJjZVBhdGhcIik7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY1ZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAuTmFtZSA9IFwiTG9va3VwXCI7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAuTGFiZWxLZXkgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cHNMaXN0O1xyXG4gICAgICAgIHRoaXMuTG9va3VwLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5Mb29rdXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25ERExTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLk5hbWUgPSBcIkZ1bmN0aW9uU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLkxhYmVsVmFsdWUgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5MYWJlbEtleSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcm1Db250cm9scygpIHtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJEZWZhdWx0VmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkZ1bmN0aW9uU291cmNlUGF0aFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VMb29rdXAoa2V5LCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZExvb2t1cEl0ZW1zKGtleSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdCA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuTG9va3VwSXRlbXNMaXN0ID0gUmVzdWx0Lmxvb2t1cEl0ZW1zO1xyXG4gICAgICBpZiAodGhpcy5TaG93TG9va3VwSXRlbXNMaXN0KSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuTmFtZSA9IFwiTG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNob3dBc3RlcmlzayA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuTmFtZSA9IFwiRWRpdExvb2t1cFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkQ29uZmlndXJhdGlvbk1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgQ29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5LZXkgPSBSZXN1bHRNb2RlbC5LZXk7XHJcbiAgICBBZGRNb2RlbC5TY29wZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5TY29wZTtcclxuICAgIEFkZE1vZGVsLlZhbHVlVHlwZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5UeXBlO1xyXG4gICAgQWRkTW9kZWwuQ2F0ZWdvcnlJRF9HVUlEID0gUmVzdWx0TW9kZWwuQ2F0ZWdvcnk7XHJcbiAgICBBZGRNb2RlbC5UZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5WYWx1ZTtcclxuICAgIEFkZE1vZGVsLkRlZmF1bHRUZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5EZWZhdWx0VmFsdWU7XHJcbiAgICBBZGRNb2RlbC5Cb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5WYWx1ZVRvZ2dlbDtcclxuICAgIEFkZE1vZGVsLkRlZmF1bHRCb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5EZWZhdWx0VmFsdWVUb2dnZWw7XHJcbiAgICBBZGRNb2RlbC5Tb3VyY2VGdW5jdGlvbk5hbWUgPSBSZXN1bHRNb2RlbC5GdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICBBZGRNb2RlbC5Vc2VySURfR1VJRCA9IFJlc3VsdE1vZGVsLlVzZXI7XHJcbiAgICBBZGRNb2RlbC5TZWxlY3RlZExvb2t1cElEX0dVSUQgPSBSZXN1bHRNb2RlbC5Mb29rdXA7XHJcbiAgICBBZGRNb2RlbC5WYWx1ZSA9IFJlc3VsdE1vZGVsLkxvb2t1cFZhbHVlO1xyXG4gICAgQWRkTW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuTG9va3VwRGVmYXVsdFZhbHVlO1xyXG5cclxuICAgIEFkZE1vZGVsLlBlcm1pc3Npb25TZXRJRF9HVUlEID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldDtcclxuICAgIEFkZE1vZGVsLlZhbHVlU291cmNlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlNvdXJjZTtcclxuXHJcbiAgICBsZXQgc291cmNlSXRlbSA9IHRoaXMuVmFsdWVTb3VyY2VMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkudG9Mb3dlckNhc2UoKSA9PSBBZGRNb2RlbC5WYWx1ZVNvdXJjZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbSlbMF07XHJcbiAgICBpZiAoc291cmNlSXRlbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID0gc291cmNlSXRlbS52YWx1ZTtcclxuICAgICAgaWYgKENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID09IFwiRnVuY3Rpb25cIikge1xyXG4gICAgICAgIEFkZE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuU291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgIEFkZE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRDb25maWd1cmF0aW9uRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmFkZENvbmZpZ3VyYXRpb24oQWRkTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0VkaXQgY29uZmlndXJhdGlvblxyXG4gIHNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nLCBFZGl0Q29uZmlndXJhdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25JZCA9IGNvbmZpZ3VyYXRpb25JZDtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmdldEVkaXRDb25maWd1cmF0aW9uRGF0YShjb25maWd1cmF0aW9uSWQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vRWRpdCBtb2RlbFxyXG4gICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgLy9Mb2FkIGxvb2t1cHMgbGlzdFxyXG4gICAgICB0aGlzLkxvb2t1cHNMaXN0ID0gcmVzdWx0T2JqLmxvb2t1cHM7XHJcbiAgICAgIC8vTG9hZCBsb29rdXBJdGVtcyBsaXN0XHJcbiAgICAgIGxldCBsb29rdXBJdGVtcyA9IHJlc3VsdE9iai5sb29rdXBJdGVtc1NvdXJjZTtcclxuICAgICAgLy9Mb2FkIHBlcm1pc3Npb25zZXRzIGxpc3RcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uU2V0TGlzdDtcclxuICAgICAgLy9Mb2FkIHVzZXJzIGxpc3RcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIC8vRm9ybSBhbmQgY29udHJvbHMgcmVpbml0aWFsaXplXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbDtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25GdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRCA9IGNvbmZpZ3VyYXRpb24udmFsdWVUeXBlSURfR1VJRC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEID0gY29uZmlndXJhdGlvbi5zY29wZUlEX0dVSUQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQgPSBjb25maWd1cmF0aW9uLnZhbHVlU291cmNlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5FZGl0S2V5ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5OYW1lID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LkxhYmVsS2V5ID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0S2V5LklzUmVxdWlyZWQgPSAhdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuICAgICAgdGhpcy5FZGl0S2V5LlZhbHVlID0gY29uZmlndXJhdGlvbi5rZXk7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5NYXhMZW5ndGggPSAyNTY7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5Jc0Rpc2FibGVkID0gdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuXHJcbiAgICAgIHN3aXRjaCAodGhpcy5Db25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRCkge1xyXG4gICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLk5hbWUgPSBcIkVkaXRUZXh0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUuVmFsdWUgPSBjb25maWd1cmF0aW9uLnRleHRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0VGV4dERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuVmFsdWUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRUZXh0VmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ub2dnbGU6XHJcbiAgICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuTmFtZSA9IFwiRWRpdFZhbHVlVG9nZ2VsZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLlZhbHVlID0gY29uZmlndXJhdGlvbi5ib29sVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuTmFtZSA9IFwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdEJvb2xWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQpIHtcclxuICAgICAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cDpcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuTmFtZSA9IFwiRWRpdExvb2t1cFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5MYWJlbEtleSA9IFwiTG9va3VwXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24uc2VsZWN0ZWRMb29rdXBJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5EYXRhU291cmNlID0gbG9va3VwSXRlbXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24udmFsdWU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuTmFtZSA9IFwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSBsb29rdXBJdGVtcztcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFZhbHVlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25ERExTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLk5hbWUgPSBcIkVkaXRGdW5jdGlvblNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguTGFiZWxLZXkgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uc291cmNlRnVuY3Rpb25OYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRTb3VyY2VGdW5jdGlvbkRyb3BEb3duSXRlbXMoY29uZmlndXJhdGlvbi5zb3VyY2VGdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZSA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24udmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gcmVzdWx0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi5kZWZhdWx0VmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIC8vcmVzZXQgc2NvcGVcclxuICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgIC8vY29uc29sZS5sb2coc2NvcEl0ZW0pO1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQpIHtcclxuICAgICAgICBjYXNlIFNjb3BlLlBlcm1pc3Npb25zZXQ6XHJcbiAgICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5OYW1lID0gXCJFZGl0UGVybWlzc2lvblNldFwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSBjb25maWd1cmF0aW9uLnBlcm1pc3Npb25TZXRJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTY29wZS5Vc2VyOlxyXG4gICAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLk5hbWUgPSBcIkVkaXRVc2VyXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5EYXRhU291cmNlID0gdGhpcy5Vc2Vyc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNlbGVjdGVkSXRlbXMgPSBjb25maWd1cmF0aW9uLnVzZXJJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdENvbmZpZ3VyYXRpb25Nb2RhbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm0udmFsdWU7XHJcbiAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcbiAgICBsZXQgRWRpdE1vZGVsOiBDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgQ29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuQ29uZmlndXJhdGlvbklkO1xyXG4gICAgRWRpdE1vZGVsLlZhbHVlVHlwZUlEX0dVSUQgPSB0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEO1xyXG4gICAgRWRpdE1vZGVsLlNjb3BlSURfR1VJRCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQ7XHJcbiAgICBFZGl0TW9kZWwuS2V5ID0gdGhpcy5Qcm9kdWN0aW9uTW9kZSA/IHRoaXMuY29uZmlndXJhdGlvbi5rZXkgOiBSZXN1bHRNb2RlbC5LZXk7XHJcbiAgICBFZGl0TW9kZWwuVmFsdWVTb3VyY2VJRF9HVUlEID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQ7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVGV4dDpcclxuICAgICAgICBFZGl0TW9kZWwuVGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFRleHRWYWx1ZTtcclxuICAgICAgICBFZGl0TW9kZWwuRGVmYXVsdFRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRUZXh0RGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRvZ2dsZTpcclxuICAgICAgICBFZGl0TW9kZWwuQm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFZhbHVlVG9nZ2VsZTtcclxuICAgICAgICBFZGl0TW9kZWwuRGVmYXVsdEJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLkRyb3Bkb3duTGlzdDpcclxuICAgICAgICBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQgPT0gQ29uZmlndXJhdGlvbkRETFNvdXJjZS5Mb29rdXApIHtcclxuICAgICAgICAgIEVkaXRNb2RlbC5TZWxlY3RlZExvb2t1cElEX0dVSUQgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdExvb2t1cFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwRGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEX0dVSUQgPT0gQ29uZmlndXJhdGlvbkRETFNvdXJjZS5GdW5jdGlvbikge1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlNvdXJjZUZ1bmN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRGdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0U291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCA9PSBTY29wZS5Vc2VyKSB7XHJcbiAgICAgIEVkaXRNb2RlbC5Vc2VySURfR1VJRCA9IFJlc3VsdE1vZGVsLkVkaXRVc2VyO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCA9PSBTY29wZS5QZXJtaXNzaW9uc2V0KVxyXG4gICAgICBFZGl0TW9kZWwuUGVybWlzc2lvblNldElEX0dVSUQgPSBSZXN1bHRNb2RlbC5FZGl0UGVybWlzc2lvblNldDtcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbkZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuZWRpdENvbmZpZ3VyYXRpb24oRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9BZGQsRWRpdCByZXF1aXJlZCBmdW5jdGlvbnNcclxuICBDaGFuZ2VTY29wZVZhbHVlKGtleSkge1xyXG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFNjb3BlLkFwcDpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlVzZXJcIilcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJQZXJtaXNzaW9uU2V0XCIpXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFNjb3BlLlBlcm1pc3Npb25zZXQ6XHJcbiAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlVzZXJcIilcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2NvcGUuVXNlcjpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiUGVybWlzc2lvblNldFwiKVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKSB7XHJcbiAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWUgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dEcm9wRG93blNvdXJjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gZmFsc2U7XHJcbiAgfVxyXG4gIFNlYXJjaEZvckZ1bmN0aW9uKGlzQWRkOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gaXNBZGQgPyB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlIDogdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm0udmFsdWU7XHJcbiAgICBsZXQgZnVuY3Rpb25OYW1lID0gaXNBZGQgPyBSZXN1bHRNb2RlbC5GdW5jdGlvblNvdXJjZVBhdGggOiBSZXN1bHRNb2RlbC5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZFNvdXJjZUZ1bmN0aW9uRHJvcERvd25JdGVtcyhmdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEpIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIlNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5OYW1lID0gXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNTAwKSB7XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHsgLy80MDRcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KVxyXG4gIH1cclxuICBjaGFuZ2VTb3VyY2VGdW5jdGlvbigpIHtcclxuICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuICAvL0RlbGV0ZSBjb25maWd1cmF0aW9uXHJcbiAgc2hvd0RlbGV0ZUNvbmZpZ3VyYXRpb25Nb2RhbChjb25maWd1cmF0aW9uSUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVDb25maWd1cmF0aW9uSWQgPSBjb25maWd1cmF0aW9uSUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbklkKTtcclxuXHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVDb25maWd1cmF0aW9uO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb25maWd1cmF0aW9uID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmRlbGV0ZUNvbmZpZ3VyYXRpb24oaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiPlxyXG5cclxuICAgIDwhLS0gYmVnaW46OkhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPCEtLShPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiAtLT5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAgW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJDb25maWd1cmF0aW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiB0aXRsZT1cIkFkZFwiIChjbGljayk9XCJzaG93QWRkQ29uZmlndXJhdGlvbk1vZGFsKEFkZENvbmZpZ3VyYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gZW5kOjpIZWFkZXIgLS0+XHJcbiAgICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIGNvbnRhaW5lciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiS2V5XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWYWx1ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2NvcGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlVzZXJQZXJtaXNzaW9uU2V0XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IENvbmZpZ3VyYXRpb24gb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7Q29uZmlndXJhdGlvbi5rZXl9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3tDb25maWd1cmF0aW9uLnZhbHVlfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPiB7e0NvbmZpZ3VyYXRpb24udmFsdWVUeXBlTmFtZVN0cn19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD57e0NvbmZpZ3VyYXRpb24uc2NvcGVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7Q29uZmlndXJhdGlvbi5wZXJtaXNzaW9uU2V0TmFtZX19e3tDb25maWd1cmF0aW9uLnVzZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29uZmlnXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2NvbmZpZz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRDb25maWd1cmF0aW9uTW9kYWwoQ29uZmlndXJhdGlvbi5pRF9HVUlELCBFZGl0Q29uZmlndXJhdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RlbGV0ZUNvbmZpZ3VyYXRpb25Nb2RhbChDb25maWd1cmF0aW9uLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8IS0tIGVuZDo6VGFibGUgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBlbmQ6OlRhYmxlIGNvbnRhaW5lciAtLT5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGJlZ2luIHBhZ2luZy0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldENvbmZpZ3VyYXRpb25MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiQ29uZmlndXJhdGlvblBhZ2luZ1wiIFtncm91cF09XCJDb25maWd1cmF0aW9uRm9ybVwiICNDb25maWd1cmF0aW9uUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gRW5kIHBhZ2luZy0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuPCEtLSBBZGQgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkQ29uZmlndXJhdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkQ29uZmlndXJhdGlvblwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIktleVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJDYXRlZ29yeVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlNjb3BlXCIgKE9uQ2hhbmdlKT1cIkNoYW5nZVNjb3BlVmFsdWUoJGV2ZW50KVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiUGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJUeXBlXCIgKE9uQ2hhbmdlKT1cIkNoYW5nZVR5cGVWYWx1ZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkRlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiVmFsdWVUb2dnZWxcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJEZWZhdWx0VmFsdWVUb2dnZWxcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU291cmNlXCIgKm5nSWY9XCJTaG93RHJvcERvd25Tb3VyY2VcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlU291cmNlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvblBhdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJGdW5jdGlvblNvdXJjZVBhdGhcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU291cmNlRnVuY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3JcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU291cmNlRnVuY3Rpb25Ob3RGb3VuZFwiKX19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJTZWFyY2hGb3JGdW5jdGlvbih0cnVlKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU291cmNlRnVuY1ZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIlNob3dMb29rdXBMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwXCIgKE9uQ2hhbmdlKT1cIkNoYW5nZUxvb2t1cCgkZXZlbnQsdHJ1ZSlcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cFZhbHVlXCIgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMb29rdXBEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlQ29uZmlndXJhdGlvbk1vZGFsIGlkPVwiQ2xvc2VDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLUVkaXQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0Q29uZmlndXJhdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZmlndXJhdGlvblwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRLZXlcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFBlcm1pc3Npb25TZXRcIiAqbmdJZj1cIlNob3dQZXJtaXNzaW9uTGlzdFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0VXNlclwiICpuZ0lmPVwiU2hvd1VzZXJzTGlzdFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGV4dFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGV4dERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkVkaXRWYWx1ZVRvZ2dlbGVcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIiAqbmdJZj1cIlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvblBhdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU291cmNlRnVuY3Rpb24oKVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTb3VyY2VGdW5jdGlvbk5vdEZvdW5kXCIpfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIG1iLTRcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIlNlYXJjaEZvckZ1bmN0aW9uKGZhbHNlKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+PGkgY2xhc3M9XCJmYXMgZmEtc2VhcmNoXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICBbb3B0aW9uc109XCJFZGl0TG9va3VwXCIgKm5nSWY9XCJTaG93TG9va3VwTGlzdFwiIChPbkNoYW5nZSk9XCJDaGFuZ2VMb29rdXAoJGV2ZW50LGZhbHNlKVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCIgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAgW29wdGlvbnNdPVwiRWRpdExvb2t1cFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0Q29uZmlndXJhdGlvbk1vZGFsIGlkPVwiQ2xvc2VFZGl0Q29uZmlndXJhdGlvbk1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgW2Rpc2FibGVkXT1cInNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tZGVsZXRlZCBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbiJdfQ==
773
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1oRyxNQUFNLE9BQU8sc0JBQXNCO0lBNEZqQyxZQUFvQixXQUF3QixFQUFVLGVBQWdDLEVBQzdFLGNBQThCLEVBQVUsb0JBQTBDLEVBQ2pGLGtCQUFzQyxFQUFVLHFCQUE0QyxFQUM1RixZQUFzQixFQUFVLHFCQUE0QztRQUhsRSxnQkFBVyxHQUFYLFdBQVcs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QUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7Z1VBZWlFLGFBQWE7c0JBQTVFLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTRFSix3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25ERExTb3VyY2UsIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLCBTY29wZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL0NvbmZpZ3VyYXRpb24vXCI7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIENvbmZpZ3VyYXRpb25QYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBDb25maWd1cmF0aW9uUGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlndXJhdGlvblBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgU2NvcGVzTGlzdDogYW55W10gPSBbXTtcclxuICBQZXJtaXNzaW9uTGlzdDogYW55W10gPSBbXTtcclxuICBVc2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9va3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9va3VwSXRlbXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFZhbHVlVHlwZUxpc3Q6IGFueVtdID0gW107XHJcbiAgVmFsdWVTb3VyY2VMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIENhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcclxuXHJcblxyXG4gIC8vQWRkLEVkaXQgcmVxdWlyZWQgZmxhZ3NcclxuICBTaG93UGVybWlzc2lvbkxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93VXNlcnNMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd0xvb2t1cExpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93VmFsdWVBbmREZWZhdWx0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93U291cmNlRnVuY3Rpb25QYXRoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd0Ryb3BEb3duU291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd0xvb2t1cEl0ZW1zTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dTb3VyY2VGdW5jdGlvbkRhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZmlndXJhdGlvbjogYW55ID0gbnVsbDtcclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIEtleTogVGV4dEJveE9wdGlvbnM7XHJcbiAgVmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIERlZmF1bHRWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRnVuY3Rpb25Tb3VyY2VQYXRoOiBUZXh0Qm94T3B0aW9ucztcclxuICBTb3VyY2VGdW5jVmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBTb3VyY2VGdW5jRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgVmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBTY29wZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBDYXRlZ29yeTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBVc2VyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgU291cmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuICBMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBFZGl0S2V5OiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFRleHREZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICBFZGl0U2NvcGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0VHlwZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFVzZXI6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdExvb2t1cDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBDb25maWd1cmF0aW9uVmFsdWVUeXBlSURfR1VJRDogc3RyaW5nO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEOiBzdHJpbmc7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRF9HVUlEOiBzdHJpbmc7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIENvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIC8vUGFnZSBoZWFkZXIgKGJyZWFkY3J1bWIgYW5kIHRpdGxlKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmZpZ3VyYXRpb25cIilcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG5cclxuICAgIC8vb24gbGFuZyBjaGFuZ2VkXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKTtcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guUGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIilcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRDb25maWd1cmF0aW9uc0J5RmlsdGVyJztcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgY29uZmlndXJhdGlvblxyXG4gIHNob3dBZGRDb25maWd1cmF0aW9uTW9kYWwoQWRkQ29uZmlndXJhdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgLy9MaXN0cyBsb2FkaW5nXHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLlNjb3Blc0xpc3QgPSByZXN1bHRPYmouc2NvcGVzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25MaXN0ID0gcmVzdWx0T2JqLnBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlVzZXJzTGlzdCA9IHJlc3VsdE9iai51c2VycztcclxuICAgICAgdGhpcy5Mb29rdXBzTGlzdCA9IHJlc3VsdE9iai5sb29rdXBzO1xyXG4gICAgICB0aGlzLlZhbHVlVHlwZUxpc3QgPSByZXN1bHRPYmoudmFsdWVUeXBlO1xyXG4gICAgICB0aGlzLlZhbHVlU291cmNlTGlzdCA9IHJlc3VsdE9iai52YWx1ZVNvdXJjZTtcclxuICAgICAgdGhpcy5DYXRlZ29yeUxpc3QgPSByZXN1bHRPYmouY2F0ZWdvcnk7XHJcblxyXG5cclxuICAgICAgLy9Gb3JtIGFuZCBjb250cm9scyByZWluaXRpYWxpemVcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRDb25maWd1cmF0aW9uTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQ29uZmlndXJhdGlvbkZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIC8vU3RhdGljIGNvbnRyb2xzXHJcbiAgICAgIHRoaXMuS2V5ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuS2V5Lk5hbWUgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLktleS5MYWJlbEtleSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuS2V5LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5LZXkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuS2V5LlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5LZXkuTWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgdGhpcy5TY29wZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5TY29wZS5OYW1lID0gXCJTY29wZVwiO1xyXG4gICAgICB0aGlzLlNjb3BlLkxhYmVsS2V5ID0gXCJTY29wZVwiO1xyXG4gICAgICB0aGlzLlNjb3BlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlNjb3BlLkRhdGFTb3VyY2UgPSB0aGlzLlNjb3Blc0xpc3Q7XHJcbiAgICAgIHRoaXMuU2NvcGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TY29wZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuU2NvcGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVHlwZS5OYW1lID0gXCJUeXBlXCI7XHJcbiAgICAgIHRoaXMuVHlwZS5MYWJlbEtleSA9IFwiVHlwZVwiO1xyXG4gICAgICB0aGlzLlR5cGUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuVHlwZS5EYXRhU291cmNlID0gdGhpcy5WYWx1ZVR5cGVMaXN0O1xyXG4gICAgICB0aGlzLlR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5DYXRlZ29yeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5OYW1lID0gXCJDYXRlZ29yeVwiO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LkxhYmVsS2V5ID0gXCJDYXRlZ29yeVwiO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LkRhdGFTb3VyY2UgPSB0aGlzLkNhdGVnb3J5TGlzdDtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0Lk5hbWUgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Vc2VyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlVzZXIuTmFtZSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLlVzZXIuTGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5Vc2VyLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlVzZXIuRGF0YVNvdXJjZSA9IHRoaXMuVXNlcnNMaXN0O1xyXG4gICAgICB0aGlzLlVzZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Vc2VyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Vc2VyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRDb25maWd1cmF0aW9uTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBDaGFuZ2VUeXBlVmFsdWUoa2V5KSB7XHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLnJlbW92ZUZvcm1Db250cm9scygpO1xyXG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRleHQ6XHJcbiAgICAgICAgdGhpcy5WYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuTmFtZSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5WYWx1ZS5NYXhMZW5ndGggPSA1MDAwO1xyXG5cclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLk1heExlbmd0aCA9IDUwMDA7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ub2dnbGU6XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLk5hbWUgPSBcIlZhbHVlVG9nZ2VsXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlVG9nZ2VsLlZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwuTmFtZSA9IFwiRGVmYXVsdFZhbHVlVG9nZ2VsXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLlZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWVUb2dnZWwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgdGhpcy5TaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5Ecm9wZG93bkxpc3Q6XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTmFtZSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTGFiZWxLZXkgPSBcIlNvdXJjZVwiO1xyXG4gICAgICAgIHRoaXMuU291cmNlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlU291cmNlTGlzdDtcclxuICAgICAgICB0aGlzLlNvdXJjZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dEcm9wRG93blNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VTb3VyY2Uoa2V5KSB7XHJcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvbkRETFNvdXJjZS5Mb29rdXA6XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLk5hbWUgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkxhYmVsS2V5ID0gXCJMb29rdXBcIjtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkxvb2t1cC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uRERMU291cmNlLkZ1bmN0aW9uOlxyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFwiKTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBEZWZhdWx0VmFsdWVcIik7XHJcblxyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguTmFtZSA9IFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguTGFiZWxWYWx1ZSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLlZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRm9ybUNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVmFsdWVcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJEZWZhdWx0VmFsdWVcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJWYWx1ZVRvZ2dlbFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY1ZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiKTtcclxuICB9XHJcblxyXG4gIENoYW5nZUxvb2t1cChrZXksIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkTG9va3VwSXRlbXMoa2V5KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgUmVzdWx0ID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5Mb29rdXBJdGVtc0xpc3QgPSBSZXN1bHQubG9va3VwSXRlbXM7XHJcbiAgICAgIGlmICh0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QpIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5OYW1lID0gXCJMb29rdXBWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2hvd0FzdGVyaXNrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkxvb2t1cERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRDb25maWd1cmF0aW9uTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0udmFsdWU7XHJcbiAgICBsZXQgQWRkTW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIEFkZE1vZGVsLktleSA9IFJlc3VsdE1vZGVsLktleTtcclxuICAgIEFkZE1vZGVsLlNjb3BlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlNjb3BlO1xyXG4gICAgQWRkTW9kZWwuVmFsdWVUeXBlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlR5cGU7XHJcbiAgICBBZGRNb2RlbC5DYXRlZ29yeUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5DYXRlZ29yeTtcclxuICAgIEFkZE1vZGVsLlRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLlZhbHVlO1xyXG4gICAgQWRkTW9kZWwuRGVmYXVsdFRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkRlZmF1bHRWYWx1ZTtcclxuICAgIEFkZE1vZGVsLkJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLlZhbHVlVG9nZ2VsO1xyXG4gICAgQWRkTW9kZWwuRGVmYXVsdEJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLkRlZmF1bHRWYWx1ZVRvZ2dlbDtcclxuICAgIEFkZE1vZGVsLlNvdXJjZUZ1bmN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLkZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgIEFkZE1vZGVsLlVzZXJJRF9HVUlEID0gUmVzdWx0TW9kZWwuVXNlcjtcclxuICAgIEFkZE1vZGVsLlNlbGVjdGVkTG9va3VwSURfR1VJRCA9IFJlc3VsdE1vZGVsLkxvb2t1cDtcclxuICAgIEFkZE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuTG9va3VwVmFsdWU7XHJcbiAgICBBZGRNb2RlbC5EZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5Mb29rdXBEZWZhdWx0VmFsdWU7XHJcblxyXG4gICAgQWRkTW9kZWwuUGVybWlzc2lvblNldElEX0dVSUQgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uU2V0O1xyXG4gICAgQWRkTW9kZWwuVmFsdWVTb3VyY2VJRF9HVUlEID0gUmVzdWx0TW9kZWwuU291cmNlO1xyXG5cclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5WYWx1ZVNvdXJjZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleS50b0xvd2VyQ2FzZSgpID09IEFkZE1vZGVsLlZhbHVlU291cmNlSURfR1VJRD8udG9Mb3dlckNhc2UoKTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIGlmIChzb3VyY2VJdGVtICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgQ29uZmlndXJhdGlvbkRETFNvdXJjZU5hbWUgPSBzb3VyY2VJdGVtLnZhbHVlO1xyXG4gICAgICBpZiAoQ29uZmlndXJhdGlvbkRETFNvdXJjZU5hbWUgPT0gXCJGdW5jdGlvblwiKSB7XHJcbiAgICAgICAgQWRkTW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5Tb3VyY2VGdW5jVmFsdWU7XHJcbiAgICAgICAgQWRkTW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuU291cmNlRnVuY0RlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZENvbmZpZ3VyYXRpb25GdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuYWRkQ29uZmlndXJhdGlvbihBZGRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBjb25maWd1cmF0aW9uXHJcbiAgc2hvd0VkaXRDb25maWd1cmF0aW9uTW9kYWwoY29uZmlndXJhdGlvbklkOiBzdHJpbmcsIEVkaXRDb25maWd1cmF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbklkID0gY29uZmlndXJhdGlvbklkO1xyXG4gICAgdGhpcy5yZXNldENvbmZpZ3VyYXRpb25GbGFncygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuZ2V0RWRpdENvbmZpZ3VyYXRpb25EYXRhKGNvbmZpZ3VyYXRpb25JZCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgLy9FZGl0IG1vZGVsXHJcbiAgICAgIGxldCBjb25maWd1cmF0aW9uID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICAvL0xvYWQgbG9va3VwcyBsaXN0XHJcbiAgICAgIHRoaXMuTG9va3Vwc0xpc3QgPSByZXN1bHRPYmoubG9va3VwcztcclxuICAgICAgLy9Mb2FkIGxvb2t1cEl0ZW1zIGxpc3RcclxuICAgICAgbGV0IGxvb2t1cEl0ZW1zID0gcmVzdWx0T2JqLmxvb2t1cEl0ZW1zU291cmNlO1xyXG4gICAgICAvL0xvYWQgcGVybWlzc2lvbnNldHMgbGlzdFxyXG4gICAgICB0aGlzLlBlcm1pc3Npb25MaXN0ID0gcmVzdWx0T2JqLnBlcm1pc3Npb25TZXRMaXN0O1xyXG4gICAgICAvL0xvYWQgdXNlcnMgbGlzdFxyXG4gICAgICB0aGlzLlVzZXJzTGlzdCA9IHJlc3VsdE9iai51c2VycztcclxuICAgICAgLy9Gb3JtIGFuZCBjb250cm9scyByZWluaXRpYWxpemVcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0Q29uZmlndXJhdGlvbk1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0Q29uZmlndXJhdGlvbkZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGVcclxuXHJcblxyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEID0gY29uZmlndXJhdGlvbi52YWx1ZVR5cGVJRF9HVUlELnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEX0dVSUQgPSBjb25maWd1cmF0aW9uLnNjb3BlSURfR1VJRC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9IGNvbmZpZ3VyYXRpb24udmFsdWVTb3VyY2VJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XHJcblxyXG4gICAgICB0aGlzLkVkaXRLZXkgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0S2V5Lk5hbWUgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuTGFiZWxLZXkgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRLZXkuSXNSZXF1aXJlZCA9ICF0aGlzLlByb2R1Y3Rpb25Nb2RlO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuVmFsdWUgPSBjb25maWd1cmF0aW9uLmtleTtcclxuICAgICAgdGhpcy5FZGl0S2V5Lk1heExlbmd0aCA9IDI1NjtcclxuICAgICAgdGhpcy5FZGl0S2V5LklzRGlzYWJsZWQgPSB0aGlzLlByb2R1Y3Rpb25Nb2RlO1xyXG5cclxuICAgICAgc3dpdGNoICh0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGVJRF9HVUlEKSB7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5UZXh0OlxyXG4gICAgICAgICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUuTmFtZSA9IFwiRWRpdFRleHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24udGV4dFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLk1heExlbmd0aCA9IDUwMDA7XHJcblxyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuTmFtZSA9IFwiRWRpdFRleHREZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLlZhbHVlID0gY29uZmlndXJhdGlvbi5kZWZhdWx0VGV4dFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuTWF4TGVuZ3RoID0gNTAwMDtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVR5cGVzLlRvZ2dsZTpcclxuICAgICAgICAgIHRoaXMuU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS5OYW1lID0gXCJFZGl0VmFsdWVUb2dnZWxlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuVmFsdWUgPSBjb25maWd1cmF0aW9uLmJvb2xWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS5OYW1lID0gXCJFZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLlZhbHVlID0gY29uZmlndXJhdGlvbi5kZWZhdWx0Qm9vbFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuRHJvcGRvd25MaXN0OlxyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCkge1xyXG4gICAgICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25ERExTb3VyY2UuTG9va3VwOlxyXG4gICAgICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5OYW1lID0gXCJFZGl0TG9va3VwXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLkxhYmVsS2V5ID0gXCJMb29rdXBcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cHNMaXN0O1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5TZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi5zZWxlY3RlZExvb2t1cElEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSBsb29rdXBJdGVtcztcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi52YWx1ZT8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IGxvb2t1cEl0ZW1zO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gY29uZmlndXJhdGlvbi5kZWZhdWx0VmFsdWU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uZmlndXJhdGlvbkRETFNvdXJjZS5GdW5jdGlvbjpcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguTmFtZSA9IFwiRWRpdEZ1bmN0aW9uU291cmNlUGF0aFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5MYWJlbEtleSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLlZhbHVlID0gY29uZmlndXJhdGlvbi5zb3VyY2VGdW5jdGlvbk5hbWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZFNvdXJjZUZ1bmN0aW9uRHJvcERvd25JdGVtcyhjb25maWd1cmF0aW9uLnNvdXJjZUZ1bmN0aW9uTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkU291cmNlRnVuY1ZhbHVlID0gcmVzdWx0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi52YWx1ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkU291cmNlRnVuY1ZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSByZXN1bHQuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLmRlZmF1bHRWYWx1ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy9yZXNldCBzY29wZVxyXG4gICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgLy9jb25zb2xlLmxvZyhzY29wSXRlbSk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRCkge1xyXG4gICAgICAgIGNhc2UgU2NvcGUuUGVybWlzc2lvbnNldDpcclxuICAgICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcIkVkaXRQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldElEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFNjb3BlLlVzZXI6XHJcbiAgICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuTmFtZSA9IFwiRWRpdFVzZXJcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuTGFiZWxLZXkgPSBcIlVzZXJcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLkRhdGFTb3VyY2UgPSB0aGlzLlVzZXJzTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ3VyYXRpb24udXNlcklEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0Q29uZmlndXJhdGlvbk1vZGFsKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbk1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS52YWx1ZTtcclxuICAgIGNvbnNvbGUubG9nKFJlc3VsdE1vZGVsKTtcclxuICAgIGxldCBFZGl0TW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIEVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5Db25maWd1cmF0aW9uSWQ7XHJcbiAgICBFZGl0TW9kZWwuVmFsdWVUeXBlSURfR1VJRCA9IHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQ7XHJcbiAgICBFZGl0TW9kZWwuU2NvcGVJRF9HVUlEID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSURfR1VJRDtcclxuICAgIEVkaXRNb2RlbC5LZXkgPSB0aGlzLlByb2R1Y3Rpb25Nb2RlID8gdGhpcy5jb25maWd1cmF0aW9uLmtleSA6IFJlc3VsdE1vZGVsLktleTtcclxuICAgIEVkaXRNb2RlbC5WYWx1ZVNvdXJjZUlEX0dVSUQgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRDtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVUeXBlcy5UZXh0OlxyXG4gICAgICAgIEVkaXRNb2RlbC5UZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VGV4dFZhbHVlO1xyXG4gICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0VGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFRleHREZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgIEVkaXRNb2RlbC5Cb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0Qm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlVHlwZXMuRHJvcGRvd25MaXN0OlxyXG4gICAgICAgIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9PSBDb25maWd1cmF0aW9uRERMU291cmNlLkxvb2t1cCkge1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlNlbGVjdGVkTG9va3VwSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVkaXRMb29rdXA7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwVmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSURfR1VJRCA9PSBDb25maWd1cmF0aW9uRERMU291cmNlLkZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuU291cmNlRnVuY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuRWRpdEZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgICAgICAgIEVkaXRNb2RlbC5WYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VGdW5jVmFsdWU7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEID09IFNjb3BlLlVzZXIpIHtcclxuICAgICAgRWRpdE1vZGVsLlVzZXJJRF9HVUlEID0gUmVzdWx0TW9kZWwuRWRpdFVzZXI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLkVkaXRDb25maWd1cmF0aW9uU2NvcGVJRF9HVUlEID09IFNjb3BlLlBlcm1pc3Npb25zZXQpXHJcbiAgICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SURfR1VJRCA9IFJlc3VsdE1vZGVsLkVkaXRQZXJtaXNzaW9uU2V0O1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRDb25maWd1cmF0aW9uRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5lZGl0Q29uZmlndXJhdGlvbihFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0FkZCxFZGl0IHJlcXVpcmVkIGZ1bmN0aW9uc1xyXG4gIENoYW5nZVNjb3BlVmFsdWUoa2V5KSB7XHJcbiAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU2NvcGUuQXBwOlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVXNlclwiKVxyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlBlcm1pc3Npb25TZXRcIilcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2NvcGUuUGVybWlzc2lvbnNldDpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVXNlclwiKVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTY29wZS5Vc2VyOlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJQZXJtaXNzaW9uU2V0XCIpXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNldENvbmZpZ3VyYXRpb25GbGFncygpIHtcclxuICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0Ryb3BEb3duU291cmNlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgU2VhcmNoRm9yRnVuY3Rpb24oaXNBZGQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSBpc0FkZCA/IHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0udmFsdWUgOiB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS52YWx1ZTtcclxuICAgIGxldCBmdW5jdGlvbk5hbWUgPSBpc0FkZCA/IFJlc3VsdE1vZGVsLkZ1bmN0aW9uU291cmNlUGF0aCA6IFJlc3VsdE1vZGVsLkVkaXRGdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkU291cmNlRnVuY3Rpb25Ecm9wRG93bkl0ZW1zKGZ1bmN0aW9uTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSkge1xyXG4gICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcblxyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuTmFtZSA9IFwiU291cmNlRnVuY1ZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLk5hbWUgPSBcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA1MDApIHtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgeyAvLzQwNFxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICB0aGlzLnNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG4gIGNoYW5nZVNvdXJjZUZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8vRGVsZXRlIGNvbmZpZ3VyYXRpb25cclxuICBzaG93RGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsKGNvbmZpZ3VyYXRpb25JRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb25JZCA9IGNvbmZpZ3VyYXRpb25JRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVDb25maWd1cmF0aW9uSWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb247XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuZGVsZXRlQ29uZmlndXJhdGlvbihpZCk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCI+XHJcblxyXG4gICAgPCEtLSBiZWdpbjo6SGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8IS0tKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIC0tPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6TWVudSAtLT5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIHRpdGxlPVwiQWRkXCIgKGNsaWNrKT1cInNob3dBZGRDb25maWd1cmF0aW9uTW9kYWwoQWRkQ29uZmlndXJhdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgICAgPCEtLSBiZWdpbjo6Qm9keSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgY29udGFpbmVyIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJLZXlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTY29wZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlclBlcm1pc3Npb25TZXRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgQ29uZmlndXJhdGlvbiBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tDb25maWd1cmF0aW9uLmtleX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD57e0NvbmZpZ3VyYXRpb24udmFsdWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+IHt7Q29uZmlndXJhdGlvbi52YWx1ZVR5cGVOYW1lU3RyfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7Q29uZmlndXJhdGlvbi5zY29wZU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3tDb25maWd1cmF0aW9uLnBlcm1pc3Npb25TZXROYW1lfX17e0NvbmZpZ3VyYXRpb24udXNlck5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb25maWdcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjY29uZmlnPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdENvbmZpZ3VyYXRpb25Nb2RhbChDb25maWd1cmF0aW9uLmlEX0dVSUQsIEVkaXRDb25maWd1cmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsKENvbmZpZ3VyYXRpb24uaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwhLS0gZW5kOjpUYWJsZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gYmVnaW4gcGFnaW5nLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJDb25maWd1cmF0aW9uUGFnaW5nXCIgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCIgI0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG48IS0tIEFkZCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcblxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiS2V5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkNhdGVnb3J5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU2NvcGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlU2NvcGVWYWx1ZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJQZXJtaXNzaW9uU2V0XCIgKm5nSWY9XCJTaG93UGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlVzZXJcIiAqbmdJZj1cIlNob3dVc2Vyc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlR5cGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlVHlwZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiVmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VcIiAqbmdJZj1cIlNob3dEcm9wRG93blNvdXJjZVwiIChPbkNoYW5nZSk9XCJDaGFuZ2VTb3VyY2UoJGV2ZW50KVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTb3VyY2VGdW5jdGlvbk5vdEZvdW5kXCIpfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIlNlYXJjaEZvckZ1bmN0aW9uKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPjxpIGNsYXNzPVwiZmFzIGZhLXNlYXJjaFwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd0xvb2t1cExpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMb29rdXBcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlTG9va3VwKCRldmVudCx0cnVlKVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwVmFsdWVcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUNvbmZpZ3VyYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFtkaXNhYmxlZF09XCJzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEtleVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0VmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0RnVuY3Rpb25Tb3VyY2VQYXRoXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNvdXJjZUZ1bmN0aW9uTm90Rm91bmRcIil9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24oZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgIFtvcHRpb25zXT1cIkVkaXRMb29rdXBcIiAqbmdJZj1cIlNob3dMb29rdXBMaXN0XCIgKE9uQ2hhbmdlKT1cIkNoYW5nZUxvb2t1cCgkZXZlbnQsZmFsc2UpXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICBbb3B0aW9uc109XCJFZGl0TG9va3VwVmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1kZWxldGVkIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuIl19