ca-components 1.0.76 → 1.0.78

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 (57) hide show
  1. package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +200 -120
  2. package/esm2022/lib/components/ca-chart/enums/chart-annotation.enum.mjs +11 -0
  3. package/esm2022/lib/components/ca-chart/enums/chart-plugin-ids.enum.mjs +2 -1
  4. package/esm2022/lib/components/ca-chart/enums/index.mjs +2 -1
  5. package/esm2022/lib/components/ca-chart/models/chart-config.model.mjs +1 -1
  6. package/esm2022/lib/components/ca-chart/models/chart-legend-config.model.mjs +2 -0
  7. package/esm2022/lib/components/ca-chart/models/chart-legend-property.model.mjs +2 -0
  8. package/esm2022/lib/components/ca-chart/models/index.mjs +3 -1
  9. package/esm2022/lib/components/ca-chart/utils/helpers/chart.helper.mjs +2 -2
  10. package/esm2022/lib/components/ca-chart-manager/ca-chart-manager.component.mjs +4 -4
  11. package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +3 -3
  12. package/esm2022/lib/components/ca-input/ca-input.component.mjs +1 -1
  13. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +21 -22
  14. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-basic-string.enum.mjs +6 -0
  15. package/esm2022/lib/components/ca-map/ca-map.component.mjs +137 -210
  16. package/esm2022/lib/components/ca-map/enums/google-map.enum.mjs +2 -1
  17. package/esm2022/lib/components/ca-map/enums/map-marker-string.enum.mjs +2 -1
  18. package/esm2022/lib/components/ca-map/models/map.model.mjs +1 -1
  19. package/esm2022/lib/components/ca-map/utils/constants/index.mjs +2 -1
  20. package/esm2022/lib/components/ca-map/utils/constants/map-marker-icons.constants.mjs +119 -0
  21. package/esm2022/lib/components/ca-map/utils/constants/map-options.constants.mjs +1 -2
  22. package/esm2022/lib/components/ca-map/utils/helpers/map-marker-icon.helper.mjs +50 -12
  23. package/esm2022/lib/components/ca-map/utils/services/index.mjs +2 -0
  24. package/esm2022/lib/components/ca-map/utils/services/map-marker-icon.service.mjs +137 -0
  25. package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +25 -11
  26. package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +15 -15
  27. package/esm2022/lib/constants/map.constant.mjs +131 -131
  28. package/esm2022/lib/pipes/index.mjs +19 -0
  29. package/esm2022/lib/pipes/unit-position.pipe.mjs +24 -0
  30. package/esm2022/public-api.mjs +2 -1
  31. package/fesm2022/ca-components.mjs +993 -653
  32. package/fesm2022/ca-components.mjs.map +1 -1
  33. package/lib/components/ca-chart/ca-chart.component.d.ts +9 -4
  34. package/lib/components/ca-chart/enums/chart-annotation.enum.d.ts +10 -0
  35. package/lib/components/ca-chart/enums/chart-plugin-ids.enum.d.ts +2 -1
  36. package/lib/components/ca-chart/enums/index.d.ts +1 -0
  37. package/lib/components/ca-chart/models/chart-config.model.d.ts +1 -0
  38. package/lib/components/ca-chart/models/chart-legend-config.model.d.ts +6 -0
  39. package/lib/components/ca-chart/models/chart-legend-property.model.d.ts +7 -0
  40. package/lib/components/ca-chart/models/index.d.ts +2 -0
  41. package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
  42. package/lib/components/ca-input-address-dropdown/enums/input-address-basic-string.enum.d.ts +4 -0
  43. package/lib/components/ca-map/ca-map.component.d.ts +22 -25
  44. package/lib/components/ca-map/enums/google-map.enum.d.ts +2 -1
  45. package/lib/components/ca-map/enums/map-marker-string.enum.d.ts +2 -1
  46. package/lib/components/ca-map/models/map.model.d.ts +8 -3
  47. package/lib/components/ca-map/utils/constants/index.d.ts +1 -0
  48. package/lib/components/ca-map/utils/constants/map-marker-icons.constants.d.ts +6 -0
  49. package/lib/components/ca-map/utils/helpers/map-marker-icon.helper.d.ts +2 -0
  50. package/lib/components/ca-map/utils/services/index.d.ts +1 -0
  51. package/lib/components/ca-map/utils/services/map-marker-icon.service.d.ts +23 -0
  52. package/lib/components/ca-map-dropdown/ca-map-dropdown.component.d.ts +5 -3
  53. package/lib/components/ca-progress-bar/ca-progress-bar.component.d.ts +3 -1
  54. package/lib/pipes/index.d.ts +18 -0
  55. package/lib/pipes/unit-position.pipe.d.ts +7 -0
  56. package/package.json +1 -1
  57. package/public-api.d.ts +1 -0
@@ -346,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
346
346
  type: Output,
347
347
  args: ['dropDownKeyNavigation']
