@datarailsshared/datarailsshared 1.6.63 → 1.6.65
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.
- package/datarailsshared-datarailsshared-1.6.65.tgz +0 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +1 -2
- package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +4 -8
- package/fesm2022/datarailsshared-datarailsshared.mjs +15 -20
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +1 -1
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.6.63.tgz +0 -0
|
Binary file
|
|
@@ -339,7 +339,6 @@ export class DrDatePickerComponent {
|
|
|
339
339
|
timeframe = this.datePickerService.getTimeframe(format);
|
|
340
340
|
}
|
|
341
341
|
this.datePickerService.timeframe = timeframe;
|
|
342
|
-
this.datePickerService.format$.next(format);
|
|
343
342
|
}
|
|
344
343
|
onOpen() {
|
|
345
344
|
this.opened$.next(true);
|
|
@@ -421,4 +420,4 @@ export class DrDatePickerComponent {
|
|
|
421
420
|
type: HostBinding,
|
|
422
421
|
args: ['class.active']
|
|
423
422
|
}] }); })();
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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QUFTO21CQUFDLFlBQVk7WUFXbkIsTUFBTTtrQkFEVCxXQUFXO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhclZpZXcsIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiwgVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgTWF0Q2FsZW5kYXJWaWV3LFxuICAgIE1hdERhdGVwaWNrZXIsXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlZWstc2VsZWN0aW9uLXN0cmF0ZWd5JztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBNb21lbnREYXRlQWRhcHRlciB7XG4gICAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEckRhdGVQaWNrZXJDb21wb25lbnQsIG11bHRpOiB0cnVlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlciB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSwgdXNlQ2xhc3M6IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9LFxuICAgICAgICBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIGRhdGUgcGlja2VyIGZvcm1hdCBpbnB1dCBsYWJlbCwgY2FsZW5kYXIgc3RhcnQgdmlldyBhbmQgdGltZWZyYW1lXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmb3JtYXQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbihtaW5EYXRlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWluID0gbWluRGF0ZSA/IG1vbWVudC51bml4KG1pbkRhdGUpLnV0YygpIDogbnVsbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgobWF4RGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG1heERhdGVNb21lbnQgPSBtYXhEYXRlID8gbW9tZW50LnVuaXgobWF4RGF0ZSkudXRjKCkgOiBudWxsO1xuICAgICAgICB0aGlzLl9tYXggPSBtYXhEYXRlTW9tZW50O1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLm1heERhdGUgPSBtYXhEYXRlTW9tZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHRyYW5zZm9ybSBkYXRlLCB0YWtpbmcgZW5kLCBzdGFydCwgbWlkZGxlIG9mIHBlcmlvZCAoaS5lLiBzZXQgbWlkZGxlIG9mIG1vbnRoIGlmIHRpbWVmcmFtZT0nbW9udGgnKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBlcmlvZFBvc2l0aW9uOiBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gPSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uREVGQVVMVDtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdC4uLic7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2sgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8vIFRPRE86IEFkZGVkIGFzIHRlbXAgc29sdXRpb24gaW5zdGVhZCBvZiBGRiwgd2lsbCByZW1vdmUgb25jZSBzdGFibGUgLSBodHRwczovL2RhdGFyYWlsc3RlYW0uYXRsYXNzaWFuLm5ldC9icm93c2UvRFItMzUzOTRcbiAgICBASW5wdXQoKSBmaXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+IHwgTWF0RGF0ZVJhbmdlUGlja2VyPGFueT47XG4gICAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpXG4gICAgcHVibGljIHNldCBkYXRlUGlja2VyKHZhbHVlOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55Pikge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZGF0ZVBpY2tlckluc3RhbmNlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIuc3RhcnRWaWV3ID0gdGhpcy5jYWxlbmRhclZpZXdzVGltZWZyYW1lTWFwcGluZ1t0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV07XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlcigpOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWQkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nOiBhbnkgPSB7XG4gICAgICAgIHllYXI6ICdtdWx0aS15ZWFyJyxcbiAgICAgICAgbW9udGg6ICd5ZWFyJyxcbiAgICAgICAgcXVhcnRlcjogJ25vbmUnLFxuICAgICAgICBkYXk6ICdtb250aCcsXG4gICAgICAgIHdlZWs6ICdtb250aCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXN0b21IZWFkZXIgPSBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgX21pbjogTW9tZW50O1xuICAgIHB1YmxpYyBfbWF4OiBNb21lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpbWVmcmFtZU9wdGlvbiA9IFRpbWVmcmFtZU9wdGlvbjtcblxuICAgIHByb3RlY3RlZCBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGlubmVyVmFsdWUodmFsdWU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbbnVsbCwgbnVsbF0pLFxuICAgICAgICBtYXAoKFt2YWx1ZSwgdGltZWZyYW1lXTogW01vbWVudCwgVGltZWZyYW1lT3B0aW9uXSkgPT4gdGhpcy50cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZSwgdGltZWZyYW1lKSksXG4gICAgICAgIHRhcCgodmFsdWU6IE1vbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgICByZWFkb25seSByYW5nZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgc3RhcnQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICAgICAgZW5kOiB0aGlzLmZiLmNvbnRyb2w8TW9tZW50IHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHVibGljIGRhdGVQaWNrZXJTZXJ2aWNlOiBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBkYXRlUGlja2VyU2VydmljZS51cGRhdGVkUXVhcnRlciQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLndlZWtTZWxlY3Rpb25DaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHN0YXJ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydDogdmFsdWUuY2xvbmUoKS5zdGFydE9mKCdpc29XZWVrJyksIGVuZDogdmFsdWUuY2xvbmUoKS5lbmRPZignaXNvV2VlaycpIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0Rm4gPSB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdDtcbiAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5mb3JtYXQgPSAoZGF0ZTogTW9tZW50LCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRlVG9Gb3JtYXQgPSBkYXRlLmNsb25lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZVRvRm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlVG9Gb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXRGbi5jYWxsKHRoaXMuZGF0ZUFkYXB0ZXIsIGRhdGVUb0Zvcm1hdCwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlcGlja2VyRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm1hdD8uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuZm9ybWF0LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5mb3JtYXQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJCYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0aW5nIGNvbXBvbmVudCBpbm5lciB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZXBpY2tlciB0aW1lZnJhbWUgKGRheSwgbW9udGggZXRjLilcbiAgICAgKiBhbmQgZGF0ZSBwb3NpdGlvbiBpbiBwZXJpb2QgKHN0YXJ0LCBlbmQsIG1pZGRsZSlcbiAgICAgKi9cbiAgICB0cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWU7XG4gICAgICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLldFRUsgPyAnaXNvV2VlaycgOiB0aW1lZnJhbWU7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wZXJpb2RQb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uU1RBUlRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uRU5EX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0ZVBpY2tlclBlcmlvZFBvc2l0aW9uLk1JRERMRV9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgbGV0IGVuZE9mUGVyaW9kOiBNb21lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZW5kT2ZQZXJpb2QpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIoZW5kT2ZQZXJpb2QsIDQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gZW5kT2ZQZXJpb2QuZGlmZihub3JtYWxpemVkVmFsdWUsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmFkZChkaWZmIC8gMiArIDEsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpLnNldCgnaG91cnMnLCAxMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZml4Rm9yTm9ybWFsaXplZFZhbHVlV2l0aE1heERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblVuaXggPSBNYXRoLm1pbihub3JtYWxpemVkVmFsdWUudW5peCgpLCB0aGlzLl9tYXgudW5peCgpKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IG1vbWVudC51bml4KG1pblVuaXgpLnV0YygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvc2VuUGVyaW9kSGFuZGxlcihjaG9zZW5EYXRlOiBNb21lbnQsIHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uLCBwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55Pikge1xuICAgICAgICBpZiAodGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgY2hvc2VuRGF0ZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShjaG9zZW5EYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIgJiYgdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmN1cnJlbnRWaWV3ID0gQ2FsZW5kYXJWaWV3LkZPUl9RVUFSVEVSUyBhcyBNYXRDYWxlbmRhclZpZXc7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuYWN0aXZlRGF0ZSA9IGNob3NlbkRhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IHRpbWVmcmFtZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKGNob3NlbkRhdGUpO1xuICAgICAgICAgICAgcGlja2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGZyb20gb3V0c2lkZSBvZiBjb21wb25lbnQgdmlhIG5nTW9kZWwgb3IgZm9ybUNvbnRyb2wgdXBkYXRlc1xuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgICogV2UgbmVlZCBrZWVwIGxvY2FsIHRpbWVzdGFtcCBmb3IgRWxlY3Ryb24gQXBwbGljYXRpb25cbiAgICAgICAgICogSXNzdWUgaW4gZWxlY3Ryb246IHdoZW4gd2Ugc2VsZWN0IGRhdGUsIGRhdGUgc2VsZWN0IHdpdGggLTEgKGlmIHdlJ3JlIGNob29zaW5nIDIwMjMsIG91dHB1dCB3aWxsIGJlIDIwMjIpXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IChkb2N1bWVudCBhcyBhbnkpLmlzX2VsZWN0cm9uID8gbW9tZW50LnVuaXgodmFsdWUpIDogbW9tZW50LnVuaXgodmFsdWUpLnV0YygpO1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZSA/IGNvbnZlcnRlZFZhbHVlIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHVibGljIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBwdWJsaWMgZGF0ZUZpbHRlciA9IChtb21lbnQ6IE1vbWVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyRmlsdGVyICYmIG1vbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckZpbHRlcihtb21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbDogTW9tZW50KSB7XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVUb1NldCA9IHZhbD8uY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVRvU2V0ICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Nb21lbnQodmFsdWVUb1NldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSBNb21lbnQgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbWVudERhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWVGcm9tTW9tZW50KG1vbWVudERhdGU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG1vbWVudERhdGUudW5peCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSB0aW1lc3RhbXAgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVzdGFtcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh0aW1lc3RhbXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBpc1ZhbHVlVXBkYXRpbmcgaXMgcmVxdWlyZWQgZm9yIG1hbmFnZSBjbGlja3Mgb24gc2FtZSBkYXRlczogaWYgaXNWYWx1ZVVwZGF0aW5nIC0gdHJ1ZSB0aGVuXG4gICAgICAgIC8vIGRheXMgYXJlIGRpZmZlcmVudCBhbmQgc3Vic2NyaXB0aW9uIG9uIGNhbGVuZGFyIGRheSBjbGljayBhY3Rpb24gd29uJ3QgdHJpZ2dlciBBY2Nlc3NvciBuZ01vZGVsIHVwZGF0ZVxuICAgICAgICAvLyBvbmUgbW9yZSB0aW1lXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUudW5peCgpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtRGlzcGxheWVkVmFsdWUodmFsdWU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24pOiBNb21lbnQge1xuICAgICAgICBjb25zdCB2YWx1ZVRvUmV0dXJuID0gdmFsdWU/LmNsb25lKCk7XG4gICAgICAgIGlmICh2YWx1ZVRvUmV0dXJuICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcih2YWx1ZVRvUmV0dXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVUb1JldHVybjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICBsZXQgdGltZWZyYW1lO1xuICAgICAgICBsZXQgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbik7XG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIHRpbWVmcmFtZSA9IHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRUaW1lZnJhbWUoZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9IHRpbWVmcmFtZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5mb3JtYXQkLm5leHQoZm9ybWF0KTtcbiAgICB9XG5cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIG9uQ0xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXAgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnVuaXgoKTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5lZCQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIiwiPGkgY2xhc3M9XCJkci1pY29uLWRhdGVcIiAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIj48L2k+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSA9PT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW21pbl09XCJfbWluXCJcbiAgICAgICAgW21heF09XCJfbWF4XCIgLz5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbZm9ybUdyb3VwXT1cInJhbmdlRm9ybVwiIFtyYW5nZVBpY2tlcl09XCJkYXRlUGlja2VyXCIgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiIGNsYXNzPVwicmFuZ2UtaW5wdXRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRTdGFydERhdGVcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcihyYW5nZUZvcm0udmFsdWUuc3RhcnQpXCIgLz5cbiAgICAgICAgPGlucHV0IG1hdEVuZERhdGUgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtwYW5lbENsYXNzXT1cIidkci13ZWVrLWRhdGVwaWNrZXInXCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpICE9PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcigkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiXG4gICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFttaW5dPVwiX21pblwiXG4gICAgICAgIFttYXhdPVwiX21heFwiIC8+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
423
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNwQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7SUMzQjVFLDZCQUF3RTtJQUNwRSxnQ0FPbUI7SUFMZixzS0FBUyxlQUFBLFVBQWlCLENBQUEsSUFBQztJQUYvQixpQkFPbUI7SUFFbkIsK0NBQXVILGtCQUFBO0lBTS9HLG9MQUFjLGVBQUEsMkRBQTZDLENBQUEsSUFBQzs7SUFMaEUsaUJBS21FO0lBQ25FLDJCQUFtRzs7SUFDdkcsaUJBQXVCO0lBRXZCLG1EQU95QjtJQUhyQiw2T0FBZ0IsZUFBQSxvRUFBNkQsQ0FBQSxJQUFDLGtPQUM3RCxlQUFBLHFFQUE4RCxDQUFBLElBREQsK0tBRXBFLGVBQUEsZUFBUSxDQUFBLElBRjRELGdMQUdwRSxlQUFBLGlCQUFTLENBQUEsSUFIMkQ7SUFJbEYsaUJBQXdCO0lBQzVCLDBCQUFlOzs7OztJQTNCUCxlQUF1QjtJQUF2QixtQ0FBdUIsNkJBQUEsbUNBQUEsNkJBQUEsb0JBQUEsb0JBQUE7SUFRTCxlQUF1QjtJQUF2Qiw0Q0FBdUIsb0JBQUEsaUNBQUE7SUFJckMsZUFBd0Q7SUFBeEQsNEZBQXdEO0lBRzFDLGVBQXdEO0lBQXhELDRGQUF3RDtJQUsxRSxlQUFtQztJQUFuQyxpREFBbUMsZ0RBQUE7Ozs7SUFTM0MsNkJBQXdFO0lBQ3BFLGdDQVdtQjtJQVRmLGtNQUFpQixlQUFBLHNDQUE4QixDQUFBLElBQUMsMkpBQ3ZDLGVBQUEsV0FBaUIsQ0FBQSxJQURzQjs7O0lBRnBELGlCQVdtQjtJQUVuQiw2Q0FNeUI7SUFIckIseU9BQWdCLGVBQUEsdUVBQTZELENBQUEsSUFBQyw4TkFDN0QsZUFBQSx3RUFBOEQsQ0FBQSxJQURELDBLQUVwRSxlQUFBLGdCQUFRLENBQUEsSUFGNEQsMEtBR3BFLGVBQUEsaUJBQVMsQ0FBQSxJQUgyRDtJQUlsRixpQkFBaUI7SUFDckIsMEJBQWU7Ozs7SUFwQlAsZUFBaUM7SUFBakMscUVBQWlDLHVCQUFBLDBDQUFBLDZCQUFBLG1DQUFBLCtFQUFBLDZCQUFBLG9CQUFBLG9CQUFBO0lBY2pDLGVBQXdDO0lBQXhDLDZEQUF3Qzs7QURsQmhELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUV0QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBQ3BELGlCQUFpQjtRQUNiLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKO0FBY0QsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixJQUNJLEdBQUcsQ0FBQyxPQUFlO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQ0ksR0FBRyxDQUFDLE9BQWU7UUFDbkIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7SUFDbkQsQ0FBQztJQXFCRCxJQUNXLFVBQVUsQ0FBQyxLQUFtRDtRQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBa0JELElBQWMsVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDN0MsQ0FBQztJQUNELElBQWMsVUFBVSxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQTJCRCxZQUNjLEdBQXNCLEVBQ3RCLFdBQTZCLEVBQ2hDLGlCQUFzQztRQUZuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQXJGakQ7O1dBRUc7UUFDTSxtQkFBYyxHQUE2Qix3QkFBd0IsQ0FBQyxPQUFPLENBQUM7UUFFNUUsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFJMUIsNkJBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSWhDLDRIQUE0SDtRQUNuSCxxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7UUFrQi9CLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpDLGtDQUE2QixHQUFRO1lBQ3BELElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUssRUFBRSxNQUFNO1lBQ2IsT0FBTyxFQUFFLE1BQU07WUFDZixHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxPQUFPO1NBQ1AsQ0FBQztRQUVLLGlCQUFZLEdBQUcsaUNBQWlDLENBQUM7UUFDMUQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdQLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBUzNDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUNqRSxDQUFDLENBQUMsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUN2QixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFDdEcsR0FBRyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFO2dCQUNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDNUQ7UUFDTCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUMxQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7UUFFZSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFOUMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqQyxjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFnQixJQUFJLENBQUM7WUFDM0MsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFnQixJQUFJLENBQUM7U0FDNUMsQ0FBQyxDQUFDO1FBNElJLHNCQUFpQixHQUFlLElBQUksQ0FBQztRQUNyQyxxQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO1FBZWpELGtEQUFrRDtRQUMzQyxlQUFVLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBNUpFLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25GLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUNqRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxhQUFxQixFQUFFLEVBQUU7WUFDOUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDbkYsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4RjtZQUNELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUM5RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7UUFFRCxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRTtZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1NBQ25GO1FBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMvRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUI7UUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztRQUNuRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFNBQVMsS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4RSxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekIsS0FBSyx3QkFBd0IsQ0FBQyxlQUFlO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLE9BQU8sRUFBRTtvQkFDOUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUNwRTtxQkFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtvQkFDbEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDaEU7cUJBQU07b0JBQ0gsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssd0JBQXdCLENBQUMsYUFBYTtnQkFDdkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxPQUFPLEVBQUU7b0JBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDbEU7cUJBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQUU7b0JBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTTtvQkFDSCxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvQjtnQkFDRCxNQUFNO1lBQ1YsS0FBSyx3QkFBd0IsQ0FBQyxnQkFBZ0I7Z0JBQzFDLElBQUksV0FBbUIsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxPQUFPLEVBQUU7b0JBQzlELFdBQVcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDakUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtvQkFDbEUsV0FBVyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzFEO3FCQUFNO29CQUNILGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlCLFdBQVcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNyRDtnQkFDRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDMUQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDN0MsTUFBTTtZQUNWO2dCQUNJLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsTUFBTTtTQUNiO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUM7SUFDeEQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsU0FBMEIsRUFBRSxNQUEwQjtRQUNqRyxJQUFJLFNBQVMsS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQ3BDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0U7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtZQUNwRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxZQUErQixDQUFDO1lBQ25HLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDNUI7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsS0FBYTtRQUMzQjs7O1dBR0c7UUFDSCxNQUFNLGNBQWMsR0FBSSxRQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBS00sZ0JBQWdCLENBQUMsRUFBTztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFPO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQVdNLHNCQUFzQixDQUFDLEdBQVc7UUFDckMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDakcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDhCQUE4QixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3JFO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sUUFBUSxDQUFDLFNBQWlCO1FBQ2hDLDhGQUE4RjtRQUM5Rix5R0FBeUc7UUFDekcsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsS0FBYSxFQUFFLFNBQTBCO1FBQ3ZFLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVTLFlBQVk7UUFDbEIsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQXlCLENBQUMsQ0FBQztRQUN4RixJQUFJLE1BQU0sRUFBRTtZQUNSLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBeUIsQ0FBQztTQUM5QzthQUFNO1lBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVELFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxlQUFlLEtBQUssc0JBQXNCLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUMxQztTQUNKO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzt5R0E5VVEscUJBQXFCO21HQUFyQixxQkFBcUI7Ozs7Ozs7NFhBUG5CO2dCQUNQLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO2dCQUNyRCxFQUFFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7Z0JBQy9FLG1CQUFtQjthQUN0QjtZQ2pETCw0QkFBb0Q7WUFBNUIsNkZBQVMscUJBQWlCLElBQUM7WUFBQyxpQkFBSTtZQUV4RCwwRkE2QmU7O1lBRWYseUZBc0JlOzs7WUFyREEsZUFBdUQ7WUFBdkQsd0ZBQXVEO1lBK0J2RCxlQUF1RDtZQUF2RCx3RkFBdUQ7Ozt1RkRrQnpELHFCQUFxQjtjQVpqQyxTQUFTOzJCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO29CQUNQLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDL0UsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtvQkFDckQsRUFBRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO29CQUMvRSxtQkFBbUI7aUJBQ3RCO2dJQU9ELE1BQU07a0JBREwsS0FBSztZQUlGLEdBQUc7a0JBRE4sS0FBSztZQU1GLEdBQUc7a0JBRE4sS0FBSztZQVVHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRWtDLFFBQVE7a0JBQS9DLEtBQUs7O2tCQUFJLFdBQVc7bUJBQUMsZ0JBQWdCO1lBRTdCLHdCQUF3QjtrQkFBaEMsS0FBSztZQUVHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFHRyxnQ0FBZ0M7a0JBQXhDLEtBQUs7WUFJSyxVQUFVO2tCQURwQixTQUFTO21CQUFDLFlBQVk7WUFXbkIsTUFBTTtrQkFEVCxXQUFXO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhclZpZXcsIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiwgVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgTWF0Q2FsZW5kYXJWaWV3LFxuICAgIE1hdERhdGVwaWNrZXIsXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlZWstc2VsZWN0aW9uLXN0cmF0ZWd5JztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBNb21lbnREYXRlQWRhcHRlciB7XG4gICAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEckRhdGVQaWNrZXJDb21wb25lbnQsIG11bHRpOiB0cnVlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlciB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSwgdXNlQ2xhc3M6IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9LFxuICAgICAgICBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIGRhdGUgcGlja2VyIGZvcm1hdCBpbnB1dCBsYWJlbCwgY2FsZW5kYXIgc3RhcnQgdmlldyBhbmQgdGltZWZyYW1lXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmb3JtYXQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbihtaW5EYXRlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWluID0gbWluRGF0ZSA/IG1vbWVudC51bml4KG1pbkRhdGUpLnV0YygpIDogbnVsbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgobWF4RGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG1heERhdGVNb21lbnQgPSBtYXhEYXRlID8gbW9tZW50LnVuaXgobWF4RGF0ZSkudXRjKCkgOiBudWxsO1xuICAgICAgICB0aGlzLl9tYXggPSBtYXhEYXRlTW9tZW50O1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLm1heERhdGUgPSBtYXhEYXRlTW9tZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHRyYW5zZm9ybSBkYXRlLCB0YWtpbmcgZW5kLCBzdGFydCwgbWlkZGxlIG9mIHBlcmlvZCAoaS5lLiBzZXQgbWlkZGxlIG9mIG1vbnRoIGlmIHRpbWVmcmFtZT0nbW9udGgnKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBlcmlvZFBvc2l0aW9uOiBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gPSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uREVGQVVMVDtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdC4uLic7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2sgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8vIFRPRE86IEFkZGVkIGFzIHRlbXAgc29sdXRpb24gaW5zdGVhZCBvZiBGRiwgd2lsbCByZW1vdmUgb25jZSBzdGFibGUgLSBodHRwczovL2RhdGFyYWlsc3RlYW0uYXRsYXNzaWFuLm5ldC9icm93c2UvRFItMzUzOTRcbiAgICBASW5wdXQoKSBmaXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+IHwgTWF0RGF0ZVJhbmdlUGlja2VyPGFueT47XG4gICAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpXG4gICAgcHVibGljIHNldCBkYXRlUGlja2VyKHZhbHVlOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55Pikge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZGF0ZVBpY2tlckluc3RhbmNlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIuc3RhcnRWaWV3ID0gdGhpcy5jYWxlbmRhclZpZXdzVGltZWZyYW1lTWFwcGluZ1t0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV07XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlcigpOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWQkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nOiBhbnkgPSB7XG4gICAgICAgIHllYXI6ICdtdWx0aS15ZWFyJyxcbiAgICAgICAgbW9udGg6ICd5ZWFyJyxcbiAgICAgICAgcXVhcnRlcjogJ25vbmUnLFxuICAgICAgICBkYXk6ICdtb250aCcsXG4gICAgICAgIHdlZWs6ICdtb250aCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXN0b21IZWFkZXIgPSBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgX21pbjogTW9tZW50O1xuICAgIHB1YmxpYyBfbWF4OiBNb21lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpbWVmcmFtZU9wdGlvbiA9IFRpbWVmcmFtZU9wdGlvbjtcblxuICAgIHByb3RlY3RlZCBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGlubmVyVmFsdWUodmFsdWU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbbnVsbCwgbnVsbF0pLFxuICAgICAgICBtYXAoKFt2YWx1ZSwgdGltZWZyYW1lXTogW01vbWVudCwgVGltZWZyYW1lT3B0aW9uXSkgPT4gdGhpcy50cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZSwgdGltZWZyYW1lKSksXG4gICAgICAgIHRhcCgodmFsdWU6IE1vbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgICByZWFkb25seSByYW5nZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgc3RhcnQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICAgICAgZW5kOiB0aGlzLmZiLmNvbnRyb2w8TW9tZW50IHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHVibGljIGRhdGVQaWNrZXJTZXJ2aWNlOiBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBkYXRlUGlja2VyU2VydmljZS51cGRhdGVkUXVhcnRlciQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLndlZWtTZWxlY3Rpb25DaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHN0YXJ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydDogdmFsdWUuY2xvbmUoKS5zdGFydE9mKCdpc29XZWVrJyksIGVuZDogdmFsdWUuY2xvbmUoKS5lbmRPZignaXNvV2VlaycpIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0Rm4gPSB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdDtcbiAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5mb3JtYXQgPSAoZGF0ZTogTW9tZW50LCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRlVG9Gb3JtYXQgPSBkYXRlLmNsb25lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZVRvRm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlVG9Gb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXRGbi5jYWxsKHRoaXMuZGF0ZUFkYXB0ZXIsIGRhdGVUb0Zvcm1hdCwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlcGlja2VyRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm1hdD8uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuZm9ybWF0LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5mb3JtYXQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJCYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0aW5nIGNvbXBvbmVudCBpbm5lciB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZXBpY2tlciB0aW1lZnJhbWUgKGRheSwgbW9udGggZXRjLilcbiAgICAgKiBhbmQgZGF0ZSBwb3NpdGlvbiBpbiBwZXJpb2QgKHN0YXJ0LCBlbmQsIG1pZGRsZSlcbiAgICAgKi9cbiAgICB0cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWU7XG4gICAgICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLldFRUsgPyAnaXNvV2VlaycgOiB0aW1lZnJhbWU7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wZXJpb2RQb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uU1RBUlRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uRU5EX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0ZVBpY2tlclBlcmlvZFBvc2l0aW9uLk1JRERMRV9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgbGV0IGVuZE9mUGVyaW9kOiBNb21lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZW5kT2ZQZXJpb2QpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIoZW5kT2ZQZXJpb2QsIDQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gZW5kT2ZQZXJpb2QuZGlmZihub3JtYWxpemVkVmFsdWUsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmFkZChkaWZmIC8gMiArIDEsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpLnNldCgnaG91cnMnLCAxMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZml4Rm9yTm9ybWFsaXplZFZhbHVlV2l0aE1heERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblVuaXggPSBNYXRoLm1pbihub3JtYWxpemVkVmFsdWUudW5peCgpLCB0aGlzLl9tYXgudW5peCgpKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IG1vbWVudC51bml4KG1pblVuaXgpLnV0YygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvc2VuUGVyaW9kSGFuZGxlcihjaG9zZW5EYXRlOiBNb21lbnQsIHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uLCBwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55Pikge1xuICAgICAgICBpZiAodGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgY2hvc2VuRGF0ZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShjaG9zZW5EYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIgJiYgdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmN1cnJlbnRWaWV3ID0gQ2FsZW5kYXJWaWV3LkZPUl9RVUFSVEVSUyBhcyBNYXRDYWxlbmRhclZpZXc7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuYWN0aXZlRGF0ZSA9IGNob3NlbkRhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IHRpbWVmcmFtZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKGNob3NlbkRhdGUpO1xuICAgICAgICAgICAgcGlja2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGZyb20gb3V0c2lkZSBvZiBjb21wb25lbnQgdmlhIG5nTW9kZWwgb3IgZm9ybUNvbnRyb2wgdXBkYXRlc1xuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgICogV2UgbmVlZCBrZWVwIGxvY2FsIHRpbWVzdGFtcCBmb3IgRWxlY3Ryb24gQXBwbGljYXRpb25cbiAgICAgICAgICogSXNzdWUgaW4gZWxlY3Ryb246IHdoZW4gd2Ugc2VsZWN0IGRhdGUsIGRhdGUgc2VsZWN0IHdpdGggLTEgKGlmIHdlJ3JlIGNob29zaW5nIDIwMjMsIG91dHB1dCB3aWxsIGJlIDIwMjIpXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IChkb2N1bWVudCBhcyBhbnkpLmlzX2VsZWN0cm9uID8gbW9tZW50LnVuaXgodmFsdWUpIDogbW9tZW50LnVuaXgodmFsdWUpLnV0YygpO1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZSA/IGNvbnZlcnRlZFZhbHVlIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHVibGljIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBwdWJsaWMgZGF0ZUZpbHRlciA9IChtb21lbnQ6IE1vbWVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyRmlsdGVyICYmIG1vbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckZpbHRlcihtb21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbDogTW9tZW50KSB7XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVUb1NldCA9IHZhbD8uY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVRvU2V0ICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Nb21lbnQodmFsdWVUb1NldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSBNb21lbnQgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbWVudERhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWVGcm9tTW9tZW50KG1vbWVudERhdGU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG1vbWVudERhdGUudW5peCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSB0aW1lc3RhbXAgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVzdGFtcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh0aW1lc3RhbXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBpc1ZhbHVlVXBkYXRpbmcgaXMgcmVxdWlyZWQgZm9yIG1hbmFnZSBjbGlja3Mgb24gc2FtZSBkYXRlczogaWYgaXNWYWx1ZVVwZGF0aW5nIC0gdHJ1ZSB0aGVuXG4gICAgICAgIC8vIGRheXMgYXJlIGRpZmZlcmVudCBhbmQgc3Vic2NyaXB0aW9uIG9uIGNhbGVuZGFyIGRheSBjbGljayBhY3Rpb24gd29uJ3QgdHJpZ2dlciBBY2Nlc3NvciBuZ01vZGVsIHVwZGF0ZVxuICAgICAgICAvLyBvbmUgbW9yZSB0aW1lXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUudW5peCgpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtRGlzcGxheWVkVmFsdWUodmFsdWU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24pOiBNb21lbnQge1xuICAgICAgICBjb25zdCB2YWx1ZVRvUmV0dXJuID0gdmFsdWU/LmNsb25lKCk7XG4gICAgICAgIGlmICh2YWx1ZVRvUmV0dXJuICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcih2YWx1ZVRvUmV0dXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVUb1JldHVybjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICBsZXQgdGltZWZyYW1lO1xuICAgICAgICBsZXQgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbik7XG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIHRpbWVmcmFtZSA9IHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRUaW1lZnJhbWUoZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9IHRpbWVmcmFtZTtcbiAgICB9XG5cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIG9uQ0xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXAgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnVuaXgoKTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5lZCQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIiwiPGkgY2xhc3M9XCJkci1pY29uLWRhdGVcIiAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIj48L2k+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSA9PT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW21pbl09XCJfbWluXCJcbiAgICAgICAgW21heF09XCJfbWF4XCIgLz5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCBbZm9ybUdyb3VwXT1cInJhbmdlRm9ybVwiIFtyYW5nZVBpY2tlcl09XCJkYXRlUGlja2VyXCIgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiIGNsYXNzPVwicmFuZ2UtaW5wdXRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRTdGFydERhdGVcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcihyYW5nZUZvcm0udmFsdWUuc3RhcnQpXCIgLz5cbiAgICAgICAgPGlucHV0IG1hdEVuZERhdGUgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIiBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtwYW5lbENsYXNzXT1cIidkci13ZWVrLWRhdGVwaWNrZXInXCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpICE9PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcigkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiXG4gICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFttaW5dPVwiX21pblwiXG4gICAgICAgIFttYXhdPVwiX21heFwiIC8+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, distinctUntilChanged, Subject } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, distinctUntilChanged, map, Subject } from 'rxjs';
|
|
3
3
|
import { DateFromats, DateTags, TimeframeOption } from '../../../models/datePicker';
|
|
4
4
|
import { DrSharedUtils } from '../../../utils/dr-shared-utils';
|
|
5
5
|
import * as _ from 'lodash';
|
|
@@ -9,10 +9,7 @@ export class DrDatePickerService {
|
|
|
9
9
|
this.isTimeframeSelectionEnabled = false;
|
|
10
10
|
this._timeframe$ = new BehaviorSubject(TimeframeOption.DAY);
|
|
11
11
|
this.timeframe$ = this._timeframe$.asObservable().pipe(distinctUntilChanged());
|
|
12
|
-
|
|
13
|
-
// we need to get rid of a separate subject and use pipe from timeframe$ for it
|
|
14
|
-
// making @Input() format in component just setting the timeframe
|
|
15
|
-
this.format$ = new BehaviorSubject(DateFromats.MAT_DEFAULT_DATE_FORMAT);
|
|
12
|
+
this.format$ = this.timeframe$.pipe(map((timeframe) => this.getConfiguredFormat(timeframe)), distinctUntilChanged());
|
|
16
13
|
this.updatedQuarter$ = new Subject();
|
|
17
14
|
this.weekSelectionChange$ = new Subject();
|
|
18
15
|
this.updatedDateAndClose$ = new Subject();
|
|
@@ -69,9 +66,8 @@ export class DrDatePickerService {
|
|
|
69
66
|
return this.formatConfig[timeframe];
|
|
70
67
|
}
|
|
71
68
|
updateTimeframeAndFormat(format) {
|
|
72
|
-
const normalizedFormat = this.normalizeValue(format
|
|
69
|
+
const normalizedFormat = this.normalizeValue(format);
|
|
73
70
|
this.timeframe = this.getTimeframe(normalizedFormat);
|
|
74
|
-
this.format$.next(this.getConfiguredFormat(this.timeframe));
|
|
75
71
|
}
|
|
76
72
|
normalizeValue(value) {
|
|
77
73
|
return value.replace(/d/g, 'D');
|
|
@@ -221,4 +217,4 @@ export class DrDatePickerService {
|
|
|
221
217
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDatePickerService, [{
|
|
222
218
|
type: Injectable
|
|
223
219
|
}], null, null); })();
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUEyQixlQUFlLEVBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUk1QixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRUksZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQXNDLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRixlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBVTFGLG9FQUFvRTtRQUNwRSwrRUFBK0U7UUFDL0UsaUVBQWlFO1FBQ2pFLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN4RCx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRzdDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFjLENBQUMsQ0FBQztRQUMzRCxpQ0FBNEIsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3JELGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHdCQUFtQixHQUFHO1lBQ2xCLGVBQWUsQ0FBQyxHQUFHO1lBQ25CLGVBQWUsQ0FBQyxJQUFJO1lBQ3BCLGVBQWUsQ0FBQyxLQUFLO1lBQ3JCLGVBQWUsQ0FBQyxPQUFPO1lBQ3ZCLGVBQWUsQ0FBQyxJQUFJO1NBQ3ZCLENBQUM7UUFFSyxpQkFBWSxHQUE0QjtZQUMzQyxHQUFHLEVBQUUsV0FBVyxDQUFDLHVCQUF1QjtZQUN4QyxLQUFLLEVBQUUsV0FBVyxDQUFDLGlCQUFpQjtZQUNwQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLFdBQVcsQ0FBQyxjQUFjO1lBQ25DLElBQUksRUFBRSxXQUFXLENBQUMsV0FBVztTQUNoQyxDQUFDO1FBR0ssNkJBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR2IsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7S0E4TGxFO0lBMU9HLElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLEtBQXVCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUF3Q0QsSUFBVyxVQUFVLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxRQUFRLElBQUksRUFBRTtZQUNWLEtBQUssWUFBWSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxDQUFDO1lBQ2YsS0FBSyxZQUFZLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsT0FBTyxHQUFHLENBQUM7WUFDZjtnQkFDSSxPQUFPLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN2QixPQUFPLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBMkI7UUFDM0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLCtCQUErQixDQUFDLElBQVk7UUFDL0MsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLFNBQVMsR0FBRyxXQUFXLEVBQUU7WUFDekIsV0FBVyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLElBQVksRUFBRSxhQUFxQjtRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLENBQUM7YUFDNUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDO2FBQy9ELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsYUFBcUI7UUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDO2FBQzVDLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDZixHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHNCQUFzQixDQUFDLElBQVk7UUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx3QkFBd0IsQ0FBQyxJQUFZO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx3QkFBd0IsQ0FBQyxTQUEwQjtRQUN0RCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLElBQVk7UUFDaEQsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0kseUJBQXlCLENBQUMsSUFBWTtRQUN6QyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsVUFBa0IsRUFBRSxhQUFzQixLQUFLO1FBQy9FLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0I7WUFBRSxPQUFPO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLHlCQUF5QixDQUFDLFVBQWtCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSw4QkFBOEIsQ0FBQyxVQUFrQjtRQUNwRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssNkJBQTZCLENBQUMsSUFBWSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwSCxDQUFDO0lBRU0sd0JBQXdCLENBQUMsR0FBYSxFQUFFLFFBQWE7UUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsUUFBUSxHQUFHLEVBQUU7Z0JBQ1QsS0FBSyxRQUFRLENBQUMsS0FBSztvQkFDZixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ25FLE1BQU07Z0JBQ1YsS0FBSyxRQUFRLENBQUMsU0FBUztvQkFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNuRSxNQUFNO2dCQUNWLEtBQUssUUFBUSxDQUFDLFVBQVU7b0JBQ3BCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDbkQsTUFBTTtnQkFDVixLQUFLLFFBQVEsQ0FBQyxVQUFVO29CQUNwQixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzdELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ25ELE1BQU07YUFDYjtTQUNKO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sNkJBQTZCLENBQUMsSUFBWSxFQUFFLFFBQWE7UUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFnQixDQUFDO1lBQzVDLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDM0IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDTCxDQUFDO3VHQTlPUSxtQkFBbUI7c0dBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZUZyb21hdHMsIERhdGVUYWdzLCBJRGF0ZVBpY2tlckZvcm1hdENvbmZpZywgVGltZWZyYW1lT3B0aW9uLCBUVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgRHJTaGFyZWRVdGlscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RyLXNoYXJlZC11dGlscyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBXZWVrSW5mbyB9IGZyb20gJy4uL3dlZWstc2VsZWN0b3Ivd2Vlay1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJEYXRlUGlja2VyU2VydmljZSB7XG4gICAgaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGltZWZyYW1lJDogQmVoYXZpb3JTdWJqZWN0PFRUaW1lZnJhbWVPcHRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChUaW1lZnJhbWVPcHRpb24uREFZKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lJCA9IHRoaXMuX3RpbWVmcmFtZSQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHB1YmxpYyBnZXQgdGltZWZyYW1lKCk6IFRUaW1lZnJhbWVPcHRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGltZWZyYW1lJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdGltZWZyYW1lKHZhbHVlOiBUVGltZWZyYW1lT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RpbWVmcmFtZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogaGVyZSB3ZSBjYW4gaGF2ZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gZm9ybWF0IGFuZCB0aW1lZnJhbWVcbiAgICAvLyB3ZSBuZWVkIHRvIGdldCByaWQgb2YgYSBzZXBhcmF0ZSBzdWJqZWN0IGFuZCB1c2UgcGlwZSBmcm9tIHRpbWVmcmFtZSQgZm9yIGl0XG4gICAgLy8gbWFraW5nIEBJbnB1dCgpIGZvcm1hdCBpbiBjb21wb25lbnQganVzdCBzZXR0aW5nIHRoZSB0aW1lZnJhbWVcbiAgICBmb3JtYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcblxuICAgIHVwZGF0ZWRRdWFydGVyJCA9IG5ldyBTdWJqZWN0PE1vbWVudD4oKTtcbiAgICByZWFkb25seSB3ZWVrU2VsZWN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdlZWtJbmZvPigpO1xuICAgIHVwZGF0ZWREYXRlQW5kQ2xvc2UkID0gbmV3IFN1YmplY3Q8TW9tZW50PigpO1xuICAgIGRhdGVQaWNrZXJJbnN0YW5jZTogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIGlzVXNpbmdEYXRlVGFnUHJlc2V0czogYm9vbGVhbjtcbiAgICBwcmVzZXRUYWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlVGFncz4oJycgYXMgRGF0ZVRhZ3MpO1xuICAgIG9uU2FtZURheVNlbGVjdGVkSW5DYWxlbmRhciQgPSBuZXcgU3ViamVjdDxNb21lbnQ+KCk7XG4gICAga2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgIGlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgIGF2YWlsYWJsZVRpbWVmcmFtZXMgPSBbXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5EQVksXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5XRUVLLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uTU9OVEgsXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uWUVBUixcbiAgICBdO1xuXG4gICAgcHVibGljIGZvcm1hdENvbmZpZzogSURhdGVQaWNrZXJGb3JtYXRDb25maWcgPSB7XG4gICAgICAgIGRheTogRGF0ZUZyb21hdHMuTUFUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgIG1vbnRoOiBEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCxcbiAgICAgICAgeWVhcjogRGF0ZUZyb21hdHMuWUVBUl9GT1JNQVQsXG4gICAgICAgIHF1YXJ0ZXI6IERhdGVGcm9tYXRzLlFVQVJURVJfRk9STUFULFxuICAgICAgICB3ZWVrOiBEYXRlRnJvbWF0cy5XRUVLX0ZPUk1BVCxcbiAgICB9O1xuICAgIHB1YmxpYyBjYWxlbmRhckluc3RhbmNlOiBNYXRDYWxlbmRhcjxhbnk+O1xuICAgIHB1YmxpYyBtYXhEYXRlOiBNb21lbnQ7XG4gICAgcHVibGljIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG4gICAgcHVibGljIGZpc2NhbFllYXJCYWNrID0gZmFsc2U7XG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lubmVyVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb21lbnQ+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbm5lclZhbHVlJCA9IHRoaXMuX2lubmVyVmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHNldCBpbm5lclZhbHVlKHZhbHVlOiBNb21lbnQpIHtcbiAgICAgICAgdGhpcy5faW5uZXJWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5UHJlZml4KCkge1xuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy50aW1lZnJhbWUpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgZm9ybWF0Q2FjaGVkPy5pbmNsdWRlcygnUScpOlxuICAgICAgICAgICAgICAgIHJldHVybiAnUSc7XG4gICAgICAgICAgICBjYXNlIGZvcm1hdENhY2hlZD8uaW5jbHVkZXMoJ1cnKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1cnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUaW1lZnJhbWUoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIERyU2hhcmVkVXRpbHMuZ2V0VGltZWZyYW1lQnlEYXRlRm9ybWF0KGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlndXJlZEZvcm1hdCh0aW1lZnJhbWU6IFRUaW1lZnJhbWVPcHRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb25maWdbdGltZWZyYW1lXTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZvcm1hdCA9IHRoaXMubm9ybWFsaXplVmFsdWUoZm9ybWF0IHx8IHRoaXMuZm9ybWF0JC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWUgPSB0aGlzLmdldFRpbWVmcmFtZShub3JtYWxpemVkRm9ybWF0KTtcbiAgICAgICAgdGhpcy5mb3JtYXQkLm5leHQodGhpcy5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMudGltZWZyYW1lKSk7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9kL2csICdEJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHF1YXJ0ZXIgbnVtYmVyIGZvciBkYXRlIGFjY29yZGluZyB0byBmaXNjYWwgeWVhclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UXVhcnRlckFjY29yZGluZ1RvRmlzY2FsWWVhcihkYXRlOiBNb21lbnQpOiBudW1iZXIge1xuICAgICAgICBsZXQgZmlzY2FsTW9udGggPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgY29uc3QgZGF0ZU1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICBpZiAoZGF0ZU1vbnRoIDwgZmlzY2FsTW9udGgpIHtcbiAgICAgICAgICAgIGZpc2NhbE1vbnRoIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKChkYXRlLm1vbnRoKCkgLSBmaXNjYWxNb250aCkgLyAzKSArIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZlF1YXJ0ZXIoZGF0ZTogTW9tZW50LCBxdWFydGVyTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZGF0ZS5zdWJ0cmFjdCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ00nKVxuICAgICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKVxuICAgICAgICAgICAgLmFkZCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciArIHF1YXJ0ZXJOdW1iZXIgKiAzIC0gMSwgJ00nKVxuICAgICAgICAgICAgLmVuZE9mKCdtb250aCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mUXVhcnRlcihkYXRlOiBNb21lbnQsIHF1YXJ0ZXJOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkYXRlLnN1YnRyYWN0KHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnTScpXG4gICAgICAgICAgICAuc3RhcnRPZigneWVhcicpXG4gICAgICAgICAgICAuYWRkKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyICsgKHF1YXJ0ZXJOdW1iZXIgLSAxKSAqIDMsICdNJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZkN1cnJlbnRRdWFydGVyKGRhdGU6IE1vbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEVuZE9mUXVhcnRlcihkYXRlLCB0aGlzLmdldFF1YXJ0ZXJBY2NvcmRpbmdUb0Zpc2NhbFllYXIoZGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIoZGF0ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U3RhcnRPZlF1YXJ0ZXIoZGF0ZSwgdGhpcy5nZXRRdWFydGVyQWNjb3JkaW5nVG9GaXNjYWxZZWFyKGRhdGUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBkYXRlIHNlbGVjdGlvbiBvbiB0aGlzIHRpbWVmcmFtZSBkZXBlbmRzIG9uIEZpc2NhbCBZZWFyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZWZyYW1lXG4gICAgICovXG4gICAgcHVibGljIGlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbikge1xuICAgICAgICByZXR1cm4gXy5pbmNsdWRlcyhbVGltZWZyYW1lT3B0aW9uLlFVQVJURVIsIFRpbWVmcmFtZU9wdGlvbi5ZRUFSXSwgdGltZWZyYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCBmcm9tIGRhdGUgZmlzY2FsIHllYXIgc2hpZnQgbW9udGhzIGNvdW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlOiBNb21lbnQpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlTW9kaWZpZWRCeUZpc2NhbE1vbnRocyhkYXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdG8gZGF0ZSBmaXNjYWwgeWVhciBzaGlmdCBtb250aHMgY291bnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpc2NhbFllYXJNb250aHNUb0RhdGUoZGF0ZTogTW9tZW50KTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZU1vZGlmaWVkQnlGaXNjYWxNb250aHMoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZTogTW9tZW50LCBpc1N1YnRyYWN0OiBib29sZWFuID0gZmFsc2UpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5maXNjYWxZZWFyQmFjayB8fCAhdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIG1vbWVudERhdGVbaXNTdWJ0cmFjdCA/ICdzdWJ0cmFjdCcgOiAnYWRkJ10oMSwgJ3llYXInKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnRyYWN0RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIG9yIHN1YnRyYWN0IGRlcGVuZGluZyBvbiBpc1JldmVydCBwYXJlbWV0ZXIgRmlzY2FsIHllYXIgbW9udGggc2hpZnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICogQHBhcmFtIGlzU3VidHJhY3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERhdGVNb2RpZmllZEJ5RmlzY2FsTW9udGhzKGRhdGU6IE1vbWVudCwgaXNTdWJ0cmFjdCA9IGZhbHNlKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIGRhdGUgPyBfLmNsb25lRGVlcChkYXRlKVtpc1N1YnRyYWN0ID8gJ3N1YnRyYWN0JyA6ICdhZGQnXSh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ21vbnRoJykgOiBkYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVEYXRlUGlja2VyQnlQcmVzZXQodGFnOiBEYXRlVGFncywgY2FsZW5kZXI6IGFueSkge1xuICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSB0cnVlO1xuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XG4gICAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAgIGRhdGUgPSBEclNoYXJlZFV0aWxzLmdldERhdGVCeVRhZyh0YWcpO1xuICAgICAgICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIERhdGVUYWdzLlRPREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuWUVTVEVSREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuVEhJU19NT05USDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoRGF0ZUZyb21hdHMuTU9OVEhfWUVBUl9GT1JNQVQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGUsIGNhbGVuZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5QUkVWX01PTlRIOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZSwgY2FsZW5kZXIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXNldFRhZyQubmV4dCh0YWcpO1xuICAgICAgICB0aGlzLnVwZGF0ZWREYXRlQW5kQ2xvc2UkLm5leHQoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGU6IE1vbWVudCwgY2FsZW5kZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoVmlldyA9IGNhbGVuZGVyLm1vbnRoVmlldyBhcyBhbnk7XG4gICAgICAgICAgICBpZiAobW9udGhWaWV3KSB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3Ll9hY3RpdmVEYXRlID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX3NlbGVjdGVkID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX2luaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UHJlc2V0VGFnKCkge1xuICAgICAgICBpZiAoIXRoaXMua2VlcFByZXNldFRhZykge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRUYWckLm5leHQobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBMkIsZUFBZSxFQUFvQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFJNUIsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVJLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFzQyxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0YsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQVVqRixZQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3ZELG9CQUFvQixFQUFFLENBQ3pCLENBQUM7UUFFRixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN4RCx5QkFB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QU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFnQixDQUFDO1lBQzVDLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDM0IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDTCxDQUFDO3VHQTdPUSxtQkFBbUI7c0dBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlRnJvbWF0cywgRGF0ZVRhZ3MsIElEYXRlUGlja2VyRm9ybWF0Q29uZmlnLCBUaW1lZnJhbWVPcHRpb24sIFRUaW1lZnJhbWVPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGF0ZVBpY2tlcic7XG5pbXBvcnQgeyBEclNoYXJlZFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZHItc2hhcmVkLXV0aWxzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFdlZWtJbmZvIH0gZnJvbSAnLi4vd2Vlay1zZWxlY3Rvci93ZWVrLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJTZXJ2aWNlIHtcbiAgICBpc1RpbWVmcmFtZVNlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90aW1lZnJhbWUkOiBCZWhhdmlvclN1YmplY3Q8VFRpbWVmcmFtZU9wdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFRpbWVmcmFtZU9wdGlvbi5EQVkpO1xuICAgIHB1YmxpYyByZWFkb25seSB0aW1lZnJhbWUkID0gdGhpcy5fdGltZWZyYW1lJC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgcHVibGljIGdldCB0aW1lZnJhbWUoKTogVFRpbWVmcmFtZU9wdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aW1lZnJhbWUkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0aW1lZnJhbWUodmFsdWU6IFRUaW1lZnJhbWVPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fdGltZWZyYW1lJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBmb3JtYXQkID0gdGhpcy50aW1lZnJhbWUkLnBpcGUoXG4gICAgICAgIG1hcCgodGltZWZyYW1lKSA9PiB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGltZWZyYW1lKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcblxuICAgIHVwZGF0ZWRRdWFydGVyJCA9IG5ldyBTdWJqZWN0PE1vbWVudD4oKTtcbiAgICByZWFkb25seSB3ZWVrU2VsZWN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdlZWtJbmZvPigpO1xuICAgIHVwZGF0ZWREYXRlQW5kQ2xvc2UkID0gbmV3IFN1YmplY3Q8TW9tZW50PigpO1xuICAgIGRhdGVQaWNrZXJJbnN0YW5jZTogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIGlzVXNpbmdEYXRlVGFnUHJlc2V0czogYm9vbGVhbjtcbiAgICBwcmVzZXRUYWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlVGFncz4oJycgYXMgRGF0ZVRhZ3MpO1xuICAgIG9uU2FtZURheVNlbGVjdGVkSW5DYWxlbmRhciQgPSBuZXcgU3ViamVjdDxNb21lbnQ+KCk7XG4gICAga2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgIGlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgIGF2YWlsYWJsZVRpbWVmcmFtZXMgPSBbXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5EQVksXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5XRUVLLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uTU9OVEgsXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uWUVBUixcbiAgICBdO1xuXG4gICAgcHVibGljIGZvcm1hdENvbmZpZzogSURhdGVQaWNrZXJGb3JtYXRDb25maWcgPSB7XG4gICAgICAgIGRheTogRGF0ZUZyb21hdHMuTUFUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgIG1vbnRoOiBEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCxcbiAgICAgICAgeWVhcjogRGF0ZUZyb21hdHMuWUVBUl9GT1JNQVQsXG4gICAgICAgIHF1YXJ0ZXI6IERhdGVGcm9tYXRzLlFVQVJURVJfRk9STUFULFxuICAgICAgICB3ZWVrOiBEYXRlRnJvbWF0cy5XRUVLX0ZPUk1BVCxcbiAgICB9O1xuICAgIHB1YmxpYyBjYWxlbmRhckluc3RhbmNlOiBNYXRDYWxlbmRhcjxhbnk+O1xuICAgIHB1YmxpYyBtYXhEYXRlOiBNb21lbnQ7XG4gICAgcHVibGljIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG4gICAgcHVibGljIGZpc2NhbFllYXJCYWNrID0gZmFsc2U7XG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lubmVyVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb21lbnQ+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbm5lclZhbHVlJCA9IHRoaXMuX2lubmVyVmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHNldCBpbm5lclZhbHVlKHZhbHVlOiBNb21lbnQpIHtcbiAgICAgICAgdGhpcy5faW5uZXJWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5UHJlZml4KCkge1xuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy50aW1lZnJhbWUpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgZm9ybWF0Q2FjaGVkPy5pbmNsdWRlcygnUScpOlxuICAgICAgICAgICAgICAgIHJldHVybiAnUSc7XG4gICAgICAgICAgICBjYXNlIGZvcm1hdENhY2hlZD8uaW5jbHVkZXMoJ1cnKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1cnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUaW1lZnJhbWUoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIERyU2hhcmVkVXRpbHMuZ2V0VGltZWZyYW1lQnlEYXRlRm9ybWF0KGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlndXJlZEZvcm1hdCh0aW1lZnJhbWU6IFRUaW1lZnJhbWVPcHRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb25maWdbdGltZWZyYW1lXTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZvcm1hdCA9IHRoaXMubm9ybWFsaXplVmFsdWUoZm9ybWF0KTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWUgPSB0aGlzLmdldFRpbWVmcmFtZShub3JtYWxpemVkRm9ybWF0KTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL2QvZywgJ0QnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgcXVhcnRlciBudW1iZXIgZm9yIGRhdGUgYWNjb3JkaW5nIHRvIGZpc2NhbCB5ZWFyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRRdWFydGVyQWNjb3JkaW5nVG9GaXNjYWxZZWFyKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIGxldCBmaXNjYWxNb250aCA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICBjb25zdCBkYXRlTW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgIGlmIChkYXRlTW9udGggPCBmaXNjYWxNb250aCkge1xuICAgICAgICAgICAgZmlzY2FsTW9udGggLT0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoKGRhdGUubW9udGgoKSAtIGZpc2NhbE1vbnRoKSAvIDMpICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRhdGUgdG8gZW5kIG9mIHF1YXJ0ZXIgaW4gRlkgYnkgcGFzc2VkIHF1YXJ0ZXIgbnVtYmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSBxdWFydGVyTnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIHNldEVuZE9mUXVhcnRlcihkYXRlOiBNb21lbnQsIHF1YXJ0ZXJOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkYXRlLnN1YnRyYWN0KHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnTScpXG4gICAgICAgICAgICAuc3RhcnRPZigneWVhcicpXG4gICAgICAgICAgICAuYWRkKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyICsgcXVhcnRlck51bWJlciAqIDMgLSAxLCAnTScpXG4gICAgICAgICAgICAuZW5kT2YoJ21vbnRoJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIHN0YXJ0IG9mIHF1YXJ0ZXIgaW4gRlkgYnkgcGFzc2VkIHF1YXJ0ZXIgbnVtYmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSBxdWFydGVyTnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXJ0T2ZRdWFydGVyKGRhdGU6IE1vbWVudCwgcXVhcnRlck51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGRhdGUuc3VidHJhY3QodGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIsICdNJylcbiAgICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJylcbiAgICAgICAgICAgIC5hZGQodGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgKyAocXVhcnRlck51bWJlciAtIDEpICogMywgJ00nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRhdGUgdG8gZW5kIG9mIGN1cnJlbnQgcXVhcnRlciAoaW4gd2hpY2ggZGF0ZSBpcyBsb2NhdGVkKSBhY2NvcmRpbmcgdG8gRllcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZGF0ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RW5kT2ZRdWFydGVyKGRhdGUsIHRoaXMuZ2V0UXVhcnRlckFjY29yZGluZ1RvRmlzY2FsWWVhcihkYXRlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIHN0YXJ0IG9mIGN1cnJlbnQgcXVhcnRlciAoaW4gd2hpY2ggZGF0ZSBpcyBsb2NhdGVkKSBhY2NvcmRpbmcgdG8gRllcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihkYXRlOiBNb21lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTdGFydE9mUXVhcnRlcihkYXRlLCB0aGlzLmdldFF1YXJ0ZXJBY2NvcmRpbmdUb0Zpc2NhbFllYXIoZGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGRhdGUgc2VsZWN0aW9uIG9uIHRoaXMgdGltZWZyYW1lIGRlcGVuZHMgb24gRmlzY2FsIFllYXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aW1lZnJhbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBfLmluY2x1ZGVzKFtUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiwgVGltZWZyYW1lT3B0aW9uLllFQVJdLCB0aW1lZnJhbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnRyYWN0IGZyb20gZGF0ZSBmaXNjYWwgeWVhciBzaGlmdCBtb250aHMgY291bnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGU6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGVNb2RpZmllZEJ5RmlzY2FsTW9udGhzKGRhdGUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0byBkYXRlIGZpc2NhbCB5ZWFyIHNoaWZ0IG1vbnRocyBjb3VudFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShkYXRlOiBNb21lbnQpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlTW9kaWZpZWRCeUZpc2NhbE1vbnRocyhkYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQsIGlzU3VidHJhY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmZpc2NhbFllYXJCYWNrIHx8ICF0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikgcmV0dXJuO1xuICAgICAgICByZXR1cm4gbW9tZW50RGF0ZVtpc1N1YnRyYWN0ID8gJ3N1YnRyYWN0JyA6ICdhZGQnXSgxLCAneWVhcicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKG1vbWVudERhdGU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKG1vbWVudERhdGU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgb3Igc3VidHJhY3QgZGVwZW5kaW5nIG9uIGlzUmV2ZXJ0IHBhcmVtZXRlciBGaXNjYWwgeWVhciBtb250aCBzaGlmdFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gaXNTdWJ0cmFjdFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RGF0ZU1vZGlmaWVkQnlGaXNjYWxNb250aHMoZGF0ZTogTW9tZW50LCBpc1N1YnRyYWN0ID0gZmFsc2UpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gZGF0ZSA/IF8uY2xvbmVEZWVwKGRhdGUpW2lzU3VidHJhY3QgPyAnc3VidHJhY3QnIDogJ2FkZCddKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnbW9udGgnKSA6IGRhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZURhdGVQaWNrZXJCeVByZXNldCh0YWc6IERhdGVUYWdzLCBjYWxlbmRlcjogYW55KSB7XG4gICAgICAgIHRoaXMua2VlcFByZXNldFRhZyA9IHRydWU7XG4gICAgICAgIGxldCBkYXRlID0gbnVsbDtcbiAgICAgICAgaWYgKHRhZykge1xuICAgICAgICAgICAgZGF0ZSA9IERyU2hhcmVkVXRpbHMuZ2V0RGF0ZUJ5VGFnKHRhZyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuVE9EQVk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5ZRVNURVJEQVk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5USElTX01PTlRIOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZSwgY2FsZW5kZXIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERhdGVUYWdzLlBSRVZfTU9OVEg6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1PTlRIX1lFQVJfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRlSW5DYWxlbmRhck1vbnRoVmlldyhkYXRlLCBjYWxlbmRlcik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJlc2V0VGFnJC5uZXh0KHRhZyk7XG4gICAgICAgIHRoaXMudXBkYXRlZERhdGVBbmRDbG9zZSQubmV4dChkYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZTogTW9tZW50LCBjYWxlbmRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9udGhWaWV3ID0gY2FsZW5kZXIubW9udGhWaWV3IGFzIGFueTtcbiAgICAgICAgICAgIGlmIChtb250aFZpZXcpIHtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX2FjdGl2ZURhdGUgPSBkYXRlO1xuICAgICAgICAgICAgICAgIG1vbnRoVmlldy5fc2VsZWN0ZWQgPSBkYXRlO1xuICAgICAgICAgICAgICAgIG1vbnRoVmlldy5faW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRQcmVzZXRUYWcoKSB7XG4gICAgICAgIGlmICghdGhpcy5rZWVwUHJlc2V0VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnByZXNldFRhZyQubmV4dChudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMua2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -9,10 +9,10 @@ import * as moment from 'moment';
|
|
|
9
9
|
import moment__default from 'moment';
|
|
10
10
|
import * as i1$2 from '@angular/forms';
|
|
11
11
|
import { NG_VALUE_ACCESSOR, FormBuilder, FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
12
|
-
import { Observable, BehaviorSubject, distinctUntilChanged, Subject, startWith, takeUntil, noop as noop$3, combineLatest, from, merge as merge$1, fromEvent, filter as filter$1, switchMap as switchMap$1,
|
|
12
|
+
import { Observable, BehaviorSubject, distinctUntilChanged, map, Subject, startWith, takeUntil, noop as noop$3, combineLatest, from, merge as merge$1, fromEvent, filter as filter$1, switchMap as switchMap$1, observeOn, asyncScheduler, withLatestFrom, first as first$1, interval, throwError, finalize as finalize$1, tap as tap$1, defer } from 'rxjs';
|
|
13
13
|
import * as _ from 'lodash';
|
|
14
|
-
import { isNil, isObject, cloneDeep, find, indexOf, reduce, map as map$
|
|
15
|
-
import { skip, debounceTime, filter, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, startWith as startWith$1, map, tap, shareReplay, switchMap, first, catchError, finalize, take } from 'rxjs/operators';
|
|
14
|
+
import { isNil, isObject, cloneDeep, find, indexOf, reduce, map as map$2, isNumber, merge, forEach, some, orderBy, filter as filter$2, includes, pull, concat, isString, isBoolean } from 'lodash';
|
|
15
|
+
import { skip, debounceTime, filter, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, startWith as startWith$1, map as map$1, tap, shareReplay, switchMap, first, catchError, finalize, take } from 'rxjs/operators';
|
|
16
16
|
import * as i5 from '@angular/material/datepicker';
|
|
17
17
|
import { MatCalendar, DateRange, MAT_DATE_RANGE_SELECTION_STRATEGY, MatDatepickerModule } from '@angular/material/datepicker';
|
|
18
18
|
import { transition, style, animate, trigger, state } from '@angular/animations';
|
|
@@ -241,10 +241,7 @@ class DrDatePickerService {
|
|
|
241
241
|
this.isTimeframeSelectionEnabled = false;
|
|
242
242
|
this._timeframe$ = new BehaviorSubject(TimeframeOption.DAY);
|
|
243
243
|
this.timeframe$ = this._timeframe$.asObservable().pipe(distinctUntilChanged());
|
|
244
|
-
|
|
245
|
-
// we need to get rid of a separate subject and use pipe from timeframe$ for it
|
|
246
|
-
// making @Input() format in component just setting the timeframe
|
|
247
|
-
this.format$ = new BehaviorSubject(DateFromats.MAT_DEFAULT_DATE_FORMAT);
|
|
244
|
+
this.format$ = this.timeframe$.pipe(map((timeframe) => this.getConfiguredFormat(timeframe)), distinctUntilChanged());
|
|
248
245
|
this.updatedQuarter$ = new Subject();
|
|
249
246
|
this.weekSelectionChange$ = new Subject();
|
|
250
247
|
this.updatedDateAndClose$ = new Subject();
|
|
@@ -301,9 +298,8 @@ class DrDatePickerService {
|
|
|
301
298
|
return this.formatConfig[timeframe];
|
|
302
299
|
}
|
|
303
300
|
updateTimeframeAndFormat(format) {
|
|
304
|
-
const normalizedFormat = this.normalizeValue(format
|
|
301
|
+
const normalizedFormat = this.normalizeValue(format);
|
|
305
302
|
this.timeframe = this.getTimeframe(normalizedFormat);
|
|
306
|
-
this.format$.next(this.getConfiguredFormat(this.timeframe));
|
|
307
303
|
}
|
|
308
304
|
normalizeValue(value) {
|
|
309
305
|
return value.replace(/d/g, 'D');
|
|
@@ -2309,7 +2305,7 @@ class DrDatePickerComponent {
|
|
|
2309
2305
|
this.displayValue$ = combineLatest([
|
|
2310
2306
|
this.datePickerService.innerValue$.pipe(distinctUntilChanged$1()),
|
|
2311
2307
|
this.datePickerService.timeframe$.pipe(distinctUntilChanged$1()),
|
|
2312
|
-
]).pipe(startWith$1([null, null]), map(([value, timeframe]) => this.transformDisplayedValue(value, timeframe)), tap((value) => {
|
|
2308
|
+
]).pipe(startWith$1([null, null]), map$1(([value, timeframe]) => this.transformDisplayedValue(value, timeframe)), tap((value) => {
|
|
2313
2309
|
if (value && this.datePickerService.calendarInstance) {
|
|
2314
2310
|
this.datePickerService.calendarInstance.activeDate = value;
|
|
2315
2311
|
this.datePickerService.calendarInstance.selected = value;
|
|
@@ -2519,7 +2515,6 @@ class DrDatePickerComponent {
|
|
|
2519
2515
|
timeframe = this.datePickerService.getTimeframe(format);
|
|
2520
2516
|
}
|
|
2521
2517
|
this.datePickerService.timeframe = timeframe;
|
|
2522
|
-
this.datePickerService.format$.next(format);
|
|
2523
2518
|
}
|
|
2524
2519
|
onOpen() {
|
|
2525
2520
|
this.opened$.next(true);
|
|
@@ -4058,7 +4053,7 @@ class DrDynamicTagComponent {
|
|
|
4058
4053
|
return (valueFromConfig || currentValues[0]);
|
|
4059
4054
|
}
|
|
4060
4055
|
getParentValueKey() {
|
|
4061
|
-
return map$
|
|
4056
|
+
return map$2(this.connectedTags, (connectedTag) => {
|
|
4062
4057
|
if (isNumber(connectedTag.value)) {
|
|
4063
4058
|
const momentData = moment__default.unix(connectedTag.value);
|
|
4064
4059
|
const convertedParentKey = this.parentKeyFormatterFn
|
|
@@ -4246,7 +4241,7 @@ class DrTagComponent {
|
|
|
4246
4241
|
}
|
|
4247
4242
|
onDynamicHandler(event) {
|
|
4248
4243
|
const connectedDateTagConfig = find(this.tagsConfig, (tagConfig) => tagConfig.name === event.name);
|
|
4249
|
-
this.connectedTags = map$
|
|
4244
|
+
this.connectedTags = map$2(this.connectedTags, (tag) => {
|
|
4250
4245
|
if (tag.id === connectedDateTagConfig.id) {
|
|
4251
4246
|
tag.value = event.value;
|
|
4252
4247
|
tag.locked = event.locked;
|
|
@@ -5117,7 +5112,7 @@ class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
|
|
|
5117
5112
|
this.isNextDateDisabled = false;
|
|
5118
5113
|
this.isPrevDateDisabled = false;
|
|
5119
5114
|
this.onChangeDebounced$ = new Subject();
|
|
5120
|
-
this.displayedFormattedValue$ = this.displayValue$.pipe(takeUntil$1(this.destroyed$), map((value) => {
|
|
5115
|
+
this.displayedFormattedValue$ = this.displayValue$.pipe(takeUntil$1(this.destroyed$), map$1((value) => {
|
|
5121
5116
|
if (!value)
|
|
5122
5117
|
return this.placeholder;
|
|
5123
5118
|
return (this.datePickerService.getDisplayPrefix() +
|
|
@@ -7857,9 +7852,9 @@ class DrErrorComponent {
|
|
|
7857
7852
|
this.displayAsLabel = false;
|
|
7858
7853
|
this.noIcon = false;
|
|
7859
7854
|
this.controlChange$ = new BehaviorSubject(null);
|
|
7860
|
-
this.controlErrorStatus$ = this.controlChange$.pipe(filter$1(Boolean), switchMap$1((control) => control.statusChanges.pipe().pipe(map
|
|
7861
|
-
this.error$ = this.controlErrorStatus$.pipe(observeOn(asyncScheduler), withLatestFrom(this.controlChange$), map
|
|
7862
|
-
this.warning$ = this.controlChange$.pipe(map
|
|
7855
|
+
this.controlErrorStatus$ = this.controlChange$.pipe(filter$1(Boolean), switchMap$1((control) => control.statusChanges.pipe().pipe(map(() => control))), map((control) => control.status === 'INVALID' && !control.pristine));
|
|
7856
|
+
this.error$ = this.controlErrorStatus$.pipe(observeOn(asyncScheduler), withLatestFrom(this.controlChange$), map(([show, control]) => [show, this.displayAsLabel ? this.errorString(control) : this.label]), map(([show, label]) => (show ? label : null)));
|
|
7857
|
+
this.warning$ = this.controlChange$.pipe(map((control) => !!control.errors?.isWarning));
|
|
7863
7858
|
}
|
|
7864
7859
|
set control(value) {
|
|
7865
7860
|
if (value) {
|
|
@@ -8482,7 +8477,7 @@ class ScenarioService {
|
|
|
8482
8477
|
return;
|
|
8483
8478
|
if (!dateTag)
|
|
8484
8479
|
return;
|
|
8485
|
-
dateTag.subTags = map$
|
|
8480
|
+
dateTag.subTags = map$2(dateTag.subTags, (subTag) => {
|
|
8486
8481
|
subTag.hidden = tag.toggle && !includes(tag.acceptableSubTags, subTag.subType);
|
|
8487
8482
|
return subTag;
|
|
8488
8483
|
});
|
|
@@ -9658,7 +9653,7 @@ class DropdownInstanceService {
|
|
|
9658
9653
|
return this.instances.slice(this.instances.indexOf(ref));
|
|
9659
9654
|
}
|
|
9660
9655
|
inactive(ref) {
|
|
9661
|
-
return this.instances$.pipe(map
|
|
9656
|
+
return this.instances$.pipe(map(() => this.getSequence(ref)), filter$1((value) => !!value.length), switchMap$1((value) => interval(200).pipe(map(() => value))), filter$1((emissions) => emissions.every((value) => !value.active())), takeUntil(this.destroy$));
|
|
9662
9657
|
}
|
|
9663
9658
|
}
|
|
9664
9659
|
|
|
@@ -13747,7 +13742,7 @@ class DrawerContainer extends CdkDialogContainer {
|
|
|
13747
13742
|
}
|
|
13748
13743
|
container.style.transition = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';
|
|
13749
13744
|
container.style.transform = `translate3d(0px, 0px, 0px)`;
|
|
13750
|
-
}), takeUntil(mouseup$))), map
|
|
13745
|
+
}), takeUntil(mouseup$))), map((event) => this.positionStrategy.extractMousePosition(event)), distinctUntilChanged(), tap$1((position) => {
|
|
13751
13746
|
let containerPosition = this.getContainerPosition(container);
|
|
13752
13747
|
containerPosition = Math.min(containerPosition, lastPosition);
|
|
13753
13748
|
lastPosition = Math.min(containerPosition, lastPosition);
|