ng-virtual-list 16.7.17 → 16.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -10
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +2 -2
- package/esm2022/lib/models/base-virtual-list-item-component.mjs +1 -1
- package/esm2022/lib/models/item.model.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +14 -14
- package/esm2022/lib/ng-virtual-list.service.mjs +1 -1
- package/esm2022/lib/utils/buffer-interpolation.mjs +2 -2
- package/esm2022/lib/utils/cache-map.mjs +177 -0
- package/esm2022/lib/utils/disposable-component.mjs +27 -0
- package/esm2022/lib/utils/event-emitter.mjs +105 -0
- package/esm2022/lib/utils/index.mjs +3 -3
- package/esm2022/lib/utils/is-collection-mode.mjs +15 -0
- package/esm2022/lib/utils/is-direction.mjs +15 -0
- package/esm2022/lib/utils/is-method-for-selecting.mjs +18 -0
- package/esm2022/lib/utils/scroll-event.mjs +42 -0
- package/esm2022/lib/utils/toggle-class-name.mjs +15 -0
- package/esm2022/lib/utils/track-box.mjs +799 -0
- package/esm2022/lib/utils/tracker.mjs +5 -5
- package/fesm2022/ng-virtual-list.mjs +104 -118
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/models/base-virtual-list-item-component.d.ts +0 -1
- package/lib/models/item.model.d.ts +1 -5
- package/lib/ng-virtual-list.service.d.ts +1 -1
- package/lib/utils/{cacheMap.d.ts → cache-map.d.ts} +14 -4
- package/lib/utils/disposable-component.d.ts +15 -0
- package/lib/utils/{eventEmitter.d.ts → event-emitter.d.ts} +4 -2
- package/lib/utils/index.d.ts +3 -3
- package/lib/utils/{isCollectionMode.d.ts → is-collection-mode.d.ts} +1 -1
- package/lib/utils/{isDirection.d.ts → is-direction.d.ts} +1 -1
- package/lib/utils/{isMethodForSelecting.d.ts → is-method-for-selecting.d.ts} +1 -1
- package/lib/utils/{scrollEvent.d.ts → scroll-event.d.ts} +1 -1
- package/lib/utils/{toggleClassName.d.ts → toggle-class-name.d.ts} +1 -1
- package/lib/utils/{trackBox.d.ts → track-box.d.ts} +19 -52
- package/lib/utils/tracker.d.ts +4 -3
- package/package.json +1 -1
- package/esm2022/lib/utils/cacheMap.mjs +0 -168
- package/esm2022/lib/utils/eventEmitter.mjs +0 -105
- package/esm2022/lib/utils/isCollectionMode.mjs +0 -15
- package/esm2022/lib/utils/isDirection.mjs +0 -15
- package/esm2022/lib/utils/isMethodForSelecting.mjs +0 -18
- package/esm2022/lib/utils/scrollEvent.mjs +0 -42
- package/esm2022/lib/utils/toggleClassName.mjs +0 -15
- package/esm2022/lib/utils/trackBox.mjs +0 -822
package/README.md
CHANGED
|
@@ -630,16 +630,6 @@ Properties
|
|
|
630
630
|
|
|
631
631
|
<br/>
|
|
632
632
|
|
|
633
|
-
Methods
|
|
634
|
-
|
|
635
|
-
| Method | Type | Description |
|
|
636
|
-
|--|--|--|
|
|
637
|
-
| scrollTo | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior: ScrollBehavior = 'auto') => number | The method scrolls the list to the element with the given id and returns the value of the scrolled area. Behavior accepts the values "auto", "instant" and "smooth". |
|
|
638
|
-
| scrollToEnd | (behavior?: ScrollBehavior) => void | Scrolls the scroll area to the desired element with the specified ID. |
|
|
639
|
-
| getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior?: ScrollBehavior) => void | Returns the bounds of an element with a given id |
|
|
640
|
-
|
|
641
|
-
<br/>
|
|
642
|
-
|
|
643
633
|
## 🤝 Contributing
|
|
644
634
|
|
|
645
635
|
PRs and feature requests are welcome!
|
|
@@ -40,7 +40,7 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
40
40
|
_$part = new BehaviorSubject(PART_DEFAULT_ITEM);
|
|
41
41
|
$part = this._$part.asObservable();
|
|
42
42
|
regular = false;
|
|
43
|
-
data;
|
|
43
|
+
data = undefined;
|
|
44
44
|
_$data = new BehaviorSubject(this.data);
|
|
45
45
|
$data = this._$data.asObservable();
|
|
46
46
|
set item(v) {
|
|
@@ -360,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
360
360
|
'role': 'listitem',
|
|
361
361
|
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"data\">\r\n <div #listItem [part]=\"$part | async\" [attr.ng-vl-index]=\"data.config.tabIndex || -1\" tabindex=\"0\" class=\"ngvl-item__container\" [ngClass]=\"{'snapped': data.config.snapped,\r\n 'snapped-out': data.config.snappedOut, 'focus': $focused | async}\" (click)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"{data: data.data || {}, measures: measures | async, config: $config | async}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"] }]
|
|
362
362
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgVirtualListService }]; } });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQ2pJLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUNqSSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixHQUNuRixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFhLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUVoRSxNQUFNLGtCQUFrQixHQUFHLGVBQWUsRUFBRSxRQUFRLEdBQUcsYUFBYSxFQUFFLFFBQVEsR0FBRyxVQUFVLEVBQUUsYUFBYSxHQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsU0FBUyxFQUM5SCxTQUFTLEdBQUcsR0FBRyxFQUFFLFlBQVksR0FBRyxXQUFXLEVBQUUsVUFBVSxHQUFHLFNBQVMsRUFBRSxhQUFhLEdBQUcsWUFBWSxFQUFFLFlBQVksR0FBRyxXQUFXLEVBQzdILGNBQWMsR0FBRyxTQUFTLEVBQUUsZUFBZSxHQUFHLFVBQVUsRUFBRSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBRXZGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUMxQyxPQUFPLElBQUksUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBV0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDRCQUE0QjtJQTRIdEQ7SUFBaUM7SUFBOEM7SUEzSDNGLEdBQUcsQ0FBVTtJQUNyQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVPLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztJQUNsQyxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXpCLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFN0IsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUU5QixRQUFRLEdBQUcsSUFBSSxlQUFlLENBQXVCLEVBQTBCLENBQUMsQ0FBQztJQUN6RixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV2QyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQXFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRFLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN4RCxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVqQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVuQyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRXpCLElBQUksQ0FBcUM7SUFFakMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFxQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0MsSUFBSSxJQUFJLENBQUMsQ0FBcUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxjQUFjLEdBQVcsZ0JBQWdCLENBQUM7SUFDbEQsSUFBSSxhQUFhLENBQUMsQ0FBUztRQUN6QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUErQjtJQUUzQyxJQUFJLFFBQVEsQ0FBQyxDQUErQjtRQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVPLGNBQWMsR0FBRyxDQUFDLElBQTZDLEVBQUUsRUFBRTtJQUN6RTs7O09BR0c7SUFDSCxDQUFDLFdBQWdDLFNBQVMsRUFBRSxFQUFFO1FBQzVDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztZQUNwRixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0lBRUksZ0JBQWdCLEdBQUcsQ0FBQyxJQUE2QyxFQUFFLEVBQUU7SUFDM0U7OztNQUdFO0lBQ0YsQ0FBQyxZQUFpQyxTQUFTLEVBQUUsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7WUFDckYsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztJQUVJLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDM0I7O01BRUU7SUFDRixDQUFDLFFBQXdCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVKLFlBQW9CLElBQXVCLEVBQVUsV0FBb0MsRUFBVSxRQUE4QjtRQUMvSCxLQUFLLEVBQUUsQ0FBQztRQURVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUFFL0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFDdEIsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEUsTUFBTSxDQUFDLElBQUksQ0FDVCxrQkFBa0IsRUFBRSxFQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUMxQyxrQkFBa0IsRUFBRSxFQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUU7WUFFWCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQzNDLGtCQUFrQixFQUFFLEVBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRTtZQUViLFNBQVMsQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3pELGtCQUFrQixFQUFFLEVBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDTixRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsS0FBSyxTQUFTLENBQUMsQ0FBQzt3QkFDZCxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFOzRCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2pDO3dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7NEJBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDbkM7d0JBQ0QsTUFBTTtxQkFDUDtvQkFDRCxLQUFLLFlBQVk7d0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFOzRCQUN4QyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ2xCO3dCQUNELE1BQU07b0JBQ1IsS0FBSyxVQUFVO3dCQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUU7NEJBQ3ZDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDOzRCQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt5QkFDbEI7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLGFBQWE7d0JBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRTs0QkFDeEMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7NEJBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3lCQUNsQjt3QkFDRCxNQUFNO29CQUNSLEtBQUssWUFBWTt3QkFDZixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFOzRCQUN2QyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDN0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ2xCO3dCQUNELE1BQU07aUJBQ1Q7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWhCLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BILGtCQUFrQixFQUFFLEVBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUNyRixHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUM1QyxRQUFRLE1BQU0sRUFBRTtnQkFDZCxLQUFLLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwQyxNQUFNLEVBQUUsR0FBRyxXQUE2QixFQUFFLFVBQVUsR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDMUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO29CQUM5QixNQUFNO2lCQUNQO2dCQUNELEtBQUssd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzFDLE1BQU0sU0FBUyxHQUFHLFdBQXdCLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbkksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO29CQUM5QixNQUFNO2lCQUNQO2dCQUNELEtBQUssd0JBQXdCLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsTUFBTTtpQkFDUDthQUNGO1lBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEgsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7WUFFaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNsRyxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDckIsT0FBTyxLQUFLLElBQUksTUFBTSxFQUFFO2dCQUN0QixLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQWlCLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzdGLElBQUksRUFBRSxFQUFFO29CQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4QixNQUFNO2lCQUNQO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ2xELElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNyQixPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBaUIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDN0YsSUFBSSxFQUFFLEVBQUU7b0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3hCLE1BQU07aUJBQ1A7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUF3QixlQUFlLENBQUMsTUFBTTtRQUMxRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO1lBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBaUIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RixJQUFJLEVBQUUsRUFBRTtnQkFDTixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEM7U0FDRjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsQ0FBMEM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUEwQztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixHQUFHLENBQUMsRUFBRSxNQUFNLElBQUksRUFBMEIsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDeEksUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtTQUNoRyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDN0UsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUosTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7Z0JBQ3JNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFO29CQUN6QyxNQUFNLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztpQkFDbkM7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO2dCQUNwQyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUM3RCxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztpQkFDOUo7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN6SCxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztpQkFDdEo7YUFDRjtZQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoSixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7U0FDL0k7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxDQUFxQyxFQUFFLFVBQW1CLEVBQUUsV0FBb0I7UUFDcEcsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDMUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQzdCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ2hDLElBQUksSUFBSSxpQkFBaUIsQ0FBQztTQUMzQjtRQUNELElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxJQUFJLGtCQUFrQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLElBQUksbUJBQW1CLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLElBQUksYUFBYSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzdCLElBQUksSUFBSSxpQkFBaUIsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxFQUFFLEdBQWdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUNwRCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssYUFBYSxFQUFFO2dCQUNwQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztTQUNoQzthQUFNO1lBQ0wsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGtCQUFrQixFQUFFO2dCQUM1QyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDO1NBQ3hDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksY0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssWUFBWSxFQUFFO2dCQUNuQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztTQUMvQjthQUFNO1lBQ0wsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGlCQUFpQixFQUFFO2dCQUMzQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1NBQ3ZDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztRQUNwQyxNQUFNLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBalpVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLCtKQzFDdkMsb29CQVFlOzs0RkRrQ0YsMEJBQTBCO2tCQVZ0QyxTQUFTOytCQUNFLHNCQUFzQixRQUcxQjt3QkFDSixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ25CLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvcmVuZGVyLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBGb2N1c0FsaWdubWVudCwgSWQsIElTaXplIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfWklOREVYLCBESVNQTEFZX0JMT0NLLCBESVNQTEFZX05PTkUsIEhJRERFTl9aSU5ERVgsIFBBUlRfREVGQVVMVF9JVEVNLCBQQVJUX0lURU1fQ09MTEFQU0VELCBQQVJUX0lURU1fRVZFTiwgUEFSVF9JVEVNX05FVyxcclxuICBQQVJUX0lURU1fRk9DVVNFRCwgUEFSVF9JVEVNX09ERCwgUEFSVF9JVEVNX1NFTEVDVEVELCBQQVJUX0lURU1fU05BUFBFRCwgUE9TSVRJT05fQUJTT0xVVEUsIFBPU0lUSU9OX1NUSUNLWSwgUFgsIFNJWkVfMTAwX1BFUlNFTlQsXHJcbiAgU0laRV9BVVRPLCBUUkFOU0xBVEVfM0QsIFZJU0lCSUxJVFlfSElEREVOLCBWSVNJQklMSVRZX1ZJU0lCTEUsIFpFUk9TX1RSQU5TTEFURV8zRCxcclxufSBmcm9tICcuLi9jb25zdCc7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tb2RlbHMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB9IGZyb20gJy4uL25nLXZpcnR1YWwtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzIH0gZnJvbSAnLi4vZW51bXMvbWV0aG9kLWZvci1zZWxlY3RpbmctdHlwZXMnO1xyXG5pbXBvcnQgeyB2YWxpZGF0ZUJvb2xlYW4gfSBmcm9tICcuLi91dGlscy92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnRzIH0gZnJvbSAnLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBJRGlzcGxheU9iamVjdENvbmZpZywgSURpc3BsYXlPYmplY3RNZWFzdXJlcyB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmNvbnN0IEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJywgVEFCSU5ERVggPSAnbmctdmwtaW5kZXgnLCBQT1NJVElPTiA9ICdwb3NpdGlvbicsIFBPU0lUSU9OX1pFUk8gPSAnMCcsIElEID0gJ2l0ZW0taWQnLFxyXG4gIEtFWV9TUEFDRSA9IFwiIFwiLCBLRVlfQVJSX0xFRlQgPSBcIkFycm93TGVmdFwiLCBLRVlfQVJSX1VQID0gXCJBcnJvd1VwXCIsIEtFWV9BUlJfUklHSFQgPSBcIkFycm93UmlnaHRcIiwgS0VZX0FSUl9ET1dOID0gXCJBcnJvd0Rvd25cIixcclxuICBFVkVOVF9GT0NVU19JTiA9ICdmb2N1c2luJywgRVZFTlRfRk9DVVNfT1VUID0gJ2ZvY3Vzb3V0JywgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bic7XHJcblxyXG5jb25zdCBnZXRFbGVtZW50QnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgcmV0dXJuIGBbJHtUQUJJTkRFWH09XCIke2luZGV4fVwiXWA7XHJcbn07XHJcblxyXG4vKipcclxuICogVmlydHVhbCBsaXN0IGl0ZW0gY29tcG9uZW50XHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE2LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdjbGFzcyc6ICduZ3ZsX19pdGVtJyxcclxuICAgICdyb2xlJzogJ2xpc3RpdGVtJyxcclxuICB9LFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IHtcclxuICBwcml2YXRlIF9pZCE6IG51bWJlcjtcclxuICBnZXQgaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU07XHJcbiAgZ2V0IHBhcnQoKSB7IHJldHVybiB0aGlzLl9wYXJ0OyB9XHJcblxyXG4gIHByaXZhdGUgX2lzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfJGNvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURpc3BsYXlPYmplY3RDb25maWc+KHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnKTtcclxuICAkY29uZmlnID0gdGhpcy5fJGNvbmZpZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgbWVhc3VyZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByaXZhdGUgXyRmb2N1c2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgJGZvY3VzZWQgPSB0aGlzLl8kZm9jdXNlZC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHBhcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oUEFSVF9ERUZBVUxUX0lURU0pO1xyXG4gICRwYXJ0ID0gdGhpcy5fJHBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHJlZ3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQ+KHRoaXMuZGF0YSk7XHJcbiAgcHJpdmF0ZSAkZGF0YSA9IHRoaXMuXyRkYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBzZXQgaXRlbSh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlUGFydFN0cih2LCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVDb25maWcodik7XHJcblxyXG4gICAgdGhpcy51cGRhdGVNZWFzdXJlcyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIHRoaXMuXyRkYXRhLm5leHQodik7XHJcblxyXG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlZ3VsYXJMZW5ndGg6IHN0cmluZyA9IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgc2V0IHJlZ3VsYXJMZW5ndGgodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fcmVndWxhckxlbmd0aCA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVndWxhckxlbmd0aCA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmlkO1xyXG4gIH1cclxuXHJcbiAgaXRlbVJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbVJlbmRlcmVyID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1SZW5kZXJlciA9IHY7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0SGFuZGxlciA9IChkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpID0+XHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdHMgYSBsaXN0IGl0ZW1cclxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCAtIElmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIHRvZ2dsZSBtZXRob2QgaXMgZXhlY3V0ZWQsIGlmIGZhbHNlIG9yIHRydWUsIHRoZW4gdGhlIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBpcyBwZXJmb3JtZWQuXHJcbiAgICAgKi9cclxuICAgIChzZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlQm9vbGVhbihzZWxlY3RlZCwgdHJ1ZSk7XHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgXCJzZWxlY3RlZFwiIHBhcmFtZXRlciBtdXN0IGJlIG9mIHR5cGUgYGJvb2xlYW5gIG9yIGB1bmRlZmluZWRgLicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLnNlbGVjdChkYXRhLCBzZWxlY3RlZCk7XHJcbiAgICB9O1xyXG5cclxuICBwcml2YXRlIF9jb2xsYXBzZUhhbmRsZXIgPSAoZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSA9PlxyXG4gICAgLyoqXHJcbiAgICAqIENvbGxhcHNlIGxpc3QgaXRlbXNcclxuICAgICogQHBhcmFtIGNvbGxhcHNlZCAtIElmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIHRvZ2dsZSBtZXRob2QgaXMgZXhlY3V0ZWQsIGlmIGZhbHNlIG9yIHRydWUsIHRoZW4gdGhlIGNvbGxhcHNlL2V4cGFuZCBpcyBwZXJmb3JtZWQuXHJcbiAgICAqL1xyXG4gICAgKGNvbGxhcHNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlQm9vbGVhbihjb2xsYXBzZWQsIHRydWUpO1xyXG4gICAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignVGhlIFwiY29sbGFwc2VkXCIgcGFyYW1ldGVyIG11c3QgYmUgb2YgdHlwZSBgYm9vbGVhbmAgb3IgYHVuZGVmaW5lZGAuJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UoZGF0YSwgY29sbGFwc2VkKTtcclxuICAgIH07XHJcblxyXG4gIHByaXZhdGUgX2ZvY3VzSGFuZGxlciA9ICgpID0+XHJcbiAgICAvKipcclxuICAgICogRm9jdXMgYSBsaXN0IGl0ZW1cclxuICAgICovXHJcbiAgICAoYWxpZ246IEZvY3VzQWxpZ25tZW50ID0gRm9jdXNBbGlnbm1lbnRzLkNFTlRFUikgPT4ge1xyXG4gICAgICB0aGlzLmZvY3VzKGFsaWduKTtcclxuICAgIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9zZXJ2aWNlOiBOZ1ZpcnR1YWxMaXN0U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuX2lkID0gdGhpcy5fc2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudElkKCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGEgPSB0aGlzLiRkYXRhLFxyXG4gICAgICAkZm9jdXMgPSB0aGlzLiRmb2N1c2VkO1xyXG5cclxuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgU3RyaW5nKHRoaXMuX2lkKSk7XHJcblxyXG4gICAgJGZvY3VzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5hcmVhRm9jdXModiA/IHRoaXMuX2lkIDogdGhpcy5fc2VydmljZS5mb2N1c2VkSWQgPT09IHRoaXMuX2lkID8gbnVsbCA6IHRoaXMuX3NlcnZpY2UuZm9jdXNlZElkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX0lOKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRmb2N1c2VkLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlUGFydFN0cih0aGlzLmRhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpLFxyXG5cclxuICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudCwgRVZFTlRfRk9DVVNfT1VUKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICAgIHRhcChlID0+IHtcclxuICAgICAgICAgIHRoaXMuXyRmb2N1c2VkLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuZGF0YSwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApLnN1YnNjcmliZSgpLFxyXG5cclxuICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuZWxlbWVudCwgRVZFTlRfS0VZX0RPV04pLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChlLmtleSkge1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9TUEFDRToge1xyXG4gICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9zZXJ2aWNlLnNlbGVjdEJ5Q2xpY2spIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9zZXJ2aWNlLmNvbGxhcHNlQnlDbGljaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZS5jb2xsYXBzZSh0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIEtFWV9BUlJfTEVGVDpcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXYoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9VUDpcclxuICAgICAgICAgICAgICBpZiAodGhpcy5fJGNvbmZpZy5nZXRWYWx1ZSgpLmlzVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzUHJldigpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1JJR0hUOlxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5fJGNvbmZpZy5nZXRWYWx1ZSgpLmlzVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBLRVlfQVJSX0RPV046XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c05leHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRhdGEsIHRoaXMuX3NlcnZpY2UuJG1ldGhvZE9mU2VsZWN0aW5nLCB0aGlzLl9zZXJ2aWNlLiRzZWxlY3RlZElkcywgdGhpcy5fc2VydmljZS4kY29sbGFwc2VkSWRzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIG1hcCgoWywgbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkc10pID0+ICh7IG1ldGhvZDogbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkcyB9KSksXHJcbiAgICAgIHRhcCgoeyBtZXRob2QsIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHMgfSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5TRUxFQ1Q6IHtcclxuICAgICAgICAgICAgY29uc3QgaWQgPSBzZWxlY3RlZElkcyBhcyBJZCB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZCA9IGlkID09PSB0aGlzLml0ZW1JZDtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBzZWxlY3RlZElkcyBhcyBBcnJheTxJZD4sIGlzU2VsZWN0ZWQgPSB0aGlzLml0ZW1JZCAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbElkcyAmJiBhY3R1YWxJZHMuaW5jbHVkZXModGhpcy5pdGVtSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKEFUVFJfQVJFQV9TRUxFQ1RFRCwgU3RyaW5nKGlzU2VsZWN0ZWQpKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTk9ORTpcclxuICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gY29sbGFwc2VkSWRzLCBpc0NvbGxhcHNlZCA9IHRoaXMuaXRlbUlkICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsSWRzICYmIGFjdHVhbElkcy5pbmNsdWRlcyh0aGlzLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5faXNDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuZGF0YSwgdGhpcy5faXNTZWxlY3RlZCwgaXNDb2xsYXBzZWQpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLmRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHRoaXMuZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNOZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQpIHtcclxuICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmRhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMCwgbGVuZ3RoID0gdGhpcy5fc2VydmljZS5jb2xsZWN0aW9uPy5sZW5ndGggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8PSBsZW5ndGgpIHtcclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRFbGVtZW50QnlJbmRleChpbmRleCkpO1xyXG4gICAgICAgIGlmIChlbCkge1xyXG4gICAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNQcmV2KCkge1xyXG4gICAgaWYgKHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQpIHtcclxuICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmRhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaW5kZXgtLTtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oZ2V0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXMoZWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzKGFsaWduOiBGb2N1c0FsaWdubWVudCA9IEZvY3VzQWxpZ25tZW50cy5DRU5URVIpIHtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5kYXRhPy5jb25maWc/LnRhYkluZGV4ID8/IDA7XHJcbiAgICAgIGxldCBpbmRleCA9IHRhYkluZGV4O1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oZ2V0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbCwgYWxpZ24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU1lYXN1cmVzKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5tZWFzdXJlcy5uZXh0KHY/Lm1lYXN1cmVzID8geyAuLi52Lm1lYXN1cmVzIH0gOiB1bmRlZmluZWQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuXyRjb25maWcubmV4dCh7XHJcbiAgICAgIC4uLnY/LmNvbmZpZyB8fCB7fSBhcyBJRGlzcGxheU9iamVjdENvbmZpZywgc2VsZWN0ZWQ6IHRoaXMuX2lzU2VsZWN0ZWQsIGNvbGxhcHNlZDogdGhpcy5faXNDb2xsYXBzZWQsIGZvY3VzZWQ6IHRoaXMuXyRmb2N1c2VkLmdldFZhbHVlKCksXHJcbiAgICAgIGNvbGxhcHNlOiB0aGlzLl9jb2xsYXBzZUhhbmRsZXIodiksIHNlbGVjdDogdGhpcy5fc2VsZWN0SGFuZGxlcih2KSwgZm9jdXM6IHRoaXMuX2ZvY3VzSGFuZGxlcigpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEsIHJlZ3VsYXIgPSB0aGlzLnJlZ3VsYXIsIGxlbmd0aCA9IHRoaXMuX3JlZ3VsYXJMZW5ndGg7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgIHN0eWxlcy56SW5kZXggPSBkYXRhLmNvbmZpZy56SW5kZXg7XHJcbiAgICAgIGlmIChkYXRhLmNvbmZpZy5zbmFwcGVkKSB7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBkYXRhLmNvbmZpZy5zdGlja3kgPT09IDEgPyAnMCcgOiBgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogZGF0YS5tZWFzdXJlcy54fWApO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBkYXRhLmNvbmZpZy5zdGlja3kgPT09IDEgPyBaRVJPU19UUkFOU0xBVEVfM0QgOiBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgaWYgKCFkYXRhLmNvbmZpZy5pc1NuYXBwaW5nTWV0aG9kQWR2YW5jZWQpIHtcclxuICAgICAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX1NUSUNLWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICAgICAgaWYgKHJlZ3VsYXIpIHtcclxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgJzAnKTtcclxuICAgICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLmRlbHRhfSR7UFh9LCAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLmRlbHRhIDogMH0ke1BYfSAsIDApYDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogZGF0YS5tZWFzdXJlcy54fWApO1xyXG4gICAgICAgICAgc3R5bGVzLnRyYW5zZm9ybSA9IGAke1RSQU5TTEFURV8zRH0oJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gMCA6IGRhdGEubWVhc3VyZXMueH0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogMH0ke1BYfSAsIDApYDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogU0laRV8xMDBfUEVSU0VOVCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUGFydFN0cih2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkLCBpc1NlbGVjdGVkOiBib29sZWFuLCBpc0NvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgbGV0IG9kZCA9IGZhbHNlO1xyXG4gICAgaWYgKHY/LmluZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgb2RkID0gdi5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBhcnQgPSBQQVJUX0RFRkFVTFRfSVRFTTtcclxuICAgIHBhcnQgKz0gb2RkID8gUEFSVF9JVEVNX09ERCA6IFBBUlRfSVRFTV9FVkVOO1xyXG4gICAgaWYgKHYgPyB2LmNvbmZpZy5zbmFwcGVkIDogZmFsc2UpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fU05BUFBFRDtcclxuICAgIH1cclxuICAgIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NFTEVDVEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQ29sbGFwc2VkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0NPTExBUFNFRDtcclxuICAgIH1cclxuICAgIGlmICh2ID8gdi5jb25maWcubmV3IDogZmFsc2UpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fTkVXO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuXyRmb2N1c2VkLmdldFZhbHVlKCkpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fRk9DVVNFRDtcclxuICAgIH1cclxuICAgIHRoaXMuXyRwYXJ0Lm5leHQocGFydCk7XHJcbiAgfVxyXG5cclxuICBnZXRCb3VuZHMoKTogSVNpemUge1xyXG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB7IHdpZHRoLCBoZWlnaHQgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZTtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1ZJU0lCTEU7XHJcbiAgICB9XHJcbiAgICBzdHlsZXMuekluZGV4ID0gdGhpcy5kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICB9XHJcbiAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9BQlNPTFVURTtcclxuICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBaRVJPU19UUkFOU0xBVEVfM0Q7XHJcbiAgICBzdHlsZXMuekluZGV4ID0gSElEREVOX1pJTkRFWDtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5fc2VydmljZS5pdGVtQ2xpY2sodGhpcy5kYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhXCI+XHJcbiAgICA8ZGl2ICNsaXN0SXRlbSBbcGFydF09XCIkcGFydCB8IGFzeW5jXCIgW2F0dHIubmctdmwtaW5kZXhdPVwiZGF0YS5jb25maWcudGFiSW5kZXggfHwgLTFcIiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydzbmFwcGVkJzogZGF0YS5jb25maWcuc25hcHBlZCxcclxuICAgICAgICAnc25hcHBlZC1vdXQnOiBkYXRhLmNvbmZpZy5zbmFwcGVkT3V0LCAnZm9jdXMnOiAkZm9jdXNlZCB8IGFzeW5jfVwiIChjbGljayk9XCJvbkNsaWNrSGFuZGxlcigpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1SZW5kZXJlclwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1SZW5kZXJlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2RhdGE6IGRhdGEuZGF0YSB8fCB7fSwgbWVhc3VyZXM6IG1lYXN1cmVzIHwgYXN5bmMsIGNvbmZpZzogJGNvbmZpZyB8IGFzeW5jfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQ2pJLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUNqSSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixHQUNuRixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFhLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUs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TSxJQUFJLGNBQWMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFlBQVksRUFBRTtnQkFDbkMsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRTtnQkFDM0MsT0FBTzthQUNSO1lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztTQUN2QztRQUNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7UUFDcEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztRQUN0QyxNQUFNLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO3dHQWpaVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwrSkMxQ3ZDLG9vQkFRZTs7NEZEa0NGLDBCQUEwQjtrQkFWdEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFHMUI7d0JBQ0osT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnQsIElkLCBJU2l6ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0NPTExBUFNFRCwgUEFSVF9JVEVNX0VWRU4sIFBBUlRfSVRFTV9ORVcsXHJcbiAgUEFSVF9JVEVNX0ZPQ1VTRUQsIFBBUlRfSVRFTV9PREQsIFBBUlRfSVRFTV9TRUxFQ1RFRCwgUEFSVF9JVEVNX1NOQVBQRUQsIFBPU0lUSU9OX0FCU09MVVRFLCBQT1NJVElPTl9TVElDS1ksIFBYLCBTSVpFXzEwMF9QRVJTRU5ULFxyXG4gIFNJWkVfQVVUTywgVFJBTlNMQVRFXzNELCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLCBaRVJPU19UUkFOU0xBVEVfM0QsXHJcbn0gZnJvbSAnLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kZWxzL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdWaXJ0dWFsTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9uZy12aXJ0dWFsLWxpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcyB9IGZyb20gJy4uL2VudW1zL21ldGhvZC1mb3Itc2VsZWN0aW5nLXR5cGVzJztcclxuaW1wb3J0IHsgdmFsaWRhdGVCb29sZWFuIH0gZnJvbSAnLi4vdXRpbHMvdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IEZvY3VzQWxpZ25tZW50cyB9IGZyb20gJy4uL2VudW1zJztcclxuaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5jb25zdCBBVFRSX0FSRUFfU0VMRUNURUQgPSAnYXJlYS1zZWxlY3RlZCcsIFRBQklOREVYID0gJ25nLXZsLWluZGV4JywgUE9TSVRJT04gPSAncG9zaXRpb24nLCBQT1NJVElPTl9aRVJPID0gJzAnLCBJRCA9ICdpdGVtLWlkJyxcclxuICBLRVlfU1BBQ0UgPSBcIiBcIiwgS0VZX0FSUl9MRUZUID0gXCJBcnJvd0xlZnRcIiwgS0VZX0FSUl9VUCA9IFwiQXJyb3dVcFwiLCBLRVlfQVJSX1JJR0hUID0gXCJBcnJvd1JpZ2h0XCIsIEtFWV9BUlJfRE9XTiA9IFwiQXJyb3dEb3duXCIsXHJcbiAgRVZFTlRfRk9DVVNfSU4gPSAnZm9jdXNpbicsIEVWRU5UX0ZPQ1VTX09VVCA9ICdmb2N1c291dCcsIEVWRU5UX0tFWV9ET1dOID0gJ2tleWRvd24nO1xyXG5cclxuY29uc3QgZ2V0RWxlbWVudEJ5SW5kZXggPSAoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gIHJldHVybiBgWyR7VEFCSU5ERVh9PVwiJHtpbmRleH1cIl1gO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFZpcnR1YWwgbGlzdCBpdGVtIGNvbXBvbmVudFxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctdmlydHVhbC1saXN0LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICAnY2xhc3MnOiAnbmd2bF9faXRlbScsXHJcbiAgICAncm9sZSc6ICdsaXN0aXRlbScsXHJcbiAgfSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGFydCA9IFBBUlRfREVGQVVMVF9JVEVNO1xyXG4gIGdldCBwYXJ0KCkgeyByZXR1cm4gdGhpcy5fcGFydDsgfVxyXG5cclxuICBwcml2YXRlIF9pc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2lzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgXyRjb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEaXNwbGF5T2JqZWN0Q29uZmlnPih7fSBhcyBJRGlzcGxheU9iamVjdENvbmZpZyk7XHJcbiAgJGNvbmZpZyA9IHRoaXMuXyRjb25maWcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIG1lYXN1cmVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGlzcGxheU9iamVjdE1lYXN1cmVzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICBwcml2YXRlIF8kZm9jdXNlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICRmb2N1c2VkID0gdGhpcy5fJGZvY3VzZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRwYXJ0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFBBUlRfREVGQVVMVF9JVEVNKTtcclxuICAkcGFydCA9IHRoaXMuXyRwYXJ0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICByZWd1bGFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgXyRkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkPih0aGlzLmRhdGEpO1xyXG4gIHByaXZhdGUgJGRhdGEgPSB0aGlzLl8kZGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodiwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQ29uZmlnKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlTWVhc3VyZXModik7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLl8kZGF0YS5uZXh0KHYpO1xyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWd1bGFyTGVuZ3RoOiBzdHJpbmcgPSBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gIHNldCByZWd1bGFyTGVuZ3RoKHY6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3JlZ3VsYXJMZW5ndGggPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlZ3VsYXJMZW5ndGggPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5pZDtcclxuICB9XHJcblxyXG4gIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLml0ZW1SZW5kZXJlciA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtUmVuZGVyZXIgPSB2O1xyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldCBlbGVtZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdEhhbmRsZXIgPSAoZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSA9PlxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY3RzIGEgbGlzdCBpdGVtXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBzZWxlY3Rpb24vZGVzZWxlY3Rpb24gaXMgcGVyZm9ybWVkLlxyXG4gICAgICovXHJcbiAgICAoc2VsZWN0ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpID0+IHtcclxuICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUJvb2xlYW4oc2VsZWN0ZWQsIHRydWUpO1xyXG4gICAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignVGhlIFwic2VsZWN0ZWRcIiBwYXJhbWV0ZXIgbXVzdCBiZSBvZiB0eXBlIGBib29sZWFuYCBvciBgdW5kZWZpbmVkYC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2VydmljZS5zZWxlY3QoZGF0YSwgc2VsZWN0ZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfY29sbGFwc2VIYW5kbGVyID0gKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkgPT5cclxuICAgIC8qKlxyXG4gICAgKiBDb2xsYXBzZSBsaXN0IGl0ZW1zXHJcbiAgICAqIEBwYXJhbSBjb2xsYXBzZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBjb2xsYXBzZS9leHBhbmQgaXMgcGVyZm9ybWVkLlxyXG4gICAgKi9cclxuICAgIChjb2xsYXBzZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpID0+IHtcclxuICAgICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0ZUJvb2xlYW4oY29sbGFwc2VkLCB0cnVlKTtcclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBcImNvbGxhcHNlZFwiIHBhcmFtZXRlciBtdXN0IGJlIG9mIHR5cGUgYGJvb2xlYW5gIG9yIGB1bmRlZmluZWRgLicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmNvbGxhcHNlKGRhdGEsIGNvbGxhcHNlZCk7XHJcbiAgICB9O1xyXG5cclxuICBwcml2YXRlIF9mb2N1c0hhbmRsZXIgPSAoKSA9PlxyXG4gICAgLyoqXHJcbiAgICAqIEZvY3VzIGEgbGlzdCBpdGVtXHJcbiAgICAqL1xyXG4gICAgKGFsaWduOiBGb2N1c0FsaWdubWVudCA9IEZvY3VzQWxpZ25tZW50cy5DRU5URVIpID0+IHtcclxuICAgICAgdGhpcy5mb2N1cyhhbGlnbik7XHJcbiAgICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBfc2VydmljZTogTmdWaXJ0dWFsTGlzdFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9pZCA9IHRoaXMuX3NlcnZpY2UuZ2VuZXJhdGVDb21wb25lbnRJZCgpO1xyXG5cclxuICAgIGNvbnN0ICRkYXRhID0gdGhpcy4kZGF0YSxcclxuICAgICAgJGZvY3VzID0gdGhpcy4kZm9jdXNlZDtcclxuXHJcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIFN0cmluZyh0aGlzLl9pZCkpO1xyXG5cclxuICAgICRmb2N1cy5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2UuYXJlYUZvY3VzKHYgPyB0aGlzLl9pZCA6IHRoaXMuX3NlcnZpY2UuZm9jdXNlZElkID09PSB0aGlzLl9pZCA/IG51bGwgOiB0aGlzLl9zZXJ2aWNlLmZvY3VzZWRJZCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCBFVkVOVF9GT0NVU19JTikucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcChlID0+IHtcclxuICAgICAgICB0aGlzLl8kZm9jdXNlZC5uZXh0KHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLmRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5kYXRhLCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKSxcclxuXHJcbiAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX09VVCkucGlwZShcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl8kZm9jdXNlZC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLmRhdGEpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlUGFydFN0cih0aGlzLmRhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKS5zdWJzY3JpYmUoKSxcclxuXHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmVsZW1lbnQsIEVWRU5UX0tFWV9ET1dOKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICAgIHRhcChlID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcclxuICAgICAgICAgICAgY2FzZSBLRVlfU1BBQ0U6IHtcclxuICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5fc2VydmljZS5zZWxlY3RCeUNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXJ2aWNlLnNlbGVjdCh0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5fc2VydmljZS5jb2xsYXBzZUJ5Q2xpY2spIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UodGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBLRVlfQVJSX0xFRlQ6XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNQcmV2KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEtFWV9BUlJfVVA6XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXYoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9SSUdIVDpcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c05leHQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9ET1dOOlxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCB0aGlzLl9zZXJ2aWNlLiRtZXRob2RPZlNlbGVjdGluZywgdGhpcy5fc2VydmljZS4kc2VsZWN0ZWRJZHMsIHRoaXMuX3NlcnZpY2UuJGNvbGxhcHNlZElkc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICBtYXAoKFssIG0sIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHNdKSA9PiAoeyBtZXRob2Q6IG0sIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHMgfSkpLFxyXG4gICAgICB0YXAoKHsgbWV0aG9kLCBzZWxlY3RlZElkcywgY29sbGFwc2VkSWRzIH0pID0+IHtcclxuICAgICAgICBzd2l0Y2ggKG1ldGhvZCkge1xyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuU0VMRUNUOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkID0gc2VsZWN0ZWRJZHMgYXMgSWQgfCB1bmRlZmluZWQsIGlzU2VsZWN0ZWQgPSBpZCA9PT0gdGhpcy5pdGVtSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVELCBTdHJpbmcoaXNTZWxlY3RlZCkpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1NlbGVjdGVkID0gaXNTZWxlY3RlZDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5NVUxUSV9TRUxFQ1Q6IHtcclxuICAgICAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gc2VsZWN0ZWRJZHMgYXMgQXJyYXk8SWQ+LCBpc1NlbGVjdGVkID0gdGhpcy5pdGVtSWQgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxJZHMgJiYgYWN0dWFsSWRzLmluY2x1ZGVzKHRoaXMuaXRlbUlkKTtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk5PTkU6XHJcbiAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVEKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFjdHVhbElkcyA9IGNvbGxhcHNlZElkcywgaXNDb2xsYXBzZWQgPSB0aGlzLml0ZW1JZCAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbElkcyAmJiBhY3R1YWxJZHMuaW5jbHVkZXModGhpcy5pdGVtSWQpO1xyXG4gICAgICAgIHRoaXMuX2lzQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlUGFydFN0cih0aGlzLmRhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIGlzQ29sbGFwc2VkKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVNZWFzdXJlcyh0aGlzLmRhdGEpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5kYXRhPy5jb25maWc/LnRhYkluZGV4ID8/IDAsIGxlbmd0aCA9IHRoaXMuX3NlcnZpY2UuY29sbGVjdGlvbj8ubGVuZ3RoID8/IDA7XHJcbiAgICAgIGxldCBpbmRleCA9IHRhYkluZGV4O1xyXG4gICAgICB3aGlsZSAoaW5kZXggPD0gbGVuZ3RoKSB7XHJcbiAgICAgICAgaW5kZXgrKztcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oZ2V0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXMoZWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzUHJldigpIHtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5kYXRhPy5jb25maWc/LnRhYkluZGV4ID8/IDA7XHJcbiAgICAgIGxldCBpbmRleCA9IHRhYkluZGV4O1xyXG4gICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgIGluZGV4LS07XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGdldEVsZW1lbnRCeUluZGV4KGluZGV4KSk7XHJcbiAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzKGVsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1cyhhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuQ0VOVEVSKSB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuZGF0YT8uY29uZmlnPy50YWJJbmRleCA/PyAwO1xyXG4gICAgICBsZXQgaW5kZXggPSB0YWJJbmRleDtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGdldEVsZW1lbnRCeUluZGV4KGluZGV4KSk7XHJcbiAgICAgIGlmIChlbCkge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXMoZWwsIGFsaWduKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVNZWFzdXJlcyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMubWVhc3VyZXMubmV4dCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogdW5kZWZpbmVkKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb25maWcodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl8kY29uZmlnLm5leHQoe1xyXG4gICAgICAuLi52Py5jb25maWcgfHwge30gYXMgSURpc3BsYXlPYmplY3RDb25maWcsIHNlbGVjdGVkOiB0aGlzLl9pc1NlbGVjdGVkLCBjb2xsYXBzZWQ6IHRoaXMuX2lzQ29sbGFwc2VkLCBmb2N1c2VkOiB0aGlzLl8kZm9jdXNlZC5nZXRWYWx1ZSgpLFxyXG4gICAgICBjb2xsYXBzZTogdGhpcy5fY29sbGFwc2VIYW5kbGVyKHYpLCBzZWxlY3Q6IHRoaXMuX3NlbGVjdEhhbmRsZXIodiksIGZvY3VzOiB0aGlzLl9mb2N1c0hhbmRsZXIoKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoO1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShJRCwgYCR7ZGF0YS5pZH1gKTtcclxuICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICBpZiAoZGF0YS5jb25maWcuc25hcHBlZCkge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgZGF0YS5jb25maWcuc3RpY2t5ID09PSAxID8gJzAnIDogYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gZGF0YS5jb25maWcuc3RpY2t5ID09PSAxID8gWkVST1NfVFJBTlNMQVRFXzNEIDogYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy54fSR7UFh9LCAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiAwfSR7UFh9ICwgMClgO1xyXG4gICAgICAgIGlmICghZGF0YS5jb25maWcuaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkKSB7XHJcbiAgICAgICAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9TVElDS1k7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICAgIGlmIChyZWd1bGFyKSB7XHJcbiAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdwb3NpdGlvbicsICcwJyk7XHJcbiAgICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy5kZWx0YX0ke1BYfSwgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy5kZWx0YSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0gLCAwKWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKElEKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZDogYm9vbGVhbiwgaXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGlmICh2Py5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9kZCA9IHYuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU07XHJcbiAgICBwYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9PREQgOiBQQVJUX0lURU1fRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TRUxFQ1RFRDtcclxuICAgIH1cclxuICAgIGlmIChpc0NvbGxhcHNlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9DT0xMQVBTRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLm5ldyA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX05FVztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl8kZm9jdXNlZC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0ZPQ1VTRUQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl8kcGFydC5uZXh0KHBhcnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm91bmRzKCk6IElTaXplIHtcclxuICAgIGNvbnN0IGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgeyB3aWR0aCwgaGVpZ2h0IH0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9CTE9DSykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX0JMT0NLO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHN0eWxlcy52aXNpYmlsaXR5ID09PSBWSVNJQklMSVRZX1ZJU0lCTEUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9WSVNJQkxFO1xyXG4gICAgfVxyXG4gICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuZGF0YT8uY29uZmlnPy56SW5kZXggPz8gREVGQVVMVF9aSU5ERVg7XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlO1xyXG4gICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX05PTkU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfSElEREVOO1xyXG4gICAgfVxyXG4gICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICBzdHlsZXMudHJhbnNmb3JtID0gWkVST1NfVFJBTlNMQVRFXzNEO1xyXG4gICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrSGFuZGxlcigpIHtcclxuICAgIHRoaXMuX3NlcnZpY2UuaXRlbUNsaWNrKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVwiPlxyXG4gICAgPGRpdiAjbGlzdEl0ZW0gW3BhcnRdPVwiJHBhcnQgfCBhc3luY1wiIFthdHRyLm5nLXZsLWluZGV4XT1cImRhdGEuY29uZmlnLnRhYkluZGV4IHx8IC0xXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJuZ3ZsLWl0ZW1fX2NvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnc25hcHBlZCc6IGRhdGEuY29uZmlnLnNuYXBwZWQsXHJcbiAgICAgICAgJ3NuYXBwZWQtb3V0JzogZGF0YS5jb25maWcuc25hcHBlZE91dCwgJ2ZvY3VzJzogJGZvY3VzZWQgfCBhc3luY31cIiAoY2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtUmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtUmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntkYXRhOiBkYXRhLmRhdGEgfHwge30sIG1lYXN1cmVzOiBtZWFzdXJlcyB8IGFzeW5jLCBjb25maWc6ICRjb25maWcgfCBhc3luY31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export class BaseVirtualListItemComponent {
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9tb2RlbHMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLDRCQUE0QjtDQWFqRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElkLCBJU2l6ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB9IGZyb20gJy4vcmVuZGVyLWl0ZW0ubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFZpcnR1YWwgTGlzdCBJdGVtIEludGVyZmFjZVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL21vZGVscy9iYXNlLXZpcnR1YWwtbGlzdC1pdGVtLWNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgICBhYnN0cmFjdCBnZXQgaWQoKTogbnVtYmVyO1xyXG4gICAgYWJzdHJhY3QgZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZDtcclxuICAgIGFic3RyYWN0IHJlZ3VsYXI6IGJvb2xlYW47XHJcbiAgICBhYnN0cmFjdCBzZXQgcmVndWxhckxlbmd0aCh2OiBzdHJpbmcpXHJcbiAgICBhYnN0cmFjdCBzZXQgaXRlbSh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgbnVsbCB8IHVuZGVmaW5lZCk7XHJcbiAgICBhYnN0cmFjdCBnZXQgaXRlbSgpOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgIGFic3RyYWN0IGdldCBpdGVtSWQoKTogSWQgfCB1bmRlZmluZWQ7XHJcbiAgICBhYnN0cmFjdCBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCk7XHJcbiAgICBhYnN0cmFjdCBnZXQgZWxlbWVudCgpOiBIVE1MRWxlbWVudDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRCb3VuZHMoKTogSVNpemU7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2hvdygpOiB2b2lkO1xyXG4gICAgcHVibGljIGFic3RyYWN0IGhpZGUoKTogdm9pZDtcclxufSJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL21vZGVscy9pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVmlydHVhbCBsaXN0IGVsZW1lbnQgbW9kZWxcclxuICogRm9yIHRyYWNraW5nIHRvIHdvcmsgY29ycmVjdGx5LCB5b3UgbXVzdCBzZXQgYSB1bmlxdWUgaWRlbnRpZmllciAodGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0cmFja0J5KS5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTYueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9tb2RlbHMvaXRlbS5tb2RlbC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBJVmlydHVhbExpc3RJdGVtPEUgPSBPYmplY3Q+ID0gRSAmIHtcclxuICAgIFt4OiBzdHJpbmddOiBhbnk7XHJcbn07XHJcbiJdfQ==
|