348
348
  }] } });
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUVYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU14RCxRQUFRO0FBQ1IsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN4QixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7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QUEyQjt3QkFDM0IscUJBQXFCO3dCQUNyQixTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsa0NBQWtDO3dCQUNsQyw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLHdCQUF3Qjt3QkFDeEIsZ0NBQWdDO3dCQUNoQyw4QkFBOEI7d0JBQzlCLHVCQUF1Qjt3QkFDdkIsK0JBQStCO3dCQUMvQixhQUFhO3dCQUNiLG9CQUFvQjtxQkFDdkIsV0FDVSxDQUFDLHNCQUFzQixDQUFDLGFBQ3RCLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLENBQUM7OzBCQXNFMUQsSUFBSTs2SUFqRXNDLEtBQUs7c0JBQWpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDYixjQUFjO3NCQUFwQyxTQUFTO3VCQUFDLFVBQVU7Z0JBRVosV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVvQixjQUFjO3NCQUF2QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFSCxTQUFTO3NCQUE3QixNQUFNO3VCQUFDLFdBQVc7Z0JBRUcsZUFBZTtzQkFBcEMsTUFBTTt1QkFBQyxZQUFZO2dCQUVGLFdBQVc7c0JBQTVCLE1BQU07dUJBQUMsUUFBUTtnQkFFUSxZQUFZO3NCQUFuQyxNQUFNO3VCQUFDLGNBQWM7Z0JBRUwsZUFBZTtzQkFBL0IsTUFBTTt1QkFBQyxPQUFPO2dCQUlhLHFCQUFxQjtzQkFBaEQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRU8sMEJBQTBCO3NCQUExRCxNQUFNO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3Jtc01vZHVsZSxcbiAgTmdDb250cm9sLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBMYWJlbENvbG9yLCBDb21tYW5kc0V2ZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHtcbiAgSW5wdXRFcnJvclBpcGUsXG4gIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICBJbnB1dENsYXNzUGlwZSxcbiAgTGFiZWxDbGFzc1BpcGUsXG4gIFNob3dDbGVhclBpcGUsXG4gIFNob3dJbnZhbGlkRGFuZ2VyTWFya1BpcGUsXG4gIFNob3dWYWxpZENoZWNrUGlwZSxcbiAgSW5wdXRUeXBlUGlwZSxcbiAgSW5wdXREcm9wZG93bkFycm93Q2xhc3NQaXBlLFxuICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gIElucHV0UGxhY2Vob2xkZXJJY29uUmlnaHRDbGFzc1BpcGUsXG4gIElucHV0UGxhY2Vob2xkZXJUZXh0Q2xhc3NQaXBlLFxuICBTaG93UGxhY2Vob2xkZXJUZXh0UGlwZVxufSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7IENhU3ZnUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NhLXN2Zy5waXBlJztcbmltcG9ydCB7IExvYWRTdGF0dXNDb2xvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2FkLXN0YXR1cy1jb2xvci5waXBlJztcbmltcG9ydCB7IFRob3VzYW5kU2VwYXJhdG9yUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3Rob3VzYW5kLXNlcGFyYXRvci5waXBlJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWNsZWFyL2NhLWlucHV0LWNsZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0Q29tbWFuZHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtY29tbWFuZHMvY2EtaW5wdXQtY29tbWFuZHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1wYXNzd29yZC9jYS1pbnB1dC1wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1wbGFjZWhvbGRlci1pY29uL2NhLWlucHV0LXBsYWNlaG9sZGVyLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kYXRldGltZS1waWNrZXIvY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FMb2FkTW9kYWxQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyL2NhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5cbi8vIHNlcnZpY2VzXG5pbXBvcnQgeyBJbnB1dFN0YXRlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGhlbHBlcnNcbmltcG9ydCB7IElucHV0Q2hhbmdlVmFsdWUsIElucHV0U3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscyc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IE5nYk1vZHVsZSwgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5neE1hc2tNb2R1bGUgfSBmcm9tICduZ3gtbWFzayc7XG5cbi8vIGRpcmVjdGl2ZXNcbmltcG9ydCB7IE1pbk1heFZhbHVlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7IElucHV0Q29tbWFuZHNUeXBlLCBJbnB1dFN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSB9IGZyb20gJy4uL2NhLWlucHV0LWRyb3Bkb3duL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICAvLyBNb2R1bGVcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG4gICAgTmd4TWFza01vZHVsZSxcbiAgICAvLyBQaXBlXG4gICAgSW5wdXRFcnJvclBpcGUsXG4gICAgSW5wdXRDb250YWluZXJDbGFzc1BpcGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gICAgTGFiZWxDbGFzc1BpcGUsXG4gICAgU2hvd0NsZWFyUGlwZSxcbiAgICBTaG93SW52YWxpZERhbmdlck1hcmtQaXBlLFxuICAgIFNob3dWYWxpZENoZWNrUGlwZSxcbiAgICBJbnB1dFR5cGVQaXBlLFxuICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcbiAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgQ2FTdmdQaXBlLFxuICAgIExvYWRTdGF0dXNDb2xvclBpcGUsXG4gICAgSW5wdXRQbGFjZWhvbGRlckljb25SaWdodENsYXNzUGlwZSxcbiAgICBJbnB1dFBsYWNlaG9sZGVyVGV4dENsYXNzUGlwZSxcbiAgICBTaG93UGxhY2Vob2xkZXJUZXh0UGlwZSxcbiAgICAvLyBDb21wb25lbnRzXG4gICAgQ2FJbnB1dENsZWFyQ29tcG9uZW50LFxuICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgIENhSW5wdXRQYXNzd29yZENvbXBvbmVudCxcbiAgICBDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LFxuICAgIENhSW5wdXRDb21tYW5kc0NvbXBvbmVudCxcbiAgICBDYUN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbXBvbmVudCxcbiAgICBDYUlucHV0RGF0ZXRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQsXG4gICAgQ2FMb2FkTW9kYWxQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICAvLyBEaXJlY3RpdmVzXG4gICAgTWluTWF4VmFsdWVEaXJlY3RpdmVcbl0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgcHJvdmlkZXJzOiBbSW5wdXRTdGF0ZVNlcnZpY2UsIENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGlucHV0ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOZ2JQb3BvdmVyKSBuZ2JNYWluUG9wb3ZlciE6IE5nYlBvcG92ZXI7XG5cbiAgQElucHV0KCkgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcblxuICBASW5wdXQoKSBpbmNvcnJlY3RWYWx1ZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yITogTGFiZWxDb2xvciB8IG51bGw7XG4gIEBJbnB1dCgpIHRlbXBsYXRlITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoJ2luY29ycmVjdEV2ZW50JykgaW5jb3JyZWN0SW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdibHVySW5wdXQnKSBibHVySW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdmb2N1c0lucHV0JykgZm9jdXNJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgnY2hhbmdlJykgY2hhbmdlSW5wdXQ6IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPigpO1xuICBAT3V0cHV0KCdjb21tYW5kRXZlbnQnKSBjb21tYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PigpO1xuICBAT3V0cHV0KCdjbGVhcicpIGNsZWFySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gRHJvcGRvd25cbiAgQE91dHB1dCgnc2hvd0hpZGVEcm9wZG93bicpIHNob3dIaWRlRHJvcGRvd25FdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoJ2Ryb3BEb3duS2V5TmF2aWdhdGlvbicpIGRyb3BEb3duS2V5TmF2aWdhdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8e1xuICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAga2V5Q29kZTogbnVtYmVyO1xuICAgIGRhdGE6IElDYUlucHV0IHwgbnVsbDtcbiAgfT4oKTtcblxuICBwdWJsaWMgaXNUb3VjaGVkSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBJbnB1dCBDb21tYW5kc1xuICBwdWJsaWMgaXNWaXNpYmxlQ29tbWFuZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFZGl0IElucHV0XG4gIHB1YmxpYyBpc0VkaXRJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFBhc3N3b3JkXG4gIHB1YmxpYyBpc1RvZ2dsZVBhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0NhcHNMb2NrT246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEcm9wZG93blxuICBwdWJsaWMgaXNEcm9wZG93blRvZ2dsZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEYXRlXG4gIHB1YmxpYyBzaG93RGF0ZUlucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBkYXRlVGltZUlucHV0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBuZXdJbnB1dENoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEZXN0cm95XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBpbnB1dFN2Z1JvdXRlcyA9IElucHV0U3ZnUm91dGVzO1xuICBwdWJsaWMgaXNGb2N1c0lucHV0ITogYm9vbGVhbjtcbiAgcHVibGljIHByaWNlU2VwZXJhdG9yV2l0aEZpbGxlZFZhbHVlID0gdHJ1ZTtcblxuICBwdWJsaWMgaW5wdXRDb21tYW5kc1R5cGUgPSBJbnB1dENvbW1hbmRzVHlwZTtcbiAgcHVibGljIGlucHV0U3RyaW5nRW51bSA9IElucHV0U3RyaW5nRW51bTtcbiAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHB1YmxpYyBzdXBlckNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgaW5wdXRTdGF0ZVNlcnZpY2U6IElucHV0U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3JQaXBlOiBUaG91c2FuZFNlcGFyYXRvclBpcGVcbiAgKSB7XG4gICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q2hhbmdlc0xpc3RlbmVyKCk7XG5cbiAgICB0aGlzLmluaXRTdGF0ZVNlcnZpY2UoKTtcblxuICAgIHRoaXMub3V0cHV0TGlzdGVuZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdGF0ZUlucHV0cyhjaGFuZ2VzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmF1dG9Gb2N1c0ZpcnN0SW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0U3RhdGVTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0U3VwZXJDb250cm9sKHRoaXMuc3VwZXJDb250cm9sKTtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNldElucHV0RWxlbWVudFJlZih0aGlzLmlucHV0LCB0aGlzLmNkUmVmKTtcblxuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY29tYmluZWRWYXJpYWJsZXMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoW1xuICAgICAgICAgIGZvY3VzLFxuICAgICAgICAgIHRvdWNoZWQsXG4gICAgICAgICAgaXNWaXNpYmxlQ29tbWFuZHMsXG4gICAgICAgICAgaXNFZGl0SW5wdXQsXG4gICAgICAgICAgaXNEcm9wZG93blRvZ2dsZXIsXG4gICAgICAgICAgZGF0ZVRpbWVJbnB1dERhdGUsXG4gICAgICAgICAgc2hvd0RhdGVJbnB1dCxcbiAgICAgICAgICBpc0NhcHNMb2NrT24sXG4gICAgICAgIF0pID0+IHtcbiAgICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IGZvY3VzO1xuICAgICAgICAgIHRoaXMuaXNUb3VjaGVkSW5wdXQgPSB0b3VjaGVkO1xuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlQ29tbWFuZHMgPSBpc1Zpc2libGVDb21tYW5kcztcbiAgICAgICAgICB0aGlzLmlzRWRpdElucHV0ID0gaXNFZGl0SW5wdXQ7XG4gICAgICAgICAgdGhpcy5pc0Ryb3Bkb3duVG9nZ2xlciA9IGlzRHJvcGRvd25Ub2dnbGVyO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBkYXRlVGltZUlucHV0RGF0ZTtcbiAgICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSBzaG93RGF0ZUlucHV0O1xuICAgICAgICAgIHRoaXMuaXNDYXBzTG9ja09uID0gaXNDYXBzTG9ja09uO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG91dHB1dExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBvYnNlcnZhYmxlczoge1xuICAgICAgc3RyZWFtJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgICAgZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgfVtdID0gW1xuICAgICAge1xuICAgICAgICBzdHJlYW0kOiB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmNvbW1hbmRFdmVudCQsXG4gICAgICAgIGVtaXR0ZXI6IHRoaXMuY29tbWFuZEV2ZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5jbGVhcklucHV0RXZlbnQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmNsZWFySW5wdXRFdmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0cmVhbSQ6IHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuaW5jb3JyZWN0SW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmluY29ycmVjdElucHV0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5ibHVySW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmJsdXJJbnB1dCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0cmVhbSQ6IHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY2hhbmdlSW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmNoYW5nZUlucHV0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zaG93SGlkZURyb3Bkb3duJCxcbiAgICAgICAgZW1pdHRlcjogdGhpcy5zaG93SGlkZURyb3Bkb3duRXZlbnQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzdHJlYW0kOiB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmRyb3BEb3duS2V5TmF2aWdhdGlvbiQsXG4gICAgICAgIGVtaXR0ZXI6IHRoaXMuZHJvcERvd25LZXlOYXZpZ2F0aW9uRXZlbnQsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBvYnNlcnZhYmxlcy5mb3JFYWNoKCh7IHN0cmVhbSQsIGVtaXR0ZXIgfSkgPT5cbiAgICAgIHN0cmVhbSRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiBlbWl0dGVyLmVtaXQodmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW5pdENoYW5nZXNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBjb21iaW5lZENoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZUNoYW5nZXMsXG4gICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8uc3RhdHVzQ2hhbmdlcyxcbiAgICBdKTtcblxuICAgIGNvbWJpbmVkQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbkNoYW5nZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGVJbnB1dHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpbnB1dENvbmZpZyddKSB7XG4gICAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNldElucHV0Q29uZmlnKFxuICAgICAgICBjaGFuZ2VzWydpbnB1dENvbmZpZyddPy5jdXJyZW50VmFsdWVcbiAgICAgICk7XG4gICAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uSW5wdXRDb25maWdDaGFuZ2UoKTtcbiAgICB9XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zZXRJbmNvcnJlY3RWYWx1ZShcbiAgICAgIGNoYW5nZXNbJ2luY29ycmVjdFZhbHVlJ10/LmN1cnJlbnRWYWx1ZVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IElucHV0Q2hhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5wcmljZVNlcGFyYXRvcikge1xuICAgICAgaWYgKG9iaiAmJiB0aGlzLnByaWNlU2VwZXJhdG9yV2l0aEZpbGxlZFZhbHVlKVxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPVxuICAgICAgICAgIHRoaXMudGhvdXNhbmRTZXBhcmF0b3JQaXBlLnRyYW5zZm9ybShvYmopO1xuICAgICAgZWxzZSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBvYmo7XG5cbiAgICAgIHRoaXMucHJpY2VTZXBlcmF0b3JXaXRoRmlsbGVkVmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLndyaXRlVmFsdWUob2JqKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHt9XG5cbiAgcHVibGljIG9uQmx1cihldmVudD86IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uQmx1cihldmVudCk7XG5cbiAgICB0aGlzLmJsdXJJbnB1dC5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0lucHV0RXZlbnQuZW1pdCh0cnVlKTtcblxuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25Gb2N1cyhldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25LZXlwcmVzcyhldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uS2V5dXAoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybVRleHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS50cmFuc2Zvcm1UZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY2xlYXJJbnB1dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2dnbGVQYXNzd29yZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNUb2dnbGVQYXNzd29yZCA9ICF0aGlzLmlzVG9nZ2xlUGFzc3dvcmQ7XG4gIH1cblxuICBwdWJsaWMgb25Db21tYW5kcyhldmVudDoge1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uQ29tbWFuZHMoZXZlbnQuZXZlbnQsIGV2ZW50LnR5cGUsIGV2ZW50LmFjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbkVkaXRJbnB1dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRHJvcGRvd25PcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UudG9nZ2xlRHJvcGRvd25PcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgb25QbGFjZWhvbGRlckljb25FdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uUGxhY2Vob2xkZXJJY29uRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNldElucHV0Q3Vyc29yQXRUaGVFbmQoaW5wdXQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChpbnB1dCk7XG4gIH1cblxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERhdGUgJiBUaW1lIFBpY2tlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zZWxlY3Rpb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25EYXRlUGFzdGUoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGlvbihldmVudDoge1xuICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkO1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICB0YXJnZXQ6IGFueTtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0U2VsZWN0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VTZWxlY3Rpb24oZXZlbnQ6IHtcbiAgICBlOiBLZXlib2FyZEV2ZW50O1xuICAgIG5vUHJldmVudERlZmF1bHQ6IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmNoYW5nZVNlbGVjdGlvbihldmVudC5lLCBldmVudC5ub1ByZXZlbnREZWZhdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJTaG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uUG9wb3ZlclNob3duKCk7XG4gIH1cblxuICBwdWJsaWMgb25Qb3BvdmVySGlkZGVuKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25Qb3BvdmVySGlkZGVuKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nYk1haW5Qb3BvdmVyKSB0aGlzLm5nYk1haW5Qb3BvdmVyLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcCgpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrSWRlbnRpdHkgPSAoaW5kZXg6IG51bWJlcik6IG51bWJlciA9PiBpbmRleDtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uRGVzdG9yeSgpO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImlucHV0LWN1c3RvbS1ncm91cCB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gIFtuZ0NsYXNzXT1cIlxuICAgIGdldFN1cGVyQ29udHJvbFxuICAgICAgfCBpbnB1dENvbnRhaW5lckNsYXNzXG4gICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgXCJcbiAgbmdiVG9vbHRpcFxuICBbbWFpbkNhVG9vbHRpcF09XCJnZXRTdXBlckNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IGlucHV0Q29uZmlnLm5hbWVcIlxuICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyNERjNDM0MnXCJcbiAgW2Rpc2FibGVUb29sdGlwXT1cIiFpbnB1dENvbmZpZy5yZXF1aXJlZExhYmVsIHx8ICEhc3VwZXJDb250cm9sLnZhbGlkXCJcbiAgcG9zaXRpb249XCJib3R0b21cIlxuICB0cmlnZ2Vycz1cImhvdmVyXCJcbj5cbiAgPCEtLSBJbnB1dCBDb21tYW5kcyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmNvbW1hbmRzPy5hY3RpdmUgJiYgaXNWaXNpYmxlQ29tbWFuZHNcIj5cbiAgICA8YXBwLWNhLWlucHV0LWNvbW1hbmRzXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgW2lzVmlzaWJsZUNvbW1hbmRzXT1cImlzVmlzaWJsZUNvbW1hbmRzXCJcbiAgICAgIChvbkNvbW1hbmRzQ2xpY2spPVwib25Db21tYW5kcygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtY2EtaW5wdXQtY29tbWFuZHM+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRGF0ZVRpbWUgUGlja2VyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIChpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgfHxcbiAgICAgICAgaW5wdXRDb25maWcubmFtZSA9PT0gJ3RpbWVwaWNrZXInKSAmJlxuICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWRcbiAgICBcIlxuICA+XG4gICAgPGFwcC1jYS1pbnB1dC1kYXRldGltZS1waWNrZXJcbiAgICAgIFtzaG93RGF0ZUlucHV0XT1cInNob3dEYXRlSW5wdXRcIlxuICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgIFtpc0ZvY3VzSW5wdXRdPVwiaXNGb2N1c0lucHV0XCJcbiAgICAgIFtpc1Zpc2libGVDb21tYW5kc109XCJpc1Zpc2libGVDb21tYW5kc1wiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgKHNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb25FbWl0dGVyKT1cInNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKVwiXG4gICAgICAoc2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcEVtaXR0ZXIpPVwic2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcCgpXCJcbiAgICAgIChvbkRhdGVQYXN0ZUVtaXR0ZXIpPVwib25EYXRlUGFzdGUoJGV2ZW50KVwiXG4gICAgICAob25CbHVyRW1pdHRlcik9XCJvbkJsdXIoKVwiXG4gICAgICAoY2hhbmdlU2VsZWN0aW9uRW1taXRlcik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAob25Gb2N1c0VtaXR0ZXIpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChzZXRTZWxlY3Rpb25FbW1pdGVyKT1cInNldFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IExhYmVsIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmVcIj5cbiAgICA8bGFiZWxcbiAgICAgIFtmb3JdPVwiaW5wdXRDb25maWcubmFtZVwiXG4gICAgICBjbGFzcz1cImlucHV0LWxhYmVsIHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19IHt7XG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmN1c3RvbUNsYXNzXG4gICAgICB9fVwiXG4gICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgZ2V0U3VwZXJDb250cm9sPy52YWx1ZSB8IGxhYmVsQ2xhc3M6IGlzRm9jdXNJbnB1dCA6IGlucHV0Q29uZmlnXG4gICAgICAgIDogaXNUb3VjaGVkSW5wdXQgOiBnZXRTdXBlckNvbnRyb2w/LmludmFsaWRcbiAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWRcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmxhYmVsXCI+XG4gICAgICAgIDxzcGFuPnt7IGlucHV0Q29uZmlnLmxhYmVsIH19IDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmxhYmVscz8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8uY3VzdG9tQ2xhc3MhXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbXVsdGlwbGUtbGFiZWxzLXBvc2l0aW9uLW9uLWZvY3VzJzpcbiAgICAgICAgICAgICAgaXNGb2N1c0lucHV0IHx8XG4gICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM/Lmxlbmd0aCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBpbnB1dENvbmZpZy5pc1JlcXVpcmVkICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8ubGFiZWxzXCI+XG4gICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IENsZWFyIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcgfCBzaG93Q2xlYXJcIj5cbiAgICA8YXBwLWNhLWlucHV0LWNsZWFyXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgW2luY29ycmVjdFZhbHVlXT1cImluY29ycmVjdFZhbHVlXCJcbiAgICAgIFtzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvcl09XCJzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvclwiXG4gICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuICAgICAgKGNsZWFySW5wdXRDbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuICAgID5cbiAgICA8L2FwcC1jYS1pbnB1dC1jbGVhcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBDbGVhciBmb3IgZGlzcGF0Y2ggZHJvcGRvd24gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJpbnB1dC1jbGVhci1kaXNwYXRjaFwiXG4gICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnLWljb25cbiAgICAgICAgW3NyY109XCJpbnB1dFN2Z1JvdXRlcy54Q2xlYXJDb21tb25TdmdcIlxuICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLWRpc3BhdGNoLWljb25cIlxuICAgICAgPjwvc3ZnLWljb24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGVuIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yICYmXG4gICAgICAhaXNFZGl0SW5wdXQgJiZcbiAgICAgICFpc0ZvY3VzSW5wdXQgJiZcbiAgICAgIGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJpbnB1dC1wZW4tY29udGFpbmVyXCJcbiAgICAgIG5nYlRvb2x0aXBcbiAgICAgIFttYWluQ2FUb29sdGlwXT1cIidFZGl0J1wiXG4gICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyMyRjJGMkYnXCJcbiAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkVkaXRJbnB1dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnLWljb24gW3NyY109XCJpbnB1dFN2Z1JvdXRlcy5pbnB1dFBlblN2Z1wiIGNsYXNzPVwiaW5wdXQtcGVuXCI+PC9zdmctaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBJbnZhbGlkIERhbmdlciBNYXJrIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgIHwgc2hvd0ludmFsaWREYW5nZXJNYXJrXG4gICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2xcbiAgICAgICAgICA6IGlzRm9jdXNJbnB1dFxuICAgICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICBcIlxuICA+XG4gICAgPHN2Zy1pY29uXG4gICAgICBjbGFzcz1cImlucHV0LWludmFsaWQtZGFuZ2VyLW1hcmsgIHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCJcbiAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMuZGFuZ2VyU3ZnXCJcbiAgICA+XG4gICAgPC9zdmctaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBWYWxpZCBDaGVjayAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBnZXRTdXBlckNvbnRyb2xcbiAgICAgICAgfCBzaG93VmFsaWRDaGVjazogaXNGb2N1c0lucHV0IDogaW5wdXRDb25maWcgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gICAgXCJcbiAgPlxuICAgIDxzdmctaWNvblxuICAgICAgY2xhc3M9XCJpbnB1dC1yZXF1aXJlZC1jaGVjayB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICBbc3JjXT1cImlucHV0U3ZnUm91dGVzLmNvbmZpcm1TdmdcIlxuICAgID48L3N2Zy1pY29uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IFBhc3N3b3JkIENhcHMgTG9jayBBbmQgRXllIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcudHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiPlxuICAgIDxhcHAtY2EtaW5wdXQtcGFzc3dvcmRcbiAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgW2lzQ2Fwc0xvY2tPbl09XCJpc0NhcHNMb2NrT25cIlxuICAgICAgW2lzVG9nZ2xlUGFzc3dvcmRdPVwiaXNUb2dnbGVQYXNzd29yZFwiXG4gICAgICAob25Ub2dnbGVQYXNzd29yZENsaWNrKT1cIm9uVG9nZ2xlUGFzc3dvcmQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLWNhLWlucHV0LXBhc3N3b3JkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IERyb3Bkb3duIEFycm93IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcgfCBzaG93RHJvcGRvd25BcnJvd1wiPlxuICAgIDxzdmctaWNvblxuICAgICAgY2xhc3M9XCJpbnB1dC1kcm9wZG93bi1hcnJvdyB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgZ2V0U3VwZXJDb250cm9sXG4gICAgICAgICAgfCBpbnB1dERyb3Bkb3duQXJyb3dDbGFzc1xuICAgICAgICAgICAgOiBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgXCJcbiAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMuaW5wdXREcm9wZG93bkFycm93U3ZnXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bk9wdGlvbnMoKVwiXG4gICAgPjwvc3ZnLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGxhY2Vob2xkZXIgSWNvbiAtLT5cbiAgPG5nLWNvbnRhaW5lciBcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uIHx8XG4gICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgfHxcbiAgICAgIGlucHV0Q29uZmlnLm5hbWUgPT09ICd0aW1lcGlja2VyJ1xuICAgIFwiXG4gID5cbiAgICA8YXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb25cbiAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cInNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXCJcbiAgICAgIFtpc0VkaXRJbnB1dF09XCJpc0VkaXRJbnB1dFwiXG4gICAgICBbZGF0ZVRpbWVQb3BvdmVyXT1cImRhdGVUaW1lUG9wb3ZlclwiXG4gICAgICAob25Qb3BvdmVyU2hvd25FbWl0dGVyKT1cIm9uUG9wb3ZlclNob3duKClcIlxuICAgICAgKG9uUG9wb3ZlckhpZGRlbkVtaXR0ZXIpPVwib25Qb3BvdmVySGlkZGVuKClcIlxuICAgICAgKG9uUGxhY2Vob2xkZXJJY29uRXZlbnRFbWl0dGVyKT1cIm9uUGxhY2Vob2xkZXJJY29uRXZlbnQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGxhY2Vob2xkZXIgVGV4dCAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpbnB1dENvbmZpZyB8IHNob3dQbGFjZWhvbGRlclRleHQgOiBnZXRTdXBlckNvbnRyb2wgOiBcbiAgICAgIGlzVmlzaWJsZUNvbW1hbmRzIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgIFwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYS1wbGFjZWhvbGRlci10ZXh0IHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIiAgICAgIFxuICAgICAgaXNGb2N1c0lucHV0IHwgaW5wdXRQbGFjZWhvbGRlclRleHRDbGFzc1xuICAgICAgICA6IGlzVG91Y2hlZElucHV0IDogZ2V0U3VwZXJDb250cm9sIDogaW5wdXRDb25maWdcbiAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kcyA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICAgIFwiXG4gICAgICBbc3R5bGUubGVmdF09XCJcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpID09PSBpbnB1dFN0cmluZ0VudW0uUEVSU09OUyB8fFxuICAgICAgICBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQ/LnRvTG93ZXJDYXNlKCkgPT09IGlucHV0U3RyaW5nRW51bS5WRUhJQ0xFU1xuICAgICAgICAgID8gMzAgK1xuICAgICAgICAgICAgKGdldFN1cGVyQ29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCArIDEpICogOSArXG4gICAgICAgICAgICAncHgnXG4gICAgICAgICAgOiBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgICAgIGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dD8udG9Mb3dlckNhc2UoKSAhPT0gaW5wdXRDb21tYW5kc1R5cGUuTU9OVEhTXG4gICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICA6IChnZXRTdXBlckNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggKyAxKSAqIDggKyAncHgnXG4gICAgICBcIlxuICAgICAgW3N0eWxlLnJpZ2h0XT1cIlxuICAgICAgICBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpICE9PSBpbnB1dENvbW1hbmRzVHlwZS5NT05USFNcbiAgICAgICAgICA/ICcyOHB4J1xuICAgICAgICAgIDogJ2F1dG8nXG4gICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBJbnB1dCBMYWJlbCBDb3VudGVyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yICYmXG4gICAgICBnZXRTdXBlckNvbnRyb2w/LnZhbHVlICYmXG4gICAgICAhaXNGb2N1c0lucHV0ICYmXG4gICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgaW5wdXRDb25maWcuc2hvd0NvdW50XG4gICAgXCJcbiAgPlxuICAgIDxwXG4gICAgICBbc3R5bGUudG9wXT1cIic0cHgnXCJcbiAgICAgIFtzdHlsZS5sZWZ0XT1cIlxuICAgICAgICAoZ2V0U3VwZXJDb250cm9sPy52YWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoICsgNi41KSAqIDggKyAncHgnXG4gICAgICBcIlxuICAgICAgY2xhc3M9XCJpbnB1dC1sYWJlbC1jb3VudGVyXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvci5jb3VudCB9fVxuICAgIDwvcD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBTcGVjaWFsIERyb3Bkb3duIFNlbGVjdGVkIFNWRyB3aXRoIG9yIFdpdGhvdXQgVGV4dCAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5zdmcgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uaGlkZUFsbEl0ZW1zSW5JbnB1dERyb3Bkb3duICYmXG4gICAgICAhKCFpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LndpdGhUZXh0ICYmIGlzRm9jdXNJbnB1dCkgJiZcbiAgICAgICEoXG4gICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8udGVtcGxhdGUhXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgIGlzRm9jdXNJbnB1dCAmJlxuICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ucmVtb3ZlXG4gICAgICApICYmXG4gICAgICAhaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8ubmFtZUluaXRpYWxzSW5zdGVhZFVybFxuICAgIFwiXG4gID5cbiAgICA8c3ZnLWljb25cbiAgICAgICAgW3NyY109XCJpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LnVybCFcIlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGVkLWltYWdlIHt7XG4gICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICB9fVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAndW5zZXQtY29sb3InOiBpc0ZvY3VzSW5wdXQgJiYgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICB9XCJcbiAgICAgICAgW3N2Z1N0eWxlXT1cIntcbiAgICAgICAgICBmaWxsOlxuICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvciAmJiAhaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgID8gaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvclxuICAgICAgICAgICAgICA6ICcjZmZmZmZmJ1xuICAgICAgICB9XCJcbiAgICA+XG4gICAgPC9zdmctaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBTcGVjaWFsIERyb3Bkb3duIFNlbGVjdGVkIEltYWdlIFdpdGggVGV4dCBXaXRoIEluaXRpYWxzIG5hbWUgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8uaW1hZ2UgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uaGlkZUFsbEl0ZW1zSW5JbnB1dERyb3Bkb3duICYmXG4gICAgICBpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py51cmwgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5uYW1lSW5pdGlhbHNJbnN0ZWFkVXJsXG4gICAgXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2UgbmFtZS1pbml0aWFscy1pbnN0ZWFkLXVybFwiXG4gICAgICBbc3JjXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8udXJsXCJcbiAgICAgIFthbHRdPVwiJ0lucHV0IEltYWdlJ1wiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8ubmFtZUluaXRpYWxzSW5zdGVhZFVybCAmJlxuICAgICAgIWlucHV0Q29uZmlnPy5oaWRlQWxsSXRlbXNJbklucHV0RHJvcGRvd24gJiZcbiAgICAgICEoIWlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgJiYgaXNGb2N1c0lucHV0KVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm5vLXByb2ZpbGUtaW1hZ2UgZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2UgbmFtZS1pbml0aWFscy1pbnN0ZWFkLXVybFwiXG4gICAgPlxuICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgW2luZHhdPVwiMFwiXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3VzZXInXCJcbiAgICAgICAgICBbbmFtZV09XCJpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/Lm5hbWVJbml0aWFsc0luc3RlYWRVcmwhXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLWNhLXByb2ZpbGUtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTXVsdGlwbGUgSW5wdXQgVmFsdWVzIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGlucHV0Q29uZmlnPy5tdWx0aXBsZUlucHV0VmFsdWVzPy5vcHRpb25zPy5sZW5ndGggJiYgIWlzRm9jdXNJbnB1dFxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlucHV0LWNvbnRyb2wge3tcbiAgICAgICAgaW5wdXRDb25maWcubXVsdGlwbGVJbnB1dFZhbHVlcz8uY3VzdG9tQ2xhc3NcbiAgICAgIH19XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bk9wdGlvbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgYWxpZ24taXRlbXM6IGNlbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBpdGVtIG9mIGlucHV0Q29uZmlnLm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM7XG4gICAgICAgICAgbGV0IGluZHggPSBpbmRleDtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0lkZW50aXR5XG4gICAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgICA8IS0tIEltYWdlIC8gU1ZHIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAmJiBpdGVtPy5pc0ltZ1wiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAhPT0gJ25vLXVybCdcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMThweCcsXG4gICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nOiAxLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGlzJzogJzJweCdcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmxvZ29OYW1lXCJcbiAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmxvZ29OYW1lID09PSAnbm8tdXJsJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8YXBwLWNhLXByb2ZpbGUtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgICAgIDwhLS0gT3duZXIgRmxhZyAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0/LmlzT3duZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1kaXNwYXRjaGVzLXR0ZC1vd25lclwiPlxuICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMub3duZXJCYWRnZUJsdWVTdmdcIlxuICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNTdmdcIj5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BheXJvbGwtZGVkdWN0aW9uLXRydWNrLXN2Zyc6IHRlbXBsYXRlID09PSBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uUEFZUk9MTF9UUlVDS1NcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwie3sgaXRlbT8uc3ViRm9sZGVyIH19XCJcbiAgICAgICAgICAgICAgW3NyY109XCJpdGVtPy5sb2dvTmFtZSFcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gIFxuICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzUHJvZ3Jlc3NCYXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlwbGUtaW5wdXQtdGV4dFwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb2xvcjogJyMyRjJGMkYnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgY291bnRlcjogaXRlbT8uaXNDb3VudGVyLFxuICAgICAgICAgICAgICAgICdjb3VudGVyLW9uZSc6IGl0ZW0/LnZhbHVlID09PSAxXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5zZWNvbmRfdmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogJyM5MTkxOTEnIH1cIlxuICAgICAgICAgICAgICAgICAgPnt7IGl0ZW0uc2Vjb25kX3ZhbHVlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgPCEtLSBMb2FkIEJyb2tlciBQcm9ncmVzc0JhciAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uaXNQcm9ncmVzc0JhclwiPlxuICAgICAgICAgICAgPGNhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICAgIFt0b3RhbEFtb3VudF09XCJpdGVtLnNlY29uZF92YWx1ZSFcIlxuICAgICAgICAgICAgICBbYXZhaWxhYmxlQ3JlZGl0XT1cIml0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogMFwiXG4gICAgICAgICAgICA+PC9jYS1sb2FkLW1vZGFsLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgXG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTXVsdGlwbGUgSW5wdXQgUGxhY2Vob2xkZXIgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/Lm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM/Lmxlbmd0aCAmJlxuICAgICAgaXNGb2N1c0lucHV0ICYmXG4gICAgICAhZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlucHV0LWNvbnRyb2wgbXVsdGlwbGUtaW5wdXQtcGxhY2Vob2xkZXIge3tcbiAgICAgICAgaW5wdXRDb25maWcubXVsdGlwbGVJbnB1dFZhbHVlcz8uY3VzdG9tQ2xhc3NcbiAgICAgIH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgIGZvY3VzOiBpc0ZvY3VzSW5wdXQsXG4gICAgICAgICdwYXlyb2xsLWRlZHVjdGlvbi10cnVjayc6IHRlbXBsYXRlID09PSBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uUEFZUk9MTF9UUlVDS1NcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIlxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgaXRlbSBvZiBpbnB1dENvbmZpZy5tdWx0aXBsZUlucHV0VmFsdWVzPy5vcHRpb25zO1xuICAgICAgICAgIGxldCBpbmR4ID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tJZGVudGl0eVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8IS0tIEltYWdlIC8gU1ZHIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNJbWdcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9jdXNhYmxlLWltYWdlJzogaXNGb2N1c0lucHV0IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAhPT0gJ25vLXVybCdcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMThweCcsXG4gICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJzogMSxcbiAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXMnOiAnMnB4J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5sb2dvTmFtZVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubG9nb05hbWUgPT09ICduby11cmwnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgICAgICAgICAgIFtpbmR4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS52YWx1ZSFcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNTdmdcIj5cbiAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICAgICAgICdmb2N1c2FibGUtc3ZnJzogaXNGb2N1c0lucHV0LFxuICAgICAgICAgICAgICAncGF5cm9sbC1kZWR1Y3Rpb24tdHJ1Y2stc3ZnJzogdGVtcGxhdGUgPT09IGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLU1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGl0ZW0/LnN1YkZvbGRlciB9fSB7e1xuICAgICAgICAgICAgICBpdGVtPy5sb2dvVHlwZT8udHJpbSgpPy5yZXBsYWNlKCcgJywgJycpPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbc3JjXT1cIml0ZW0/LmxvZ29OYW1lIVwiXG4gICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgPCEtLSBUZXh0IC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzUHJvZ3Jlc3NCYXJcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXBsZS1pbnB1dC10ZXh0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2ZvY3VzYWJsZS10ZXh0JzogaXNGb2N1c0lucHV0LFxuICAgICAgICAgICAgICBjb3VudGVyOiBpdGVtPy5pc0NvdW50ZXIsXG4gICAgICAgICAgICAgICdjb3VudGVyLWZvY3VzJzogaXRlbT8uaXNDb3VudGVyICYmIGlzRm9jdXNJbnB1dCxcbiAgICAgICAgICAgICAgJ2NvdW50ZXItb25lJzogaXRlbT8udmFsdWUgPT09IDEsXG4gICAgICAgICAgICAgICdjYS1hZGQtZG90JzogdGVtcGxhdGUgPT09IGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVJcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjb2xvcjogJyM2RjlFRTAnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uc2Vjb25kX3ZhbHVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0uc2Vjb25kX3ZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgIDwhLS0gTG9hZCBCcm9rZXIgUHJvZ3Jlc3NCYXIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5pc1Byb2dyZXNzQmFyXCI+XG4gICAgICAgICAgPGNhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICBbdG90YWxBbW91bnRdPVwiaXRlbS5zZWNvbmRfdmFsdWUhXCJcbiAgICAgICAgICAgIFthdmFpbGFibGVDcmVkaXRdPVwiaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiAwXCJcbiAgICAgICAgICAgIFtpbnB1dEZvY3VzXT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICAgICAgPjwvY2EtbG9hZC1tb2RhbC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBbdHlwZV09XCJpbnB1dENvbmZpZy50eXBlIHwgaW5wdXRUeXBlOiBpc1RvZ2dsZVBhc3N3b3JkXCJcbiAgICBbaWRdPVwiaW5wdXRDb25maWcuaWQgPyBpbnB1dENvbmZpZy5pZCA6IGlucHV0Q29uZmlnLm5hbWVcIlxuICAgIFtuYW1lXT1cImlucHV0Q29uZmlnLm5hbWVcIlxuICAgIFtkaXNhYmxlZF09XCJpbnB1dENvbmZpZy5pc0Rpc2FibGVkIVwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJpbnB1dENvbmZpZy5hdXRvY29tcGxldGUgPyBpbnB1dENvbmZpZy5hdXRvY29tcGxldGUgOiAnb2ZmJ1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgKGlucHV0Q29uZmlnLnBsYWNlaG9sZGVySW5zdGVhZE9mTGFiZWwgJiZcbiAgICAgIGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyICYmXG4gICAgICBpc0ZvY3VzSW5wdXRcbiAgICAgICAgPyBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclxuICAgICAgICA6ICcnKSB8fFxuICAgICAgKGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyICYmIGlzRm9jdXNJbnB1dCA/IGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyIDogJycpXG4gICAgXCJcbiAgICBbbWluTGVuZ3RoXT1cImlucHV0Q29uZmlnLm1pbkxlbmd0aCA/IGlucHV0Q29uZmlnLm1pbkxlbmd0aCA6IDBcIlxuICAgIFttYXhMZW5ndGhdPVwiaW5wdXRDb25maWcubWF4TGVuZ3RoID8gaW5wdXRDb25maWcubWF4TGVuZ3RoIDogOTk5XCJcbiAgICBbbWFza109XCJpbnB1dENvbmZpZy5tYXNrXCJcbiAgICBbbWluXT1cImlucHV0Q29uZmlnLm1pbiA/IGlucHV0Q29uZmlnLm1pbiA6IDBcIlxuICAgIFttYXhdPVwiaW5wdXRDb25maWcubWF4XCJcbiAgICBbc3RlcF09XCJpbnB1dENvbmZpZy5zdGVwID8gaW5wdXRDb25maWcuc3RlcCA6IG51bGxcIlxuICAgIFtyZWFkT25seV09XCJpbnB1dENvbmZpZy5yZWFkT25seVwiXG4gICAgYXBwTWluTWF4VmFsdWVcbiAgICBbbWluVmFsdWVdPVwiaW5wdXRDb25maWcubWluIVwiXG4gICAgW21heFZhbHVlXT1cImlucHV0Q29uZmlnLm1heCFcIlxuICAgIGlucHV0Zm9ybWF0PVwiZGQtbW0teXlcIlxuICAgIGNsYXNzPVwiaW5wdXQtY29udHJvbFxuICB7eyBpbnB1dENvbmZpZy50ZXh0VHJhbnNmb3JtIH19XG4gIHt7IGlucHV0Q29uZmlnLnRleHRBbGlnbiB9fVxuICB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVxuICBcIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgZ2V0U3VwZXJDb250cm9sXG4gICAgICAgIHwgaW5wdXRDbGFzc1xuICAgICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICA6IGlucHV0XG4gICAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kc1xuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy5pbnZhbGlkXG4gICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWRcbiAgICAgICAgICA6IGlzRHJvcGRvd25Ub2dnbGVyXG4gICAgICAgICAgOiBpc0VkaXRJbnB1dFxuICAgICAgICAgIDogdGVtcGxhdGVcbiAgICBcIlxuICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgKHNlbGVjdCk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGlucHV0KT1cIm9uQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpOyB0cmFuc2Zvcm1UZXh0KCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgaW5wdXRDb25maWcuc3RhdHVzU3R5bGUgPyAoaW5wdXQudmFsdWUgfCBsb2FkU3RhdHVzQ29sb3IpIDogJydcbiAgICBcIlxuICAvPlxuXG4gIDwhLS0gUGxhY2Vob2xkZXIgSWNvbiBvbiBSaWdodCBTaWRlIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlXCI+XG4gICAgPHN2Zy1pY29uXG4gICAgICBjbGFzcz1cInBsYWNlaG9sZGVyLWljb24tcmlnaHQtc2lkZSB7e1xuICAgICAgICBpbnB1dENvbmZpZy5wbGFjZWhvbGRlckljb25Db2xvclxuICAgICAgfX1cIlxuICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlzRm9jdXNJbnB1dFxuICAgICAgICAgIHwgaW5wdXRQbGFjZWhvbGRlckljb25SaWdodENsYXNzXG4gICAgICAgICAgICA6IGdldFN1cGVyQ29udHJvbFxuICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gICAgICBcIlxuICAgICAgW3NyY109XCJcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICB8IGNhU3ZnIDogJ2NvbW1vbidcbiAgICAgIFwiXG4gICAgPjwvc3ZnLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgRXJyb3IgTWVzc2FnZSAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAhKCFnZXRTdXBlckNvbnRyb2w/LnZhbHVlICYmIGlzRm9jdXNJbnB1dCkgJiZcbiAgICAgIChpc1RvdWNoZWRJbnB1dCB8fCBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWQgfHwgZ2V0U3VwZXJDb250cm9sPy52YWx1ZSkgJiZcbiAgICAgIGdldFN1cGVyQ29udHJvbD8uaW52YWxpZCAmJlxuICAgICAgIWlucHV0Q29uZmlnLmlzSW52YWxpZFNlYXJjaEluRHJvcGRvd24gJiZcbiAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlucHV0Q29uZmlnLmhpZGVFcnJvck1lc3NhZ2UgfHwgaW5wdXRDb25maWcuZXJyb3JJbnNpZGVJbnB1dClcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZXJyb3Ige3sgaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIj5cbiAgICAgICAge3sgZ2V0U3VwZXJDb250cm9sPy5lcnJvcnMgfCBpbnB1dEVycm9yOiBpbnB1dENvbmZpZy5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEVycm9yIE1lc3NhZ2UgSW5zaWRlIElucHV0IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dENvbmZpZy5lcnJvckluc2lkZUlucHV0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWluc2lkZS1pbnB1dCB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiPlxuICAgICAgICB7eyBnZXRTdXBlckNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IGlucHV0Q29uZmlnLm5hbWUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmZpeGVkUGxhY2hvbGRlciAmJiBpbnB1dC52YWx1ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZml4ZWQtcGxhY2Vob2Rlci1sYWJlbFwiPlxuICAgICAge3sgaW5wdXRDb25maWcuZml4ZWRQbGFjaG9sZGVyIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48IS0tIFBvcG92ZXIgZm9yIERhdGVUaW1lIFBpY2tlcnMgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUG9wb3ZlciBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImRhdGV0aW1lLWRyb3Bkb3duLWhvbGRlclwiPlxuICAgIDxhcHAtY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnNcbiAgICAgIFtjYWxlbmRhclR5cGVdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyB8fFxuICAgICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlckJhbmtDYXJkJ1xuICAgICAgICAgID8gJ2RhdGUnXG4gICAgICAgICAgOiAndGltZSdcbiAgICAgIFwiXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidNTS9ERC9ZWSdcIlxuICAgICAgW2RhdGVUaW1lXT1cImRhdGVUaW1lSW5wdXREYXRlXCJcbiAgICAgIChjbG9zZVBvcG92ZXIpPVwiY2xvc2VQb3BvdmVyKClcIlxuICAgID48L2FwcC1jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUVYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU14RCxRQUFRO0FBQ1IsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN4QixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7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QUEyQjt3QkFDM0IscUJBQXFCO3dCQUNyQixTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsa0NBQWtDO3dCQUNsQyw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLHdCQUF3Qjt3QkFDeEIsZ0NBQWdDO3dCQUNoQyw4QkFBOEI7d0JBQzlCLHVCQUF1Qjt3QkFDdkIsK0JBQStCO3dCQUMvQixhQUFhO3dCQUNiLG9CQUFvQjtxQkFDdkIsV0FDVSxDQUFDLHNCQUFzQixDQUFDLGFBQ3RCLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLENBQUM7OzBCQXNFMUQsSUFBSTs2SUFqRXNDLEtBQUs7c0JBQWpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDYixjQUFjO3NCQUFwQyxTQUFTO3VCQUFDLFVBQVU7Z0JBRVosV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVvQixjQUFjO3NCQUF2QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFFSCxTQUFTO3NCQUE3QixNQUFNO3VCQUFDLFdBQVc7Z0JBRUcsZUFBZTtzQkFBcEMsTUFBTTt1QkFBQyxZQUFZO2dCQUVGLFdBQVc7c0JBQTVCLE1BQU07dUJBQUMsUUFBUTtnQkFFUSxZQUFZO3NCQUFuQyxNQUFNO3VCQUFDLGNBQWM7Z0JBRUwsZUFBZTtzQkFBL0IsTUFBTTt1QkFBQyxPQUFPO2dCQUlhLHFCQUFxQjtzQkFBaEQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRU8sMEJBQTBCO3NCQUExRCxNQUFNO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3Jtc01vZHVsZSxcbiAgTmdDb250cm9sLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBMYWJlbENvbG9yLCBDb21tYW5kc0V2ZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHtcbiAgSW5wdXRFcnJvclBpcGUsXG4gIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICBJbnB1dENsYXNzUGlwZSxcbiAgTGFiZWxDbGFzc1BpcGUsXG4gIFNob3dDbGVhclBpcGUsXG4gIFNob3dJbnZhbGlkRGFuZ2VyTWFya1BpcGUsXG4gIFNob3dWYWxpZENoZWNrUGlwZSxcbiAgSW5wdXRUeXBlUGlwZSxcbiAgSW5wdXREcm9wZG93bkFycm93Q2xhc3NQaXBlLFxuICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gIElucHV0UGxhY2Vob2xkZXJJY29uUmlnaHRDbGFzc1BpcGUsXG4gIElucHV0UGxhY2Vob2xkZXJUZXh0Q2xhc3NQaXBlLFxuICBTaG93UGxhY2Vob2xkZXJUZXh0UGlwZVxufSBmcm9tICcuL3BpcGVzJztcbmltcG9ydCB7IENhU3ZnUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NhLXN2Zy5waXBlJztcbmltcG9ydCB7IExvYWRTdGF0dXNDb2xvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2FkLXN0YXR1cy1jb2xvci5waXBlJztcbmltcG9ydCB7IFRob3VzYW5kU2VwYXJhdG9yUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3Rob3VzYW5kLXNlcGFyYXRvci5waXBlJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENsZWFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWNsZWFyL2NhLWlucHV0LWNsZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0Q29tbWFuZHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtY29tbWFuZHMvY2EtaW5wdXQtY29tbWFuZHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXRQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1wYXNzd29yZC9jYS1pbnB1dC1wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1wbGFjZWhvbGRlci1pY29uL2NhLWlucHV0LXBsYWNlaG9sZGVyLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kYXRldGltZS1waWNrZXIvY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FMb2FkTW9kYWxQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyL2NhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5cbi8vIHNlcnZpY2VzXG5pbXBvcnQgeyBJbnB1dFN0YXRlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5cbi8vIGhlbHBlcnNcbmltcG9ydCB7IElucHV0Q2hhbmdlVmFsdWUsIElucHV0U3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscyc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IE5nYk1vZHVsZSwgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5neE1hc2tNb2R1bGUgfSBmcm9tICduZ3gtbWFzayc7XG5cbi8vIGRpcmVjdGl2ZXNcbmltcG9ydCB7IE1pbk1heFZhbHVlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7IElucHV0Q29tbWFuZHNUeXBlLCBJbnB1dFN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSB9IGZyb20gJy4uL2NhLWlucHV0LWRyb3Bkb3duL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICAvLyBNb2R1bGVcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG4gICAgTmd4TWFza01vZHVsZSxcbiAgICAvLyBQaXBlXG4gICAgSW5wdXRFcnJvclBpcGUsXG4gICAgSW5wdXRDb250YWluZXJDbGFzc1BpcGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gICAgTGFiZWxDbGFzc1BpcGUsXG4gICAgU2hvd0NsZWFyUGlwZSxcbiAgICBTaG93SW52YWxpZERhbmdlck1hcmtQaXBlLFxuICAgIFNob3dWYWxpZENoZWNrUGlwZSxcbiAgICBJbnB1dFR5cGVQaXBlLFxuICAgIElucHV0RHJvcGRvd25BcnJvd0NsYXNzUGlwZSxcbiAgICBTaG93RHJvcGRvd25BcnJvd1BpcGUsXG4gICAgQ2FTdmdQaXBlLFxuICAgIExvYWRTdGF0dXNDb2xvclBpcGUsXG4gICAgSW5wdXRQbGFjZWhvbGRlckljb25SaWdodENsYXNzUGlwZSxcbiAgICBJbnB1dFBsYWNlaG9sZGVyVGV4dENsYXNzUGlwZSxcbiAgICBTaG93UGxhY2Vob2xkZXJUZXh0UGlwZSxcbiAgICAvLyBDb21wb25lbnRzXG4gICAgQ2FJbnB1dENsZWFyQ29tcG9uZW50LFxuICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgIENhSW5wdXRQYXNzd29yZENvbXBvbmVudCxcbiAgICBDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LFxuICAgIENhSW5wdXRDb21tYW5kc0NvbXBvbmVudCxcbiAgICBDYUN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbXBvbmVudCxcbiAgICBDYUlucHV0RGF0ZXRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQsXG4gICAgQ2FMb2FkTW9kYWxQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICAvLyBEaXJlY3RpdmVzXG4gICAgTWluTWF4VmFsdWVEaXJlY3RpdmVcbl0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgcHJvdmlkZXJzOiBbSW5wdXRTdGF0ZVNlcnZpY2UsIENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGlucHV0ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOZ2JQb3BvdmVyKSBuZ2JNYWluUG9wb3ZlciE6IE5nYlBvcG92ZXI7XG5cbiAgQElucHV0KCkgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcblxuICBASW5wdXQoKSBpbmNvcnJlY3RWYWx1ZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yITogTGFiZWxDb2xvciB8IG51bGw7XG4gIEBJbnB1dCgpIHRlbXBsYXRlITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoJ2luY29ycmVjdEV2ZW50JykgaW5jb3JyZWN0SW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdibHVySW5wdXQnKSBibHVySW5wdXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdmb2N1c0lucHV0JykgZm9jdXNJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgnY2hhbmdlJykgY2hhbmdlSW5wdXQ6IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJbnB1dENoYW5nZVZhbHVlPigpO1xuICBAT3V0cHV0KCdjb21tYW5kRXZlbnQnKSBjb21tYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kc0V2ZW50PigpO1xuICBAT3V0cHV0KCdjbGVhcicpIGNsZWFySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gRHJvcGRvd25cbiAgQE91dHB1dCgnc2hvd0hpZGVEcm9wZG93bicpIHNob3dIaWRlRHJvcGRvd25FdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoJ2Ryb3BEb3duS2V5TmF2aWdhdGlvbicpIGRyb3BEb3duS2V5TmF2aWdhdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8e1xuICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICBkYXRhOiBJQ2FJbnB1dCB8IG51bGw7XG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAga2V5Q29kZTogbnVtYmVyO1xuICAgIGRhdGE6IElDYUlucHV0IHwgbnVsbDtcbiAgfT4oKTtcblxuICBwdWJsaWMgaXNUb3VjaGVkSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBJbnB1dCBDb21tYW5kc1xuICBwdWJsaWMgaXNWaXNpYmxlQ29tbWFuZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFZGl0IElucHV0XG4gIHB1YmxpYyBpc0VkaXRJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFBhc3N3b3JkXG4gIHB1YmxpYyBpc1RvZ2dsZVBhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0NhcHNMb2NrT246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEcm9wZG93blxuICBwdWJsaWMgaXNEcm9wZG93blRvZ2dsZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEYXRlXG4gIHB1YmxpYyBzaG93RGF0ZUlucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBkYXRlVGltZUlucHV0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBuZXdJbnB1dENoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBEZXN0cm95XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBpbnB1dFN2Z1JvdXRlcyA9IElucHV0U3ZnUm91dGVzO1xuICBwdWJsaWMgaXNGb2N1c0lucHV0ITogYm9vbGVhbjtcbiAgcHVibGljIHByaWNlU2VwZXJhdG9yV2l0aEZpbGxlZFZhbHVlID0gdHJ1ZTtcblxuICBwdWJsaWMgaW5wdXRDb21tYW5kc1R5cGUgPSBJbnB1dENvbW1hbmRzVHlwZTtcbiAgcHVibGljIGlucHV0U3RyaW5nRW51bSA9IElucHV0U3RyaW5nRW51bTtcbiAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHB1YmxpYyBzdXBlckNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgaW5wdXRTdGF0ZVNlcnZpY2U6IElucHV0U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3JQaXBlOiBUaG91c2FuZFNlcGFyYXRvclBpcGVcbiAgKSB7XG4gICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q2hhbmdlc0xpc3RlbmVyKCk7XG5cbiAgICB0aGlzLmluaXRTdGF0ZVNlcnZpY2UoKTtcblxuICAgIHRoaXMub3V0cHV0TGlzdGVuZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdGF0ZUlucHV0cyhjaGFuZ2VzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmF1dG9Gb2N1c0ZpcnN0SW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0U3RhdGVTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0U3VwZXJDb250cm9sKHRoaXMuc3VwZXJDb250cm9sKTtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNldElucHV0RWxlbWVudFJlZih0aGlzLmlucHV0LCB0aGlzLmNkUmVmKTtcblxuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY29tYmluZWRWYXJpYWJsZXMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoW1xuICAgICAgICAgIGZvY3VzLFxuICAgICAgICAgIHRvdWNoZWQsXG4gICAgICAgICAgaXNWaXNpYmxlQ29tbWFuZHMsXG4gICAgICAgICAgaXNFZGl0SW5wdXQsXG4gICAgICAgICAgaXNEcm9wZG93blRvZ2dsZXIsXG4gICAgICAgICAgZGF0ZVRpbWVJbnB1dERhdGUsXG4gICAgICAgICAgc2hvd0RhdGVJbnB1dCxcbiAgICAgICAgICBpc0NhcHNMb2NrT24sXG4gICAgICAgIF0pID0+IHtcbiAgICAgICAgICB0aGlzLmlzRm9jdXNJbnB1dCA9IGZvY3VzO1xuICAgICAgICAgIHRoaXMuaXNUb3VjaGVkSW5wdXQgPSB0b3VjaGVkO1xuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlQ29tbWFuZHMgPSBpc1Zpc2libGVDb21tYW5kcztcbiAgICAgICAgICB0aGlzLmlzRWRpdElucHV0ID0gaXNFZGl0SW5wdXQ7XG4gICAgICAgICAgdGhpcy5pc0Ryb3Bkb3duVG9nZ2xlciA9IGlzRHJvcGRvd25Ub2dnbGVyO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBkYXRlVGltZUlucHV0RGF0ZTtcbiAgICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSBzaG93RGF0ZUlucHV0OyBcblxuICAgICAgICAgIHRoaXMuaXNDYXBzTG9ja09uID0gaXNDYXBzTG9ja09uO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG91dHB1dExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBvYnNlcnZhYmxlczoge1xuICAgICAgc3RyZWFtJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgICAgZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgfVtdID0gW1xuICAgICAge1xuICAgICAgICBzdHJlYW0kOiB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmNvbW1hbmRFdmVudCQsXG4gICAgICAgIGVtaXR0ZXI6IHRoaXMuY29tbWFuZEV2ZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5jbGVhcklucHV0RXZlbnQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmNsZWFySW5wdXRFdmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0cmVhbSQ6IHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuaW5jb3JyZWN0SW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmluY29ycmVjdElucHV0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5ibHVySW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmJsdXJJbnB1dCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0cmVhbSQ6IHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY2hhbmdlSW5wdXQkLFxuICAgICAgICBlbWl0dGVyOiB0aGlzLmNoYW5nZUlucHV0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RyZWFtJDogdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zaG93SGlkZURyb3Bkb3duJCxcbiAgICAgICAgZW1pdHRlcjogdGhpcy5zaG93SGlkZURyb3Bkb3duRXZlbnQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzdHJlYW0kOiB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmRyb3BEb3duS2V5TmF2aWdhdGlvbiQsXG4gICAgICAgIGVtaXR0ZXI6IHRoaXMuZHJvcERvd25LZXlOYXZpZ2F0aW9uRXZlbnQsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBvYnNlcnZhYmxlcy5mb3JFYWNoKCh7IHN0cmVhbSQsIGVtaXR0ZXIgfSkgPT5cbiAgICAgIHN0cmVhbSRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiBlbWl0dGVyLmVtaXQodmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW5pdENoYW5nZXNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBjb21iaW5lZENoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZUNoYW5nZXMsXG4gICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8uc3RhdHVzQ2hhbmdlcyxcbiAgICBdKTtcblxuICAgIGNvbWJpbmVkQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbkNoYW5nZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGVJbnB1dHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpbnB1dENvbmZpZyddKSB7XG4gICAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNldElucHV0Q29uZmlnKFxuICAgICAgICBjaGFuZ2VzWydpbnB1dENvbmZpZyddPy5jdXJyZW50VmFsdWVcbiAgICAgICk7XG4gICAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uSW5wdXRDb25maWdDaGFuZ2UoKTtcbiAgICB9XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zZXRJbmNvcnJlY3RWYWx1ZShcbiAgICAgIGNoYW5nZXNbJ2luY29ycmVjdFZhbHVlJ10/LmN1cnJlbnRWYWx1ZVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IElucHV0Q2hhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5wcmljZVNlcGFyYXRvcikge1xuICAgICAgaWYgKG9iaiAmJiB0aGlzLnByaWNlU2VwZXJhdG9yV2l0aEZpbGxlZFZhbHVlKVxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPVxuICAgICAgICAgIHRoaXMudGhvdXNhbmRTZXBhcmF0b3JQaXBlLnRyYW5zZm9ybShvYmopO1xuICAgICAgZWxzZSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBvYmo7XG5cbiAgICAgIHRoaXMucHJpY2VTZXBlcmF0b3JXaXRoRmlsbGVkVmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLndyaXRlVmFsdWUob2JqKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpOiB2b2lkIHt9XG5cbiAgcHVibGljIG9uQmx1cihldmVudD86IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uQmx1cihldmVudCk7XG5cbiAgICB0aGlzLmJsdXJJbnB1dC5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0lucHV0RXZlbnQuZW1pdCh0cnVlKTtcblxuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25Gb2N1cyhldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25LZXlwcmVzcyhldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uS2V5dXAoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybVRleHQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS50cmFuc2Zvcm1UZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UuY2xlYXJJbnB1dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2dnbGVQYXNzd29yZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNUb2dnbGVQYXNzd29yZCA9ICF0aGlzLmlzVG9nZ2xlUGFzc3dvcmQ7XG4gIH1cblxuICBwdWJsaWMgb25Db21tYW5kcyhldmVudDoge1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uQ29tbWFuZHMoZXZlbnQuZXZlbnQsIGV2ZW50LnR5cGUsIGV2ZW50LmFjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0SW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5vbkVkaXRJbnB1dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRHJvcGRvd25PcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2UudG9nZ2xlRHJvcGRvd25PcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgb25QbGFjZWhvbGRlckljb25FdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uUGxhY2Vob2xkZXJJY29uRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNldElucHV0Q3Vyc29yQXRUaGVFbmQoaW5wdXQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChpbnB1dCk7XG4gIH1cblxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERhdGUgJiBUaW1lIFBpY2tlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFN0YXRlU2VydmljZS5zZWxlY3Rpb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25EYXRlUGFzdGUoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNldFNlbGVjdGlvbihldmVudDoge1xuICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkO1xuICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICB0YXJnZXQ6IGFueTtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2V0U2VsZWN0aW9uKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VTZWxlY3Rpb24oZXZlbnQ6IHtcbiAgICBlOiBLZXlib2FyZEV2ZW50O1xuICAgIG5vUHJldmVudERlZmF1bHQ6IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLmNoYW5nZVNlbGVjdGlvbihldmVudC5lLCBldmVudC5ub1ByZXZlbnREZWZhdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJTaG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uUG9wb3ZlclNob3duKCk7XG4gIH1cblxuICBwdWJsaWMgb25Qb3BvdmVySGlkZGVuKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uub25Qb3BvdmVySGlkZGVuKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nYk1haW5Qb3BvdmVyKSB0aGlzLm5nYk1haW5Qb3BvdmVyLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLnNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRTdGF0ZVNlcnZpY2Uuc2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcCgpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrSWRlbnRpdHkgPSAoaW5kZXg6IG51bWJlcik6IG51bWJlciA9PiBpbmRleDtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0U3RhdGVTZXJ2aWNlLm9uRGVzdG9yeSgpO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImlucHV0LWN1c3RvbS1ncm91cCB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gIFtuZ0NsYXNzXT1cIlxuICAgIGdldFN1cGVyQ29udHJvbFxuICAgICAgfCBpbnB1dENvbnRhaW5lckNsYXNzXG4gICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgXCJcbiAgbmdiVG9vbHRpcFxuICBbbWFpbkNhVG9vbHRpcF09XCJnZXRTdXBlckNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IGlucHV0Q29uZmlnLm5hbWVcIlxuICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyNERjNDM0MnXCJcbiAgW2Rpc2FibGVUb29sdGlwXT1cIiFpbnB1dENvbmZpZy5yZXF1aXJlZExhYmVsIHx8ICEhc3VwZXJDb250cm9sLnZhbGlkXCJcbiAgcG9zaXRpb249XCJib3R0b21cIlxuICB0cmlnZ2Vycz1cImhvdmVyXCJcbj5cbiAgPCEtLSBJbnB1dCBDb21tYW5kcyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmNvbW1hbmRzPy5hY3RpdmUgJiYgaXNWaXNpYmxlQ29tbWFuZHNcIj5cbiAgICA8YXBwLWNhLWlucHV0LWNvbW1hbmRzXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgW2lzVmlzaWJsZUNvbW1hbmRzXT1cImlzVmlzaWJsZUNvbW1hbmRzXCJcbiAgICAgIChvbkNvbW1hbmRzQ2xpY2spPVwib25Db21tYW5kcygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtY2EtaW5wdXQtY29tbWFuZHM+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRGF0ZVRpbWUgUGlja2VyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIChpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgfHxcbiAgICAgICAgaW5wdXRDb25maWcubmFtZSA9PT0gJ3RpbWVwaWNrZXInKSAmJlxuICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWRcbiAgICBcIlxuICA+XG4gICAgPGFwcC1jYS1pbnB1dC1kYXRldGltZS1waWNrZXJcbiAgICAgIFtzaG93RGF0ZUlucHV0XT1cInNob3dEYXRlSW5wdXRcIlxuICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgIFtpc0ZvY3VzSW5wdXRdPVwiaXNGb2N1c0lucHV0XCJcbiAgICAgIFtpc1Zpc2libGVDb21tYW5kc109XCJpc1Zpc2libGVDb21tYW5kc1wiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgKHNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb25FbWl0dGVyKT1cInNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKVwiXG4gICAgICAoc2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcEVtaXR0ZXIpPVwic2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcCgpXCJcbiAgICAgIChvbkRhdGVQYXN0ZUVtaXR0ZXIpPVwib25EYXRlUGFzdGUoJGV2ZW50KVwiXG4gICAgICAob25CbHVyRW1pdHRlcik9XCJvbkJsdXIoKVwiXG4gICAgICAoY2hhbmdlU2VsZWN0aW9uRW1taXRlcik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAob25Gb2N1c0VtaXR0ZXIpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChzZXRTZWxlY3Rpb25FbW1pdGVyKT1cInNldFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IExhYmVsIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmVcIj5cbiAgICA8bGFiZWxcbiAgICAgIFtmb3JdPVwiaW5wdXRDb25maWcubmFtZVwiXG4gICAgICBjbGFzcz1cImlucHV0LWxhYmVsIHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19IHt7XG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmN1c3RvbUNsYXNzXG4gICAgICB9fVwiXG4gICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgZ2V0U3VwZXJDb250cm9sPy52YWx1ZSB8IGxhYmVsQ2xhc3M6IGlzRm9jdXNJbnB1dCA6IGlucHV0Q29uZmlnXG4gICAgICAgIDogaXNUb3VjaGVkSW5wdXQgOiBnZXRTdXBlckNvbnRyb2w/LmludmFsaWRcbiAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWRcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmxhYmVsXCI+XG4gICAgICAgIDxzcGFuPnt7IGlucHV0Q29uZmlnLmxhYmVsIH19IDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLm11bHRpcGxlTGFiZWw/LmxhYmVscz8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8uY3VzdG9tQ2xhc3MhXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbXVsdGlwbGUtbGFiZWxzLXBvc2l0aW9uLW9uLWZvY3VzJzpcbiAgICAgICAgICAgICAgaXNGb2N1c0lucHV0IHx8XG4gICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM/Lmxlbmd0aCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBpbnB1dENvbmZpZy5pc1JlcXVpcmVkICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgaW5wdXRDb25maWcubXVsdGlwbGVMYWJlbD8ubGFiZWxzXCI+XG4gICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IENsZWFyIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcgfCBzaG93Q2xlYXJcIj5cbiAgICA8YXBwLWNhLWlucHV0LWNsZWFyXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgW2lzRm9jdXNJbnB1dF09XCJpc0ZvY3VzSW5wdXRcIlxuICAgICAgW2luY29ycmVjdFZhbHVlXT1cImluY29ycmVjdFZhbHVlXCJcbiAgICAgIFtzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvcl09XCJzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvclwiXG4gICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuICAgICAgKGNsZWFySW5wdXRDbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIlxuICAgID5cbiAgICA8L2FwcC1jYS1pbnB1dC1jbGVhcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBDbGVhciBmb3IgZGlzcGF0Y2ggZHJvcGRvd24gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJpbnB1dC1jbGVhci1kaXNwYXRjaFwiXG4gICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnLWljb25cbiAgICAgICAgW3NyY109XCJpbnB1dFN2Z1JvdXRlcy54Q2xlYXJDb21tb25TdmdcIlxuICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLWRpc3BhdGNoLWljb25cIlxuICAgICAgPjwvc3ZnLWljb24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGVuIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yICYmXG4gICAgICAhaXNFZGl0SW5wdXQgJiZcbiAgICAgICFpc0ZvY3VzSW5wdXQgJiZcbiAgICAgIGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJpbnB1dC1wZW4tY29udGFpbmVyXCJcbiAgICAgIG5nYlRvb2x0aXBcbiAgICAgIFttYWluQ2FUb29sdGlwXT1cIidFZGl0J1wiXG4gICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyMyRjJGMkYnXCJcbiAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgIChjbGljayk9XCJvbkVkaXRJbnB1dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnLWljb24gW3NyY109XCJpbnB1dFN2Z1JvdXRlcy5pbnB1dFBlblN2Z1wiIGNsYXNzPVwiaW5wdXQtcGVuXCI+PC9zdmctaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBJbnZhbGlkIERhbmdlciBNYXJrIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgIHwgc2hvd0ludmFsaWREYW5nZXJNYXJrXG4gICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2xcbiAgICAgICAgICA6IGlzRm9jdXNJbnB1dFxuICAgICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICBcIlxuICA+XG4gICAgPHN2Zy1pY29uXG4gICAgICBjbGFzcz1cImlucHV0LWludmFsaWQtZGFuZ2VyLW1hcmsgIHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCJcbiAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMuZGFuZ2VyU3ZnXCJcbiAgICA+XG4gICAgPC9zdmctaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJbnB1dCBWYWxpZCBDaGVjayAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBnZXRTdXBlckNvbnRyb2xcbiAgICAgICAgfCBzaG93VmFsaWRDaGVjazogaXNGb2N1c0lucHV0IDogaW5wdXRDb25maWcgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gICAgXCJcbiAgPlxuICAgIDxzdmctaWNvblxuICAgICAgY2xhc3M9XCJpbnB1dC1yZXF1aXJlZC1jaGVjayB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICBbc3JjXT1cImlucHV0U3ZnUm91dGVzLmNvbmZpcm1TdmdcIlxuICAgID48L3N2Zy1pY29uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IFBhc3N3b3JkIENhcHMgTG9jayBBbmQgRXllIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcudHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiPlxuICAgIDxhcHAtY2EtaW5wdXQtcGFzc3dvcmRcbiAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgW2lzQ2Fwc0xvY2tPbl09XCJpc0NhcHNMb2NrT25cIlxuICAgICAgW2lzVG9nZ2xlUGFzc3dvcmRdPVwiaXNUb2dnbGVQYXNzd29yZFwiXG4gICAgICAob25Ub2dnbGVQYXNzd29yZENsaWNrKT1cIm9uVG9nZ2xlUGFzc3dvcmQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLWNhLWlucHV0LXBhc3N3b3JkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IERyb3Bkb3duIEFycm93IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcgfCBzaG93RHJvcGRvd25BcnJvd1wiPlxuICAgIDxzdmctaWNvblxuICAgICAgY2xhc3M9XCJpbnB1dC1kcm9wZG93bi1hcnJvdyB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiXG4gICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgZ2V0U3VwZXJDb250cm9sXG4gICAgICAgICAgfCBpbnB1dERyb3Bkb3duQXJyb3dDbGFzc1xuICAgICAgICAgICAgOiBpc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgIDogaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgXCJcbiAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMuaW5wdXREcm9wZG93bkFycm93U3ZnXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bk9wdGlvbnMoKVwiXG4gICAgPjwvc3ZnLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGxhY2Vob2xkZXIgSWNvbiAtLT5cbiAgPG5nLWNvbnRhaW5lciBcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uIHx8XG4gICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgfHxcbiAgICAgIGlucHV0Q29uZmlnLm5hbWUgPT09ICd0aW1lcGlja2VyJ1xuICAgIFwiXG4gID5cbiAgICA8YXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb25cbiAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICBbaXNGb2N1c0lucHV0XT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICBbaXNUb3VjaGVkSW5wdXRdPVwiaXNUb3VjaGVkSW5wdXRcIlxuICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cInNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXCJcbiAgICAgIFtpc0VkaXRJbnB1dF09XCJpc0VkaXRJbnB1dFwiXG4gICAgICBbZGF0ZVRpbWVQb3BvdmVyXT1cImRhdGVUaW1lUG9wb3ZlclwiXG4gICAgICAob25Qb3BvdmVyU2hvd25FbWl0dGVyKT1cIm9uUG9wb3ZlclNob3duKClcIlxuICAgICAgKG9uUG9wb3ZlckhpZGRlbkVtaXR0ZXIpPVwib25Qb3BvdmVySGlkZGVuKClcIlxuICAgICAgKG9uUGxhY2Vob2xkZXJJY29uRXZlbnRFbWl0dGVyKT1cIm9uUGxhY2Vob2xkZXJJY29uRXZlbnQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLWNhLWlucHV0LXBsYWNlaG9sZGVyLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgUGxhY2Vob2xkZXIgVGV4dCAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpbnB1dENvbmZpZyB8IHNob3dQbGFjZWhvbGRlclRleHQgOiBnZXRTdXBlckNvbnRyb2wgOiBcbiAgICAgIGlzVmlzaWJsZUNvbW1hbmRzIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgIFwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYS1wbGFjZWhvbGRlci10ZXh0IHt7IGlucHV0Q29uZmlnLmN1c3RvbUNsYXNzIH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIiAgICAgIFxuICAgICAgaXNGb2N1c0lucHV0IHwgaW5wdXRQbGFjZWhvbGRlclRleHRDbGFzc1xuICAgICAgICA6IGlzVG91Y2hlZElucHV0IDogZ2V0U3VwZXJDb250cm9sIDogaW5wdXRDb25maWdcbiAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kcyA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICAgIFwiXG4gICAgICBbc3R5bGUubGVmdF09XCJcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpID09PSBpbnB1dFN0cmluZ0VudW0uUEVSU09OUyB8fFxuICAgICAgICBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQ/LnRvTG93ZXJDYXNlKCkgPT09IGlucHV0U3RyaW5nRW51bS5WRUhJQ0xFU1xuICAgICAgICAgID8gMzAgK1xuICAgICAgICAgICAgKGdldFN1cGVyQ29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCArIDEpICogOSArXG4gICAgICAgICAgICAncHgnXG4gICAgICAgICAgOiBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgICAgIGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyVGV4dD8udG9Mb3dlckNhc2UoKSAhPT0gaW5wdXRDb21tYW5kc1R5cGUuTU9OVEhTXG4gICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICA6IChnZXRTdXBlckNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggKyAxKSAqIDggKyAncHgnXG4gICAgICBcIlxuICAgICAgW3N0eWxlLnJpZ2h0XT1cIlxuICAgICAgICBpc0ZvY3VzSW5wdXQgJiZcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJUZXh0Py50b0xvd2VyQ2FzZSgpICE9PSBpbnB1dENvbW1hbmRzVHlwZS5NT05USFNcbiAgICAgICAgICA/ICcyOHB4J1xuICAgICAgICAgIDogJ2F1dG8nXG4gICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclRleHQgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBJbnB1dCBMYWJlbCBDb3VudGVyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIHNlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yICYmXG4gICAgICBnZXRTdXBlckNvbnRyb2w/LnZhbHVlICYmXG4gICAgICAhaXNGb2N1c0lucHV0ICYmXG4gICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgaW5wdXRDb25maWcuc2hvd0NvdW50XG4gICAgXCJcbiAgPlxuICAgIDxwXG4gICAgICBbc3R5bGUudG9wXT1cIic0cHgnXCJcbiAgICAgIFtzdHlsZS5sZWZ0XT1cIlxuICAgICAgICAoZ2V0U3VwZXJDb250cm9sPy52YWx1ZT8udG9TdHJpbmcoKT8ubGVuZ3RoICsgNi41KSAqIDggKyAncHgnXG4gICAgICBcIlxuICAgICAgY2xhc3M9XCJpbnB1dC1sYWJlbC1jb3VudGVyXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvci5jb3VudCB9fVxuICAgIDwvcD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBTcGVjaWFsIERyb3Bkb3duIFNlbGVjdGVkIFNWRyB3aXRoIG9yIFdpdGhvdXQgVGV4dCAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5zdmcgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uaGlkZUFsbEl0ZW1zSW5JbnB1dERyb3Bkb3duICYmXG4gICAgICAhKCFpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LndpdGhUZXh0ICYmIGlzRm9jdXNJbnB1dCkgJiZcbiAgICAgICEoXG4gICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8udGVtcGxhdGUhXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgIGlzRm9jdXNJbnB1dCAmJlxuICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ucmVtb3ZlXG4gICAgICApICYmXG4gICAgICAhaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8ubmFtZUluaXRpYWxzSW5zdGVhZFVybFxuICAgIFwiXG4gID5cbiAgICA8c3ZnLWljb25cbiAgICAgICAgW3NyY109XCJpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LnVybCFcIlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGVkLWltYWdlIHt7XG4gICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICB9fVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAndW5zZXQtY29sb3InOiBpc0ZvY3VzSW5wdXQgJiYgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICB9XCJcbiAgICAgICAgW3N2Z1N0eWxlXT1cIntcbiAgICAgICAgICBmaWxsOlxuICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvciAmJiAhaXNGb2N1c0lucHV0XG4gICAgICAgICAgICAgID8gaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jb2xvclxuICAgICAgICAgICAgICA6ICcjZmZmZmZmJ1xuICAgICAgICB9XCJcbiAgICA+XG4gICAgPC9zdmctaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBTcGVjaWFsIERyb3Bkb3duIFNlbGVjdGVkIEltYWdlIFdpdGggVGV4dCBXaXRoIEluaXRpYWxzIG5hbWUgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8uaW1hZ2UgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uaGlkZUFsbEl0ZW1zSW5JbnB1dERyb3Bkb3duICYmXG4gICAgICBpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py51cmwgJiZcbiAgICAgICFpbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0Py5uYW1lSW5pdGlhbHNJbnN0ZWFkVXJsXG4gICAgXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2UgbmFtZS1pbml0aWFscy1pbnN0ZWFkLXVybFwiXG4gICAgICBbc3JjXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8udXJsXCJcbiAgICAgIFthbHRdPVwiJ0lucHV0IEltYWdlJ1wiXG4gICAgLz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/LmRyb3Bkb3duSW1hZ2VJbnB1dD8ubmFtZUluaXRpYWxzSW5zdGVhZFVybCAmJlxuICAgICAgIWlucHV0Q29uZmlnPy5oaWRlQWxsSXRlbXNJbklucHV0RHJvcGRvd24gJiZcbiAgICAgICEoIWlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgJiYgaXNGb2N1c0lucHV0KVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm5vLXByb2ZpbGUtaW1hZ2UgZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2UgbmFtZS1pbml0aWFscy1pbnN0ZWFkLXVybFwiXG4gICAgPlxuICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgW2luZHhdPVwiMFwiXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3VzZXInXCJcbiAgICAgICAgICBbbmFtZV09XCJpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/Lm5hbWVJbml0aWFsc0luc3RlYWRVcmwhXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLWNhLXByb2ZpbGUtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTXVsdGlwbGUgSW5wdXQgVmFsdWVzIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGlucHV0Q29uZmlnPy5tdWx0aXBsZUlucHV0VmFsdWVzPy5vcHRpb25zPy5sZW5ndGggJiYgIWlzRm9jdXNJbnB1dFxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlucHV0LWNvbnRyb2wge3tcbiAgICAgICAgaW5wdXRDb25maWcubXVsdGlwbGVJbnB1dFZhbHVlcz8uY3VzdG9tQ2xhc3NcbiAgICAgIH19XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bk9wdGlvbnMoKVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgYWxpZ24taXRlbXM6IGNlbnRlclwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBpdGVtIG9mIGlucHV0Q29uZmlnLm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM7XG4gICAgICAgICAgbGV0IGluZHggPSBpbmRleDtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0lkZW50aXR5XG4gICAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgICA8IS0tIEltYWdlIC8gU1ZHIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAmJiBpdGVtPy5pc0ltZ1wiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAhPT0gJ25vLXVybCdcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMThweCcsXG4gICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nOiAxLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGlzJzogJzJweCdcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmxvZ29OYW1lXCJcbiAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmxvZ29OYW1lID09PSAnbm8tdXJsJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8YXBwLWNhLXByb2ZpbGUtaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgICAgIDwhLS0gT3duZXIgRmxhZyAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0/LmlzT3duZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1kaXNwYXRjaGVzLXR0ZC1vd25lclwiPlxuICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXRTdmdSb3V0ZXMub3duZXJCYWRnZUJsdWVTdmdcIlxuICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNTdmdcIj5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BheXJvbGwtZGVkdWN0aW9uLXRydWNrLXN2Zyc6IHRlbXBsYXRlID09PSBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uUEFZUk9MTF9UUlVDS1NcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwie3sgaXRlbT8uc3ViRm9sZGVyIH19XCJcbiAgICAgICAgICAgICAgW3NyY109XCJpdGVtPy5sb2dvTmFtZSFcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gIFxuICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzUHJvZ3Jlc3NCYXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlwbGUtaW5wdXQtdGV4dFwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb2xvcjogJyMyRjJGMkYnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgY291bnRlcjogaXRlbT8uaXNDb3VudGVyLFxuICAgICAgICAgICAgICAgICdjb3VudGVyLW9uZSc6IGl0ZW0/LnZhbHVlID09PSAxXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5zZWNvbmRfdmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogJyM5MTkxOTEnIH1cIlxuICAgICAgICAgICAgICAgICAgPnt7IGl0ZW0uc2Vjb25kX3ZhbHVlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgICAgPCEtLSBMb2FkIEJyb2tlciBQcm9ncmVzc0JhciAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uaXNQcm9ncmVzc0JhclwiPlxuICAgICAgICAgICAgPGNhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICAgIFt0b3RhbEFtb3VudF09XCJpdGVtLnNlY29uZF92YWx1ZSFcIlxuICAgICAgICAgICAgICBbYXZhaWxhYmxlQ3JlZGl0XT1cIml0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogMFwiXG4gICAgICAgICAgICA+PC9jYS1sb2FkLW1vZGFsLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgXG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTXVsdGlwbGUgSW5wdXQgUGxhY2Vob2xkZXIgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgaW5wdXRDb25maWc/Lm11bHRpcGxlSW5wdXRWYWx1ZXM/Lm9wdGlvbnM/Lmxlbmd0aCAmJlxuICAgICAgaXNGb2N1c0lucHV0ICYmXG4gICAgICAhZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlucHV0LWNvbnRyb2wgbXVsdGlwbGUtaW5wdXQtcGxhY2Vob2xkZXIge3tcbiAgICAgICAgaW5wdXRDb25maWcubXVsdGlwbGVJbnB1dFZhbHVlcz8uY3VzdG9tQ2xhc3NcbiAgICAgIH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgIGZvY3VzOiBpc0ZvY3VzSW5wdXQsXG4gICAgICAgICdwYXlyb2xsLWRlZHVjdGlvbi10cnVjayc6IHRlbXBsYXRlID09PSBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uUEFZUk9MTF9UUlVDS1NcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIlxuICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICBsZXQgaXRlbSBvZiBpbnB1dENvbmZpZy5tdWx0aXBsZUlucHV0VmFsdWVzPy5vcHRpb25zO1xuICAgICAgICAgIGxldCBpbmR4ID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tJZGVudGl0eVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8IS0tIEltYWdlIC8gU1ZHIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNJbWdcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9jdXNhYmxlLWltYWdlJzogaXNGb2N1c0lucHV0IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5sb2dvTmFtZSAhPT0gJ25vLXVybCdcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMThweCcsXG4gICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJzogMSxcbiAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXMnOiAnMnB4J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5sb2dvTmFtZVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubG9nb05hbWUgPT09ICduby11cmwnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgICAgICAgICAgIFtpbmR4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS52YWx1ZSFcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1wcm9maWxlLWltYWdlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8ubG9nb05hbWUgJiYgaXRlbT8uaXNTdmdcIj5cbiAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICAgICAgICdmb2N1c2FibGUtc3ZnJzogaXNGb2N1c0lucHV0LFxuICAgICAgICAgICAgICAncGF5cm9sbC1kZWR1Y3Rpb24tdHJ1Y2stc3ZnJzogdGVtcGxhdGUgPT09IGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLU1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGl0ZW0/LnN1YkZvbGRlciB9fSB7e1xuICAgICAgICAgICAgICBpdGVtPy5sb2dvVHlwZT8udHJpbSgpPy5yZXBsYWNlKCcgJywgJycpPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbc3JjXT1cIml0ZW0/LmxvZ29OYW1lIVwiXG4gICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgPCEtLSBUZXh0IC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzUHJvZ3Jlc3NCYXJcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXBsZS1pbnB1dC10ZXh0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2ZvY3VzYWJsZS10ZXh0JzogaXNGb2N1c0lucHV0LFxuICAgICAgICAgICAgICBjb3VudGVyOiBpdGVtPy5pc0NvdW50ZXIsXG4gICAgICAgICAgICAgICdjb3VudGVyLWZvY3VzJzogaXRlbT8uaXNDb3VudGVyICYmIGlzRm9jdXNJbnB1dCxcbiAgICAgICAgICAgICAgJ2NvdW50ZXItb25lJzogaXRlbT8udmFsdWUgPT09IDEsXG4gICAgICAgICAgICAgICdjYS1hZGQtZG90JzogdGVtcGxhdGUgPT09IGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVJcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjb2xvcjogJyM2RjlFRTAnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLnZhbHVlIH19XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uc2Vjb25kX3ZhbHVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0uc2Vjb25kX3ZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgIDwhLS0gTG9hZCBCcm9rZXIgUHJvZ3Jlc3NCYXIgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5pc1Byb2dyZXNzQmFyXCI+XG4gICAgICAgICAgPGNhLWxvYWQtbW9kYWwtcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICBbdG90YWxBbW91bnRdPVwiaXRlbS5zZWNvbmRfdmFsdWUhXCJcbiAgICAgICAgICAgIFthdmFpbGFibGVDcmVkaXRdPVwiaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiAwXCJcbiAgICAgICAgICAgIFtpbnB1dEZvY3VzXT1cImlzRm9jdXNJbnB1dFwiXG4gICAgICAgICAgPjwvY2EtbG9hZC1tb2RhbC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBbdHlwZV09XCJpbnB1dENvbmZpZy50eXBlIHwgaW5wdXRUeXBlOiBpc1RvZ2dsZVBhc3N3b3JkXCJcbiAgICBbaWRdPVwiaW5wdXRDb25maWcuaWQgPyBpbnB1dENvbmZpZy5pZCA6IGlucHV0Q29uZmlnLm5hbWVcIlxuICAgIFtuYW1lXT1cImlucHV0Q29uZmlnLm5hbWVcIlxuICAgIFtkaXNhYmxlZF09XCJpbnB1dENvbmZpZy5pc0Rpc2FibGVkIVwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJpbnB1dENvbmZpZy5hdXRvY29tcGxldGUgPyBpbnB1dENvbmZpZy5hdXRvY29tcGxldGUgOiAnb2ZmJ1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgKGlucHV0Q29uZmlnLnBsYWNlaG9sZGVySW5zdGVhZE9mTGFiZWwgJiZcbiAgICAgIGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyICYmXG4gICAgICBpc0ZvY3VzSW5wdXRcbiAgICAgICAgPyBpbnB1dENvbmZpZy5wbGFjZWhvbGRlclxuICAgICAgICA6ICcnKSB8fFxuICAgICAgKGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyICYmIGlzRm9jdXNJbnB1dCA/IGlucHV0Q29uZmlnLnBsYWNlaG9sZGVyIDogJycpXG4gICAgXCJcbiAgICBbbWluTGVuZ3RoXT1cImlucHV0Q29uZmlnLm1pbkxlbmd0aCA/IGlucHV0Q29uZmlnLm1pbkxlbmd0aCA6IDBcIlxuICAgIFttYXhMZW5ndGhdPVwiaW5wdXRDb25maWcubWF4TGVuZ3RoID8gaW5wdXRDb25maWcubWF4TGVuZ3RoIDogOTk5XCJcbiAgICBbbWFza109XCJpbnB1dENvbmZpZy5tYXNrXCJcbiAgICBbbWluXT1cImlucHV0Q29uZmlnLm1pbiA/IGlucHV0Q29uZmlnLm1pbiA6IDBcIlxuICAgIFttYXhdPVwiaW5wdXRDb25maWcubWF4XCJcbiAgICBbc3RlcF09XCJpbnB1dENvbmZpZy5zdGVwID8gaW5wdXRDb25maWcuc3RlcCA6IG51bGxcIlxuICAgIFtyZWFkT25seV09XCJpbnB1dENvbmZpZy5yZWFkT25seVwiXG4gICAgYXBwTWluTWF4VmFsdWVcbiAgICBbbWluVmFsdWVdPVwiaW5wdXRDb25maWcubWluIVwiXG4gICAgW21heFZhbHVlXT1cImlucHV0Q29uZmlnLm1heCFcIlxuICAgIGlucHV0Zm9ybWF0PVwiZGQtbW0teXlcIlxuICAgIGNsYXNzPVwiaW5wdXQtY29udHJvbFxuICB7eyBpbnB1dENvbmZpZy50ZXh0VHJhbnNmb3JtIH19XG4gIHt7IGlucHV0Q29uZmlnLnRleHRBbGlnbiB9fVxuICB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVxuICBcIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgZ2V0U3VwZXJDb250cm9sXG4gICAgICAgIHwgaW5wdXRDbGFzc1xuICAgICAgICAgIDogaXNGb2N1c0lucHV0XG4gICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICA6IGlucHV0XG4gICAgICAgICAgOiBpc1Zpc2libGVDb21tYW5kc1xuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy5pbnZhbGlkXG4gICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWRcbiAgICAgICAgICA6IGlzRHJvcGRvd25Ub2dnbGVyXG4gICAgICAgICAgOiBpc0VkaXRJbnB1dFxuICAgICAgICAgIDogdGVtcGxhdGVcbiAgICBcIlxuICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgKHNlbGVjdCk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGlucHV0KT1cIm9uQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpOyB0cmFuc2Zvcm1UZXh0KCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIlxuICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgaW5wdXRDb25maWcuc3RhdHVzU3R5bGUgPyAoaW5wdXQudmFsdWUgfCBsb2FkU3RhdHVzQ29sb3IpIDogJydcbiAgICBcIlxuICAvPlxuXG4gIDwhLS0gUGxhY2Vob2xkZXIgSWNvbiBvbiBSaWdodCBTaWRlIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlXCI+XG4gICAgPHN2Zy1pY29uXG4gICAgICBjbGFzcz1cInBsYWNlaG9sZGVyLWljb24tcmlnaHQtc2lkZSB7e1xuICAgICAgICBpbnB1dENvbmZpZy5wbGFjZWhvbGRlckljb25Db2xvclxuICAgICAgfX1cIlxuICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlzRm9jdXNJbnB1dFxuICAgICAgICAgIHwgaW5wdXRQbGFjZWhvbGRlckljb25SaWdodENsYXNzXG4gICAgICAgICAgICA6IGdldFN1cGVyQ29udHJvbFxuICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgOiBpc1RvdWNoZWRJbnB1dFxuICAgICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gICAgICBcIlxuICAgICAgW3NyY109XCJcbiAgICAgICAgaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICB8IGNhU3ZnIDogJ2NvbW1vbidcbiAgICAgIFwiXG4gICAgPjwvc3ZnLWljb24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gSW5wdXQgRXJyb3IgTWVzc2FnZSAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAhKCFnZXRTdXBlckNvbnRyb2w/LnZhbHVlICYmIGlzRm9jdXNJbnB1dCkgJiZcbiAgICAgIChpc1RvdWNoZWRJbnB1dCB8fCBnZXRTdXBlckNvbnRyb2w/LnRvdWNoZWQgfHwgZ2V0U3VwZXJDb250cm9sPy52YWx1ZSkgJiZcbiAgICAgIGdldFN1cGVyQ29udHJvbD8uaW52YWxpZCAmJlxuICAgICAgIWlucHV0Q29uZmlnLmlzSW52YWxpZFNlYXJjaEluRHJvcGRvd24gJiZcbiAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlucHV0Q29uZmlnLmhpZGVFcnJvck1lc3NhZ2UgfHwgaW5wdXRDb25maWcuZXJyb3JJbnNpZGVJbnB1dClcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZXJyb3Ige3sgaW5wdXRDb25maWcuY3VzdG9tQ2xhc3MgfX1cIj5cbiAgICAgICAge3sgZ2V0U3VwZXJDb250cm9sPy5lcnJvcnMgfCBpbnB1dEVycm9yOiBpbnB1dENvbmZpZy5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEVycm9yIE1lc3NhZ2UgSW5zaWRlIElucHV0IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dENvbmZpZy5lcnJvckluc2lkZUlucHV0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWluc2lkZS1pbnB1dCB7eyBpbnB1dENvbmZpZy5jdXN0b21DbGFzcyB9fVwiPlxuICAgICAgICB7eyBnZXRTdXBlckNvbnRyb2w/LmVycm9ycyB8IGlucHV0RXJyb3I6IGlucHV0Q29uZmlnLm5hbWUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0Q29uZmlnLmZpeGVkUGxhY2hvbGRlciAmJiBpbnB1dC52YWx1ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZml4ZWQtcGxhY2Vob2Rlci1sYWJlbFwiPlxuICAgICAge3sgaW5wdXRDb25maWcuZml4ZWRQbGFjaG9sZGVyIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48IS0tIFBvcG92ZXIgZm9yIERhdGVUaW1lIFBpY2tlcnMgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUG9wb3ZlciBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImRhdGV0aW1lLWRyb3Bkb3duLWhvbGRlclwiPlxuICAgIDxhcHAtY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnNcbiAgICAgIFtjYWxlbmRhclR5cGVdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyB8fFxuICAgICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlckJhbmtDYXJkJ1xuICAgICAgICAgID8gJ2RhdGUnXG4gICAgICAgICAgOiAndGltZSdcbiAgICAgIFwiXG4gICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidNTS9ERC9ZWSdcIlxuICAgICAgW2RhdGVUaW1lXT1cImRhdGVUaW1lSW5wdXREYXRlXCJcbiAgICAgIChjbG9zZVBvcG92ZXIpPVwiY2xvc2VQb3BvdmVyKClcIlxuICAgID48L2FwcC1jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ReactiveFormsModule } from '@angular/forms';
3
3
  import { Component, EventEmitter, Input, Output, Self, ViewChild, ViewEncapsulation, HostListener, } from '@angular/core';
4
- import { distinctUntilChanged, filter, of, Subject, switchMap, takeUntil, throttleTime, } from 'rxjs';
4
+ import { catchError, debounceTime, distinctUntilChanged, filter, of, Subject, switchMap, takeUntil, tap, } from 'rxjs';
5
5
  import { FormsModule, } from '@angular/forms';
6
6
  // Components
7
7
  import { CaInputDropdownComponent } from '../ca-input-dropdown/ca-input-dropdown.component';
@@ -13,6 +13,7 @@ import { InputAddressCommandsStringEnum } from './enums/input-address-commands-s
13
13
  import { InputAddressStopTypesStringEnum } from './enums/input-address-stop-types-string.enum';
14
14
  import { InputAddressTypeStringEnum } from './enums/input-address-type-string.enum';
15
15
  import { InputAddressLayersStringEnum } from './enums/input-address-layers-string.enum';
16
+ import { eInputBasicString } from './enums/input-address-basic-string.enum';
16
17
  import { CaAppTooltipV2Component } from '../ca-app-tooltip-v2/ca-app-tooltip-v2.component';
17
18
  import { HttpClientModule } from '@angular/common/http';
18
19
  import * as i0 from "@angular/core";
@@ -112,7 +113,16 @@ export class CaInputAddressDropdownComponent {
112
113
  }
113
114
  initChangesListener() {
114
115
  this.getSuperControl?.valueChanges
115
- ?.pipe(distinctUntilChanged(), throttleTime(1), takeUntil(this.destroy$), filter((term) => {
116
+ ?.pipe(distinctUntilChanged(), takeUntil(this.destroy$), tap((term) => {
117
+ this.inputConfig = {
118
+ ...this.inputConfig,
119
+ loadingSpinner: {
120
+ ...this.inputConfig.loadingSpinner,
121
+ isLoading: true,
122
+ size: eInputBasicString.SMALL,
123
+ color: eInputBasicString.WHITE,
124
+ },
125
+ };
116
126
  if (!term) {
117
127
  this.inputConfig = {
118
128
  ...this.inputConfig,
@@ -123,7 +133,7 @@ export class CaInputAddressDropdownComponent {
123
133
  };
124
134
  this.addresList = [];
125
135
  }
126
- else if (term != this.currentAddressData?.address.address &&
136
+ else if (term !== this.currentAddressData?.address.address &&
127
137
  this.inputConfig.name ===
128
138
  InputAddressTypeStringEnum.ROUTING_ADDRESS) {
129
139
  this.currentAddressData = null;
@@ -141,40 +151,29 @@ export class CaInputAddressDropdownComponent {
141
151
  this.selectedAddress.emit(addressData);
142
152
  }
143
153
  this.allowValidation = true;
154
+ }), filter((term) => {
144
155
  return term?.length >= 3;
145
- }), switchMap((query) => {
146
- this.inputConfig = {
147
- ...this.inputConfig,
148
- loadingSpinner: {
149
- ...this.inputConfig.loadingSpinner,
150
- isLoading: true,
151
- size: 'small',
152
- color: 'white',
153
- },
154
- };
156
+ }), debounceTime(500), switchMap((query) => {
155
157
  const params = {
156
- query,
158
+ query: query,
157
159
  searchLayers: this.searchLayers,
158
160
  closedBorder: this.closedBorder,
159
161
  };
160
162
  this.sentAddressData.next(params);
161
- return of(this.receivedAddressList);
163
+ return of(this.receivedAddressList).pipe(catchError(() => of([])));
162
164
  }))
163
165
  .subscribe(() => {
164
166
  let isValid = true;
165
167
  if (this.searchLayers[0] ===
166
168
  InputAddressLayersStringEnum.ADDRESS) {
167
169
  const address = this._activeAddress?.address;
168
- if (address) {
170
+ if (address)
169
171
  isValid = this.checkAddressValidation(address);
170
- }
171
172
  }
172
- if (!this._activeAddress || !isValid) {
173
+ if (!this._activeAddress || !isValid)
173
174
  this.getSuperControl.setErrors({ invalid: true });
174
- }
175
- else {
175
+ else
176
176
  this.getSuperControl.setErrors(null);
177
- }
178
177
  this.inputConfig = {
179
178
  ...this.inputConfig,
180
179
  loadingSpinner: {
@@ -382,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
382
381
  type: HostListener,
383
382
  args: ['document:keydown', ['$event']]
384
383
  }] } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUlILFdBQVcsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBS3hCLGFBQWE7QUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUU1RixVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXZELFFBQVE7QUFDUixPQUFPLEVBQUUsOEJBQThC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O2dCQUljLGFBQWE7c0JBQWhDLEtBQUs7Z0JBZWMsbUJBQW1CO3NCQUF0QyxLQUFLO2dCQWVjLG1CQUFtQjtzQkFBdEMsS0FBSztnQkFlVyxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBR1MsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgb2YsXG4gICAgU3ViamVjdCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxuICAgIHRocm90dGxlVGltZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIFVudHlwZWRGb3JtR3JvdXAsXG4gICAgTmdDb250cm9sLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIENvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50JztcblxuLy8gTW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy8gZW51bXNcbmltcG9ydCB7IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvaW5wdXQtYWRkcmVzcy1jb21tYW5kcy1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NTdG9wVHlwZXNTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLXN0b3AtdHlwZXMtc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3MtdHlwZS1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWxheWVycy1zdHJpbmcuZW51bSc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgQWRkcmVzc0RhdGEgfSBmcm9tICcuL21vZGVscy9hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3QgfSBmcm9tICcuL21vZGVscy9hZGRyZXNzLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWFuZHNIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMvY29tbWFuZHMtaGFuZGxlci5tb2RlbCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTZWFyY2hMYXllciB9IGZyb20gJy4uLy4uL21vZGVscy9hdXRvY29tcGxldGUtc2VhcmNoLWxheWVyLm1vZGVsJztcbmltcG9ydCB7IENhQXBwVG9vbHRpcFYyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYXBwLXRvb2x0aXAtdjIvY2EtYXBwLXRvb2x0aXAtdjIuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NDb21tYW5kc1N0cmluZyB9IGZyb20gJy4vbW9kZWxzL2lucHV0LWFkZHJlc3MtY29tbWFuZHMtc3RyaW5nLm1vZGVsJztcbmltcG9ydCB7IFNlbnRBZGRyZXNzRGF0YSB9IGZyb20gJy4vbW9kZWxzL3NlbnQtYWRkcmVzcy1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEFkZHJlc3NMaXN0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkcmVzcy1saXN0LXJlc3BvbnNlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogW1xuICAgICAgICAnLi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudC5zY3NzJyxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcblxuICAgICAgICAvLyBDb21wb25lbnRzXG4gICAgICAgIENhSW5wdXREcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dEFkZHJlc3NEcm9wZG93bkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXREcm9wZG93bicpIGlucHV0RHJvcGRvd24hOiBDYUlucHV0RHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXJUeXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jaGVja1NlYXJjaExheWVycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBhY3RpdmVBZGRyZXNzKHZhbHVlOiBBZGRyZXNzTGlzdCB8IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hMYXllcnNbMF0gPT09IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0uQUREUkVTUykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB2YWx1ZT8uYWRkcmVzcztcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhaXNWYWxpZClcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVjZWl2ZWRBZGRyZXNzRGF0YSh2YWx1ZTogQWRkcmVzc0RhdGEgfCBudWxsKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogdmFsdWUuYWRkcmVzcyEsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHZhbHVlLmFkZHJlc3MgJiYgdmFsdWUubG9uZ0xhdCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb25nTGF0OiB2YWx1ZS5sb25nTGF0LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFkZHJlc3NEYXRhIS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzLmVtaXQodGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlY2VpdmVkQWRkcmVzc0xpc3QodmFsdWU6IEFkZHJlc3NMaXN0UmVzcG9uc2UgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3JlY2VpdmVkQWRkcmVzc0xpc3QgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWU/LmFkZHJlc3Nlcykge1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gdmFsdWUuYWRkcmVzc2VzLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogc3RyaW5nLCBpbmR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5keCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZW50QWRkcmVzc1ZhbHVlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQElucHV0KCkgcHVibGljIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgcHVibGljIGNvbW1hbmRIYW5kbGVyITogQ29tbWFuZHNIYW5kbGVyO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1JvdXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VkQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGluY29ycmVjdFZhbHVlITogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaGlkZUVtcHR5TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGFkZHJlc0xpc3QhOiBBZGRyZXNzTGlzdFtdO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQWRkcmVzczogRXZlbnRFbWl0dGVyPEFkZHJlc3NEYXRhPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGE+KCk7XG4gICAgQE91dHB1dCgpIHNlbnRBZGRyZXNzRGF0YTogRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY29tbWFuZEV2ZW50OiBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGEgfCB7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgICAgICBBZGRyZXNzRGF0YSB8IHt9XG4gICAgPigpO1xuICAgIEBPdXRwdXQoKSBjaGFuZ2VGbGFnOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09IElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTU1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5FTlRFUikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29tbWFuZHMoXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DT05GSVJNXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5FU0NBUEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy9BZGRyZXNzIGRhdGFcbiAgICBwcml2YXRlIHNlYXJjaExheWVycyE6IEF1dG9jb21wbGV0ZVNlYXJjaExheWVyW107XG4gICAgcHVibGljIGN1cnJlbnRBZGRyZXNzRGF0YTogQWRkcmVzc0RhdGEgfCBudWxsID0gbnVsbDtcblxuICAgIC8vQ29uZmdcbiAgICBwdWJsaWMgYWRkcmVzc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGNob3NlbkZyb21Ecm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgYWxsb3dWYWxpZGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHN0b3BUeXBlOiBzdHJpbmcgPSBJbnB1dEFkZHJlc3NTdG9wVHlwZXNTdHJpbmdFbnVtLkVNUFRZO1xuICAgIHByaXZhdGUgcmVxdWVzdFNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgX3JlY2VpdmVkQWRkcmVzc0xpc3Q6IEFkZHJlc3NMaXN0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgX2FjdGl2ZUFkZHJlc3M6IEFkZHJlc3NMaXN0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgYWRkcmVzc0Zvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKF86IGFueSk6IHZvaWQge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRDaGFuZ2VzTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdENoYW5nZXNMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgPy5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHRlcm06IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3Bpbm5lcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtICE9IHRoaXMuY3VycmVudEFkZHJlc3NEYXRhPy5hZGRyZXNzLmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5ST1VUSU5HX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybT8ubGVuZ3RoID49IDM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZy5sb2FkaW5nU3Bpbm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hMYXllcnM6IHRoaXMuc2VhcmNoTGF5ZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkQm9yZGVyOiB0aGlzLmNsb3NlZEJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbnRBZGRyZXNzRGF0YS5uZXh0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnJlY2VpdmVkQWRkcmVzc0xpc3QpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaExheWVyc1swXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZUFkZHJlc3MgfHwgIWlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1NwaW5uZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcubG9hZGluZ1NwaW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZURyb3Bkb3duKGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hMYXllcnNbMF0gPT09IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0uQUREUkVTUykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzKSBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5yZXF1ZXN0U2VudCAmJiBpc1ZhbGlkKVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSA9PT0gdGhpcy5fYWN0aXZlQWRkcmVzcz8uYWRkcmVzcyAmJlxuICAgICAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFkZHJlc3NEYXRhKGFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnNlbnRBZGRyZXNzVmFsdWUuZW1pdChhZGRyZXNzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3REcm9wZG93bihldmVudDogQWRkcmVzc0xpc3QgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUFkZHJlc3MgPSBldmVudCA/IHsgLi4uZXZlbnQsIGFkZHJlc3M6IGV2ZW50Py5uYW1lIH0gOiBudWxsO1xuXG4gICAgICAgIGlmIChldmVudD8ubmFtZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoTGF5ZXJzWzBdID09PSBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGV2ZW50Lm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzRGF0YShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKGV2ZW50Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFkZHJlc3NEYXRhKGV2ZW50Lm5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNob3NlbkZyb21Ecm9wZG93biA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2xlYXJJbnB1dEV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24/LnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tbWFuZHMoXG4gICAgICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgICAgICB0eXBlOiBJbnB1dEFkZHJlc3NDb21tYW5kc1N0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodHlwZSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkNPTkZJUk0gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSkgfHxcbiAgICAgICAgICAgIHR5cGUgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DQU5DRUxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSEudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmRFdmVudC5lbWl0KHRoaXMuY3VycmVudEFkZHJlc3NEYXRhID8/IHt9KTtcblxuICAgICAgICAgICAgdGhpcy5jbG9zZUFkZHJlc3MoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkcmVzc0V4cGFuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkZHJlc3NFeHBhbmRlZCkgdGhpcy5hZGRyZXNzRXhwYW5kZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZUFkZHJlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkcmVzc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSBudWxsO1xuICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dERyb3Bkb3duPy5pbnB1dFJlZj8uY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgIHRoaXMuY2hvc2VuRnJvbURyb3Bkb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1NlYXJjaExheWVycyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoTGF5ZXJzID1cbiAgICAgICAgICAgIHZhbHVlID09PSBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5MT05HX0FERFJFU1NcbiAgICAgICAgICAgICAgICA/IFtJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1NdXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uU0hPUlRfQUREUkVTU1xuICAgICAgICAgICAgICAgICAgPyBbSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5MT0NBTElUWV1cbiAgICAgICAgICAgICAgICAgIDogW107XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVN0b3BUeXBlKCk6IHZvaWQge1xuICAgICAgICBsZXQgZmxhZyA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5zdG9wVHlwZSA9PT0gSW5wdXRBZGRyZXNzU3RvcFR5cGVzU3RyaW5nRW51bS5FTVBUWSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wVHlwZSA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uTE9BREVEO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BUeXBlID0gSW5wdXRBZGRyZXNzU3RvcFR5cGVzU3RyaW5nRW51bS5FTVBUWTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRmxhZy5lbWl0KGZsYWcpO1xuXG4gICAgICAgIGlmICghdGhpcy5jaG9zZW5Gcm9tRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bj8uaW5wdXRSZWY/LmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFkZHJlc3NEYXRhID0ge1xuICAgICAgICAgICAgYWRkcmVzczoge30sXG4gICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICBsb25nTGF0OiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzdHJlZXROdW0gPSAvXFxkLipcXGQvO1xuXG4gICAgICAgIHJldHVybiBzdHJlZXROdW0udGVzdChhZGRyZXNzKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkcmVzc19ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIChjbGljayk9XCJhZGRyZXNzRXhwYW5kKClcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFpbl9hZGRyZXNzX2hvbGRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGlucHV0X2Zvcl9yb3V0aW5nOiBpc1JvdXRpbmcsXG4gICAgICAgICAgICBub3RfZXhwYW5kZWQ6IGlzUm91dGluZyAmJiAhYWRkcmVzc0V4cGFuZGVkLFxuICAgICAgICAgICAgZXhwYW5kZWRfYWRkcmVzczogaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duXG4gICAgICAgICAgICAjaW5wdXREcm9wZG93blxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiYWRkcmVzTGlzdFwiXG4gICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlQWRkcmVzc1wiXG4gICAgICAgICAgICBbaXNJbmNvcnJlY3RWYWx1ZV09XCJpbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaXNBZGRyZXNzRHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pPVwib25TZWxlY3REcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbG9zZURyb3Bkb3duKT1cIm9uQ2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcklucHV0RXZlbnQpPVwib25DbGVhcklucHV0RXZlbnQoKVwiXG4gICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bj5cbiAgICAgICAgQGlmIChpc1JvdXRpbmcgJiYgYWRkcmVzc0V4cGFuZGVkICYmICFoaWRlRW1wdHlMb2FkZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0b3BfaG9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VTdG9wVHlwZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcF90ZXh0XCI+e3sgc3RvcFR5cGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChpc1JvdXRpbmcgJiYgYWRkcmVzc0V4cGFuZGVkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kcyBhZGRyZXNzLWZsYWcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFpbi1jb21tYW5kcyBjYS1pbnB1dC1jb21tYW5kLWZpcnN0XCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5maXJzdENvbW1hbmQ/LnBvcHVwPy5uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5maXJzdENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgICAgICAgICA/LmJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cFwiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhLWlucHV0LWNvbW1hbmQtc3ZnLWZpcnN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFsbG93X2NvbmZpcm1dPVwiY2hvc2VuRnJvbURyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb21tYW5kSGFuZGxlci5jb21tYW5kcy5maXJzdENvbW1hbmQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Db21tYW5kcygkZXZlbnQsICdjb25maXJtJylcIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYWluLWNvbW1hbmRzIGNhLWlucHV0LWNvbW1hbmQtc2Vjb25kXCJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgW21haW5DYVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzPy5zZWNvbmRDb21tYW5kPy5wb3B1cD8ubmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXBcbiAgICAgICAgICAgICAgICAgICAgICAgID8uYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICFjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXBcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kLXN2Zy1zZWNvbmRcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbW1hbmRIYW5kbGVyLmNvbW1hbmRzLnNlY29uZENvbW1hbmQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Db21tYW5kcygkZXZlbnQsICdjYW5jZWwnKVwiXG4gICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG4iXX0=
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBSUgsV0FBVyxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsYUFBYTtBQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTVGLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsUUFBUTtB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QVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFFaEIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLHVCQUF1QjtxQkFDMUI7OzBCQXFISSxJQUFJO3lFQWhIbUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUViLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSWMsYUFBYTtzQkFBaEMsS0FBSztnQkFlYyxtQkFBbUI7c0JBQXRDLEtBQUs7Z0JBZWMsbUJBQW1CO3NCQUF0QyxLQUFLO2dCQWVXLGdCQUFnQjtzQkFBaEMsTUFBTTtnQkFHUyxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBvZixcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlVW50aWwsXG4gICAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgVW50eXBlZEZvcm1Hcm91cCxcbiAgICBOZ0NvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gQ29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC1kcm9wZG93bi9jYS1pbnB1dC1kcm9wZG93bi5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWNvbW1hbmRzLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3Mtc3RvcC10eXBlcy1zdHJpbmcuZW51bSc7XG5pbXBvcnQgeyBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bSB9IGZyb20gJy4vZW51bXMvaW5wdXQtYWRkcmVzcy10eXBlLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zL2lucHV0LWFkZHJlc3MtbGF5ZXJzLXN0cmluZy5lbnVtJztcbmltcG9ydCB7IGVJbnB1dEJhc2ljU3RyaW5nIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC1hZGRyZXNzLWJhc2ljLXN0cmluZy5lbnVtJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBBZGRyZXNzRGF0YSB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzTGlzdCB9IGZyb20gJy4vbW9kZWxzL2FkZHJlc3MtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kc0hhbmRsZXIgfSBmcm9tICcuL21vZGVscy9jb21tYW5kcy1oYW5kbGVyLm1vZGVsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlYXJjaExheWVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1zZWFyY2gtbGF5ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nIH0gZnJvbSAnLi9tb2RlbHMvaW5wdXQtYWRkcmVzcy1jb21tYW5kcy1zdHJpbmcubW9kZWwnO1xuaW1wb3J0IHsgU2VudEFkZHJlc3NEYXRhIH0gZnJvbSAnLi9tb2RlbHMvc2VudC1hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzLWxpc3QtcmVzcG9uc2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICAgICAgICAnLi4vY2EtaW5wdXQvY2EtaW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0QWRkcmVzc0Ryb3Bkb3duQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dERyb3Bkb3duJykgaW5wdXREcm9wZG93biE6IENhSW5wdXREcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlclR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNoZWNrU2VhcmNoTGF5ZXJzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGFjdGl2ZUFkZHJlc3ModmFsdWU6IEFkZHJlc3NMaXN0IHwgbnVsbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaExheWVyc1swXSA9PT0gSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHZhbHVlPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzKSBpc1ZhbGlkID0gdGhpcy5jaGVja0FkZHJlc3NWYWxpZGF0aW9uKGFkZHJlc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICFpc1ZhbGlkKVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCByZWNlaXZlZEFkZHJlc3NEYXRhKHZhbHVlOiBBZGRyZXNzRGF0YSB8IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZS5hZGRyZXNzISxcbiAgICAgICAgICAgICAgICB2YWxpZDogdmFsdWUuYWRkcmVzcyAmJiB2YWx1ZS5sb25nTGF0ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxvbmdMYXQ6IHZhbHVlLmxvbmdMYXQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdCh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVjZWl2ZWRBZGRyZXNzTGlzdCh2YWx1ZTogQWRkcmVzc0xpc3RSZXNwb25zZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcmVjZWl2ZWRBZGRyZXNzTGlzdCA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZT8uYWRkcmVzc2VzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSB2YWx1ZS5hZGRyZXNzZXMubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBzdHJpbmcsIGluZHg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmR4LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHNlbnRBZGRyZXNzVmFsdWU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcbiAgICBASW5wdXQoKSBwdWJsaWMgY29tbWFuZEhhbmRsZXIhOiBDb21tYW5kc0hhbmRsZXI7XG4gICAgQElucHV0KCkgcHVibGljIGlzUm91dGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZWRCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5jb3JyZWN0VmFsdWUhOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWRlRW1wdHlMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYWRkcmVzTGlzdCE6IEFkZHJlc3NMaXN0W107XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRBZGRyZXNzOiBFdmVudEVtaXR0ZXI8QWRkcmVzc0RhdGE+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzRGF0YT4oKTtcbiAgICBAT3V0cHV0KCkgc2VudEFkZHJlc3NEYXRhOiBFdmVudEVtaXR0ZXI8U2VudEFkZHJlc3NEYXRhPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8U2VudEFkZHJlc3NEYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2VEcm9wZG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBjb21tYW5kRXZlbnQ6IEV2ZW50RW1pdHRlcjxBZGRyZXNzRGF0YSB8IHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIEFkZHJlc3NEYXRhIHwge31cbiAgICA+KCk7XG4gICAgQE91dHB1dCgpIGNoYW5nZUZsYWc6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgaW5jb3JyZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uUk9VVElOR19BRERSRVNTXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkVOVEVSKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEFkZHJlc3NEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Db21tYW5kcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkNPTkZJUk1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdFbnVtLkVTQ0FQRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0FkZHJlc3MgZGF0YVxuICAgIHByaXZhdGUgc2VhcmNoTGF5ZXJzITogQXV0b2NvbXBsZXRlU2VhcmNoTGF5ZXJbXTtcbiAgICBwdWJsaWMgY3VycmVudEFkZHJlc3NEYXRhOiBBZGRyZXNzRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy9Db25mZ1xuICAgIHB1YmxpYyBhZGRyZXNzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY2hvc2VuRnJvbURyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBhbGxvd1ZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc3RvcFR5cGU6IHN0cmluZyA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFk7XG4gICAgcHJpdmF0ZSByZXF1ZXN0U2VudDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBfcmVjZWl2ZWRBZGRyZXNzTGlzdDogQWRkcmVzc0xpc3RSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBfYWN0aXZlQWRkcmVzczogQWRkcmVzc0xpc3QgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBhZGRyZXNzRm9ybSE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKF86IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoYW5nZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoXzogYW55KTogdm9pZCB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdENoYW5nZXNMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2hhbmdlc0xpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICA/LnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1NwaW5uZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBlSW5wdXRCYXNpY1N0cmluZy5TTUFMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZUlucHV0QmFzaWNTdHJpbmcuV0hJVEUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcubG9hZGluZ1NwaW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc0xpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0gIT09IHRoaXMuY3VycmVudEFkZHJlc3NEYXRhPy5hZGRyZXNzLmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEFkZHJlc3NUeXBlU3RyaW5nRW51bS5ST1VUSU5HX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlJPVVRJTkdfQUREUkVTUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1ZhbGlkYXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXREcm9wZG93bi5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RTZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEFkZHJlc3MuZW1pdChhZGRyZXNzRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93VmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh0ZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm0/Lmxlbmd0aCA+PSAzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hMYXllcnM6IHRoaXMuc2VhcmNoTGF5ZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkQm9yZGVyOiB0aGlzLmNsb3NlZEJvcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbnRBZGRyZXNzRGF0YS5uZXh0KHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucmVjZWl2ZWRBZGRyZXNzTGlzdCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaExheWVyc1swXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLl9hY3RpdmVBZGRyZXNzPy5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZUFkZHJlc3MgfHwgIWlzVmFsaWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTcGlubmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLmxvYWRpbmdTcGlubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xvc2VEcm9wZG93bihldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoTGF5ZXJzWzBdID09PSBJbnB1dEFkZHJlc3NMYXllcnNTdHJpbmdFbnVtLkFERFJFU1MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gdGhpcy5fYWN0aXZlQWRkcmVzcz8uYWRkcmVzcztcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcykgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVxdWVzdFNlbnQgJiYgaXNWYWxpZClcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUgPT09IHRoaXMuX2FjdGl2ZUFkZHJlc3M/LmFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBZGRyZXNzRGF0YShhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0U2VudCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5zZW50QWRkcmVzc1ZhbHVlLmVtaXQoYWRkcmVzcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0RHJvcGRvd24oZXZlbnQ6IEFkZHJlc3NMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVBZGRyZXNzID0gZXZlbnQgPyB7IC4uLmV2ZW50LCBhZGRyZXNzOiBldmVudD8ubmFtZSB9IDogbnVsbDtcblxuICAgICAgICBpZiAoZXZlbnQ/Lm5hbWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaExheWVyc1swXSA9PT0gSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihldmVudC5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzc0RhdGEoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzRGF0YShldmVudC5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaG9zZW5Gcm9tRHJvcGRvd24gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNsZWFySW5wdXRFdmVudCgpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnB1dERyb3Bkb3duPy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbW1hbmRzKFxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICAgICAgdHlwZTogSW5wdXRBZGRyZXNzQ29tbWFuZHNTdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHR5cGUgPT09IElucHV0QWRkcmVzc0NvbW1hbmRzU3RyaW5nRW51bS5DT05GSVJNICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEpIHx8XG4gICAgICAgICAgICB0eXBlID09PSBJbnB1dEFkZHJlc3NDb21tYW5kc1N0cmluZ0VudW0uQ0FOQ0VMXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkcmVzc0RhdGEhLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kRXZlbnQuZW1pdCh0aGlzLmN1cnJlbnRBZGRyZXNzRGF0YSA/PyB7fSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xvc2VBZGRyZXNzKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZHJlc3NFeHBhbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hZGRyZXNzRXhwYW5kZWQpIHRoaXMuYWRkcmVzc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZHJlc3NFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudEFkZHJlc3NEYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZGRyZXNMaXN0ID0gW107XG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlQWRkcmVzcyA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5wdXREcm9wZG93bj8uaW5wdXRSZWY/LmNsZWFySW5wdXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmNob3NlbkZyb21Ecm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tTZWFyY2hMYXllcnModmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaExheWVycyA9XG4gICAgICAgICAgICB2YWx1ZSA9PT0gSW5wdXRBZGRyZXNzVHlwZVN0cmluZ0VudW0uTE9OR19BRERSRVNTXG4gICAgICAgICAgICAgICAgPyBbSW5wdXRBZGRyZXNzTGF5ZXJzU3RyaW5nRW51bS5BRERSRVNTXVxuICAgICAgICAgICAgICAgIDogdmFsdWUgPT09IElucHV0QWRkcmVzc1R5cGVTdHJpbmdFbnVtLlNIT1JUX0FERFJFU1NcbiAgICAgICAgICAgICAgICAgID8gW0lucHV0QWRkcmVzc0xheWVyc1N0cmluZ0VudW0uTE9DQUxJVFldXG4gICAgICAgICAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2VTdG9wVHlwZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc3RvcFR5cGUgPT09IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcFR5cGUgPSBJbnB1dEFkZHJlc3NTdG9wVHlwZXNTdHJpbmdFbnVtLkxPQURFRDtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9wVHlwZSA9IElucHV0QWRkcmVzc1N0b3BUeXBlc1N0cmluZ0VudW0uRU1QVFk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZUZsYWcuZW1pdChmbGFnKTtcblxuICAgICAgICBpZiAoIXRoaXMuY2hvc2VuRnJvbURyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24/LmlucHV0UmVmPy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RHJvcGRvd24uaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbmNvcnJlY3RJbnB1dChldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmluY29ycmVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRyZXNzRGF0YSA9IHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHt9LFxuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgbG9uZ0xhdDoge30sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBZGRyZXNzLmVtaXQoYWRkcmVzc0RhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tBZGRyZXNzVmFsaWRhdGlvbihhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgc3RyZWV0TnVtID0gL1xcZC4qXFxkLztcblxuICAgICAgICByZXR1cm4gc3RyZWV0TnVtLnRlc3QoYWRkcmVzcykgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZHJlc3NfaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAoY2xpY2spPVwiYWRkcmVzc0V4cGFuZCgpXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1haW5fYWRkcmVzc19ob2xkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBpbnB1dF9mb3Jfcm91dGluZzogaXNSb3V0aW5nLFxuICAgICAgICAgICAgbm90X2V4cGFuZGVkOiBpc1JvdXRpbmcgJiYgIWFkZHJlc3NFeHBhbmRlZCxcbiAgICAgICAgICAgIGV4cGFuZGVkX2FkZHJlc3M6IGlzUm91dGluZyAmJiBhZGRyZXNzRXhwYW5kZWQsXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93blxuICAgICAgICAgICAgI2lucHV0RHJvcGRvd25cbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImFkZHJlc0xpc3RcIlxuICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUFkZHJlc3NcIlxuICAgICAgICAgICAgW2lzSW5jb3JyZWN0VmFsdWVdPVwiaW5jb3JyZWN0VmFsdWVcIlxuICAgICAgICAgICAgW2lzQWRkcmVzc0Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKT1cIm9uU2VsZWN0RHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xvc2VEcm9wZG93bik9XCJvbkNsb3NlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xlYXJJbnB1dEV2ZW50KT1cIm9uQ2xlYXJJbnB1dEV2ZW50KClcIlxuICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24+XG4gICAgICAgIEBpZiAoaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCAmJiAhaGlkZUVtcHR5TG9hZGVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdG9wX2hvbGQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlU3RvcFR5cGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3BfdGV4dFwiPnt7IHN0b3BUeXBlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoaXNSb3V0aW5nICYmIGFkZHJlc3NFeHBhbmRlZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2EtaW5wdXQtY29tbWFuZHMgYWRkcmVzcy1mbGFnIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1haW4tY29tbWFuZHMgY2EtaW5wdXQtY29tbWFuZC1maXJzdFwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cD8ubmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uZmlyc3RDb21tYW5kPy5wb3B1cFxuICAgICAgICAgICAgICAgICAgICAgICAgPy5iYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIhY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LmZpcnN0Q29tbWFuZD8ucG9wdXBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYS1pbnB1dC1jb21tYW5kLXN2Zy1maXJzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hbGxvd19jb25maXJtXT1cImNob3NlbkZyb21Ecm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY29tbWFuZEhhbmRsZXIuY29tbWFuZHMuZmlyc3RDb21tYW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ29tbWFuZHMoJGV2ZW50LCAnY29uZmlybScpXCJcbiAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWFpbi1jb21tYW5kcyBjYS1pbnB1dC1jb21tYW5kLXNlY29uZFwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSGFuZGxlci5jb21tYW5kcz8uc2Vjb25kQ29tbWFuZD8ucG9wdXA/Lm5hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LnNlY29uZENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgICAgICAgICA/LmJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAhY29tbWFuZEhhbmRsZXIuY29tbWFuZHM/LnNlY29uZENvbW1hbmQ/LnBvcHVwXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2EtaW5wdXQtY29tbWFuZC1zdmctc2Vjb25kXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb21tYW5kSGFuZGxlci5jb21tYW5kcy5zZWNvbmRDb21tYW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQ29tbWFuZHMoJGV2ZW50LCAnY2FuY2VsJylcIlxuICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,6 @@
1
+ export var eInputBasicString;
2
+ (function (eInputBasicString) {
3
+ eInputBasicString["SMALL"] = "small";
4
+ eInputBasicString["WHITE"] = "white";
5
+ })(eInputBasicString || (eInputBasicString = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYWRkcmVzcy1iYXNpYy1zdHJpbmcuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24vZW51bXMvaW5wdXQtYWRkcmVzcy1iYXNpYy1zdHJpbmcuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQ3pCLG9DQUFlLENBQUE7SUFDZixvQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gZUlucHV0QmFzaWNTdHJpbmcge1xuICAgIFNNQUxMID0gJ3NtYWxsJyxcbiAgICBXSElURSA9ICd3aGl0ZScsXG59XG4iXX0=