ng-virtual-list 18.10.2 → 18.10.3
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 -1
- package/esm2022/lib/components/list-item/ng-virtual-list-item.component.mjs +2 -2
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +1 -1
- package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +21 -20
- package/esm2022/lib/components/scroller/ng-scroller.component.mjs +7 -10
- package/esm2022/lib/components/scroller/ng-scroller.module.mjs +4 -3
- package/esm2022/lib/const/index.mjs +2 -2
- package/esm2022/lib/directives/item-click/item-click.directive.mjs +2 -1
- package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +3 -2
- package/esm2022/lib/ng-virtual-list.component.mjs +92 -68
- package/esm2022/lib/utils/animator/ease.mjs +1 -13
- package/esm2022/lib/utils/animator/types/easing.mjs +1 -1
- package/esm2022/lib/utils/scroll-event.mjs +3 -3
- package/esm2022/lib/utils/track-box.mjs +2 -2
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/ng-virtual-list.mjs +127 -115
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +2 -0
- package/lib/components/scroller/ng-scroller.module.d.ts +2 -1
- package/lib/const/index.d.ts +1 -1
- package/lib/ng-virtual-list.component.d.ts +11 -13
- package/lib/utils/animator/ease.d.ts +0 -12
- package/lib/utils/animator/types/easing.d.ts +0 -6
- package/lib/utils/scroll-event.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
package/README.md
CHANGED
|
@@ -710,7 +710,6 @@ Methods
|
|
|
710
710
|
| scrollToEnd | | Scrolls the list to the end of the content height. |
|
|
711
711
|
| getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior?: ScrollBehavior) => void | Returns the bounds of an element with a given id |
|
|
712
712
|
| focus | [Id](https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/types/id.ts), align: [FocusAlignment](https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/types/focus-alignment.ts) = [FocusAlignments.NONE](https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/enums/focus-alignments.ts) | Focus an list item by a given id. |
|
|
713
|
-
| cacheClean | | Force clearing the cache. |
|
|
714
713
|
| stopSnappingScrollToEnd | | Stops the list from snapping to the bottom edge. |
|
|
715
714
|
|
|
716
715
|
<br/>
|
|
@@ -387,9 +387,9 @@ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
387
387
|
}
|
|
388
388
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemComponent, decorators: [{
|
|
389
389
|
type: Component,
|
|
390
|
-
args: [{ selector: 'ng-virtual-list-item',
|
|
390
|
+
args: [{ standalone: false, selector: 'ng-virtual-list-item', host: {
|
|
391
391
|
'class': 'ngvl__item',
|
|
392
392
|
'role': 'listitem',
|
|
393
393
|
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div itemClick [maxClickDistance]=\"maxClickDistance()\" [part]=\"part()\" [attr.ngvl-index]=\"index()\" tabindex=\"-1\"\r\n class=\"ngvl-item__container\" [ngClass]=\"classes()\" (onClick)=\"onClickHandler()\">\r\n @if (itemRenderer(); as renderer) {\r\n <ng-container [ngTemplateOutlet]=\"renderer\" [ngTemplateOutletContext]=\"templateContext()\" />\r\n }\r\n</div>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"] }]
|
|
394
394
|
}], ctorParameters: () => [] });
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzdKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekUsT0FBTyxFQUNMLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQzFJLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUMvSCxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixHQUMvRCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUs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Q0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBNWNVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLCtKQ3JEdkMsa1lBS007OzRGRGdETywwQkFBMEI7a0JBWHRDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLEtBQUssUUFHWDt3QkFDSixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ25CLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGNvbXB1dGVkLCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBpbmplY3QsIFNpZ25hbCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgbWFwLCB0YXAsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgc3dpdGNoTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnQsIElkLCBJU2l6ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX0NMSUNLX0RJU1RBTkNFLCBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0NPTExBUFNFRCwgUEFSVF9JVEVNX0VWRU4sXHJcbiAgUEFSVF9JVEVNX0ZPQ1VTRUQsIFBBUlRfSVRFTV9ORVcsIFBBUlRfSVRFTV9PREQsIFBBUlRfSVRFTV9TRUxFQ1RFRCwgUEFSVF9JVEVNX1NOQVBQRUQsIFBPU0lUSU9OX0FCU09MVVRFLCBQWCwgU0laRV8xMDBfUEVSU0VOVCxcclxuICBTSVpFX0FVVE8sIFRSQU5TTEFURV8zRCwgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSxcclxufSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL25nLXZpcnR1YWwtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzIH0gZnJvbSAnLi4vLi4vZW51bXMvbWV0aG9kLWZvci1zZWxlY3RpbmctdHlwZXMnO1xyXG5pbXBvcnQgeyB2YWxpZGF0ZUJvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnRzLCBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRMaXN0RWxlbWVudEJ5SW5kZXggfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmludGVyZmFjZSBJVGVtcGxhdGVDb250ZXh0PEQgPSBhbnk+IHtcclxuICBkYXRhOiBEO1xyXG4gIHByZXZEYXRhOiBEO1xyXG4gIG5leHREYXRhOiBEO1xyXG4gIG1lYXN1cmVzOiBJRGlzcGxheU9iamVjdE1lYXN1cmVzIHwgdW5kZWZpbmVkO1xyXG4gIGNvbmZpZzogSURpc3BsYXlPYmplY3RDb25maWc7XHJcbiAgcmVzZXRlZDogYm9vbGVhbjtcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG5jb25zdCBaRVJPU19QT1NJVElPTiA9IC0xMDAwLCBOQVZJR0FURV9UT19BVFRFTVQgPSA1LFxyXG4gIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJywgUE9TSVRJT04gPSAncG9zaXRpb24nLCBQT1NJVElPTl9aRVJPID0gJzAnLCBJRCA9ICdpdGVtLWlkJyxcclxuICBLRVlfU1BBQ0UgPSAnICcsIEtFWV9BUlJfTEVGVCA9ICdBcnJvd0xlZnQnLCBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLCBLRVlfQVJSX1JJR0hUID0gJ0Fycm93UmlnaHQnLCBLRVlfQVJSX0RPV04gPSAnQXJyb3dEb3duJyxcclxuICBFVkVOVF9GT0NVU19JTiA9ICdmb2N1c2luJywgRVZFTlRfRk9DVVNfT1VUID0gJ2ZvY3Vzb3V0JywgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgQ0xBU1NfTkFNRV9TTkFQUEVEID0gJ3NuYXBwZWQnLCBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JywgQ0xBU1NfTkFNRV9GT0NVUyA9ICdmb2N1cyc7XHJcblxyXG4vKipcclxuICogVmlydHVhbCBsaXN0IGNvbXBvbmVudC5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcycsXHJcbiAgaG9zdDoge1xyXG4gICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgJ3JvbGUnOiAnbGlzdGl0ZW0nLFxyXG4gIH0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgX2lkOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgcHJvdGVjdGVkIF9zZXJ2aWNlID0gaW5qZWN0KE5nVmlydHVhbExpc3RTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9pc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25maWcgPSBzaWduYWw8SURpc3BsYXlPYmplY3RDb25maWc+KHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnKTtcclxuXHJcbiAgbWVhc3VyZXMgPSBzaWduYWw8SURpc3BsYXlPYmplY3RNZWFzdXJlcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgZm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHBhcnQgPSBzaWduYWw8c3RyaW5nPihQQVJUX0RFRkFVTFRfSVRFTSk7XHJcblxyXG4gIG1heENsaWNrRGlzdGFuY2UgPSBzaWduYWw8bnVtYmVyPihERUZBVUxUX0NMSUNLX0RJU1RBTkNFKTtcclxuXHJcbiAgZGF0YSA9IHNpZ25hbDxJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgX2RhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2RhdGEgPT09IHYgfHwgdGhpcy5fZGF0YT8uaWQgPT09IC0xIHx8ICF2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kYXRhID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodiwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQ29uZmlnKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlTWVhc3VyZXModik7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLmRhdGEuc2V0KHYpO1xyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjbGFzc2VzOiBTaWduYWw8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW47IH0+O1xyXG5cclxuICBpbmRleDogU2lnbmFsPG51bWJlcj47XHJcblxyXG4gIHRlbXBsYXRlQ29udGV4dDogU2lnbmFsPElUZW1wbGF0ZUNvbnRleHQ+O1xyXG5cclxuICByZWd1bGFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3JlZ3VsYXJMZW5ndGg6IHN0cmluZyA9IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgc2V0IHJlZ3VsYXJMZW5ndGgodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fcmVndWxhckxlbmd0aCA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVndWxhckxlbmd0aCA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YT8uaWQ7XHJcbiAgfVxyXG5cclxuICBpdGVtUmVuZGVyZXIgPSBzaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuaXRlbVJlbmRlcmVyLnNldCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcclxuICBnZXQgZWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RIYW5kbGVyID0gKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkgPT5cclxuICAgIC8qKlxyXG4gICAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgICAqL1xyXG4gICAgKHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVCb29sZWFuKHNlbGVjdGVkLCB0cnVlKTtcclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBcInNlbGVjdGVkXCIgcGFyYW1ldGVyIG11c3QgYmUgb2YgdHlwZSBgYm9vbGVhbmAgb3IgYHVuZGVmaW5lZGAuJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGEsIHNlbGVjdGVkKTtcclxuICAgIH07XHJcblxyXG4gIHByaXZhdGUgX2NvbGxhcHNlSGFuZGxlciA9IChkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpID0+XHJcbiAgICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gY29sbGFwc2VkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgY29sbGFwc2UvZXhwYW5kIGlzIHBlcmZvcm1lZC5cclxuICAgICovXHJcbiAgICAoY29sbGFwc2VkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVCb29sZWFuKGNvbGxhcHNlZCwgdHJ1ZSk7XHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgXCJjb2xsYXBzZWRcIiBwYXJhbWV0ZXIgbXVzdCBiZSBvZiB0eXBlIGBib29sZWFuYCBvciBgdW5kZWZpbmVkYC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2VydmljZS5jb2xsYXBzZShkYXRhLCBjb2xsYXBzZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZm9jdXNIYW5kbGVyID0gKCkgPT5cclxuICAgIC8qKlxyXG4gICAgKiBGb2N1cyBhIGxpc3QgaXRlbVxyXG4gICAgKi9cclxuICAgIChhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuQ0VOVEVSKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9jdXMoYWxpZ24pO1xyXG4gICAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5faWQgPSB0aGlzLl9zZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50SWQoKTtcclxuXHJcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIFN0cmluZyh0aGlzLl9pZCkpO1xyXG5cclxuICAgIHRoaXMuX3NlcnZpY2UuJGNsaWNrRGlzdGFuY2UucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLm1heENsaWNrRGlzdGFuY2Uuc2V0KHYpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5jbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhKCksIGZvY3VzZWQgPSB0aGlzLmZvY3VzZWQoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbQ0xBU1NfTkFNRV9TTkFQUEVEXTogZGF0YT8uY29uZmlnPy5zbmFwcGVkID8/IGZhbHNlLCBbQ0xBU1NfTkFNRV9TTkFQUEVEX09VVF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZE91dCA/PyBmYWxzZSxcclxuICAgICAgICBbQ0xBU1NfTkFNRV9GT0NVU106IGZvY3VzZWQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8udGFiSW5kZXggPz8gLTE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlQ29udGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpLCBtZWFzdXJlcyA9IHRoaXMubWVhc3VyZXMoKSwgY29uZmlnID0gdGhpcy5jb25maWcoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiBkYXRhPy5kYXRhLCBwcmV2RGF0YTogZGF0YT8ucHJldmlvdXNlRGF0YSwgbmV4dERhdGE6IGRhdGE/Lm5leHREYXRhLCBtZWFzdXJlcyxcclxuICAgICAgICBjb25maWcsIHJlc2V0ZWQ6IGZhbHNlLCBpbmRleDogZGF0YT8uaW5kZXggPz8gLSAxXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCAkZGF0YSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmRhdGEpLFxyXG4gICAgICAkZm9jdXNlZCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZvY3VzZWQpO1xyXG5cclxuICAgICRmb2N1c2VkLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5hcmVhRm9jdXModiA/IHRoaXMuX2lkIDogdGhpcy5fc2VydmljZS5mb2N1c2VkSWQgPT09IHRoaXMuX2lkID8gbnVsbCA6IHRoaXMuX3NlcnZpY2UuZm9jdXNlZElkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX0lOKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9jdXNlZC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5fZGF0YSwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCksXHJcblxyXG4gICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCBFVkVOVF9GT0NVU19PVVQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb2N1c2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkZm9jdXNlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4ge1xyXG4gICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICByZXR1cm4gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuZWxlbWVudCwgRVZFTlRfS0VZX0RPV04pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcclxuICAgICAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgS0VZX1NQQUNFOiB7XHJcbiAgICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZS5zZWxlY3QodGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UodGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX0xFRlQ6XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b1ByZXZJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1VQOlxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b1ByZXZJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1JJR0hUOlxyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9OZXh0SXRlbShlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9ET1dOOlxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b05leHRJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRhdGEsIHRoaXMuX3NlcnZpY2UuJG1ldGhvZE9mU2VsZWN0aW5nLCB0aGlzLl9zZXJ2aWNlLiRzZWxlY3RlZElkcywgdGhpcy5fc2VydmljZS4kY29sbGFwc2VkSWRzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIG1hcCgoWywgbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkc10pID0+ICh7IG1ldGhvZDogbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkcyB9KSksXHJcbiAgICAgIHRhcCgoeyBtZXRob2QsIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHMgfSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5TRUxFQ1Q6IHtcclxuICAgICAgICAgICAgY29uc3QgaWQgPSBzZWxlY3RlZElkcyBhcyBJZCB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZCA9IGlkID09PSB0aGlzLml0ZW1JZDtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBzZWxlY3RlZElkcyBhcyBBcnJheTxJZD4sIGlzU2VsZWN0ZWQgPSB0aGlzLml0ZW1JZCAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbElkcyAmJiBhY3R1YWxJZHMuaW5jbHVkZXModGhpcy5pdGVtSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKEFUVFJfQVJFQV9TRUxFQ1RFRCwgU3RyaW5nKGlzU2VsZWN0ZWQpKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTk9ORTpcclxuICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gY29sbGFwc2VkSWRzLCBpc0NvbGxhcHNlZCA9IHRoaXMuaXRlbUlkICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsSWRzICYmIGFjdHVhbElkcy5pbmNsdWRlcyh0aGlzLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5faXNDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIGlzQ29sbGFwc2VkKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlTWVhc3VyZXModGhpcy5fZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9OZXh0SXRlbShlOiBFdmVudCwgYXR0ZW1wdDogbnVtYmVyID0gTkFWSUdBVEVfVE9fQVRURU1UKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID0gaW5kZXg7XHJcbiAgICAgIGlmICghIWUgJiYgZS5jYW5jZWxhYmxlKSB7XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID4gLTEpIHtcclxuICAgICAgdGhpcy5mb2N1cyhGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0ZW1wdCA+IDApIHtcclxuICAgICAgdGhpcy50b05leHRJdGVtKGUsIGF0dGVtcHQgLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9QcmV2SXRlbShlOiBFdmVudCwgYXR0ZW1wdDogbnVtYmVyID0gTkFWSUdBVEVfVE9fQVRURU1UKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNQcmV2KCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID0gaW5kZXg7XHJcbiAgICAgIGlmICghIWUgJiYgZS5jYW5jZWxhYmxlKSB7XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID4gLTEpIHtcclxuICAgICAgdGhpcy5mb2N1cyhGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0ZW1wdCA+IDApIHtcclxuICAgICAgdGhpcy50b1ByZXZJdGVtKGUsIGF0dGVtcHQgLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNOZXh0KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMCwgbGVuZ3RoID0gdGhpcy5fc2VydmljZS5jb2xsZWN0aW9uPy5sZW5ndGggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8PSBsZW5ndGgpIHtcclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGdldExpc3RFbGVtZW50QnlJbmRleChpbmRleCkpO1xyXG4gICAgICAgIGlmICghIWVsZW1lbnQgJiYgZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ICE9PSBWSVNJQklMSVRZX0hJRERFTikge1xyXG4gICAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50KTtcclxuICAgICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNQcmV2KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaW5kZXgtLTtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRMaXN0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgICBpZiAoISFlbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzKGVsZW1lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1cyhhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCBpbmRleDogbnVtYmVyID0gLTEpIHtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYkluZGV4ID0gaW5kZXggPiAtMSA/IGluZGV4IDogdGhpcy5fZGF0YT8uY29uZmlnPy50YWJJbmRleCA/PyAwO1xyXG4gICAgICBsZXQgaSA9IHRhYkluZGV4O1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRMaXN0RWxlbWVudEJ5SW5kZXgoaSkpO1xyXG4gICAgICBpZiAoISFlbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50LCBhbGlnbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTWVhc3VyZXModjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLm1lYXN1cmVzLnNldCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogdW5kZWZpbmVkKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb25maWcodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5zZXQoe1xyXG4gICAgICAuLi52Py5jb25maWcgfHwge30gYXMgSURpc3BsYXlPYmplY3RDb25maWcsIHNlbGVjdGVkOiB0aGlzLl9pc1NlbGVjdGVkLCBjb2xsYXBzZWQ6IHRoaXMuX2lzQ29sbGFwc2VkLCBmb2N1c2VkOiB0aGlzLmZvY3VzZWQoKSxcclxuICAgICAgY29sbGFwc2U6IHRoaXMuX2NvbGxhcHNlSGFuZGxlcih2KSwgc2VsZWN0OiB0aGlzLl9zZWxlY3RIYW5kbGVyKHYpLCBmb2N1czogdGhpcy5fZm9jdXNIYW5kbGVyKCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2RhdGEsIHJlZ3VsYXIgPSB0aGlzLnJlZ3VsYXIsIGxlbmd0aCA9IHRoaXMuX3JlZ3VsYXJMZW5ndGg7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgIHN0eWxlcy56SW5kZXggPSBkYXRhLmNvbmZpZy56SW5kZXg7XHJcbiAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIFBPU0lUSU9OX1pFUk8pO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/ICh0aGlzLl9zZXJ2aWNlLmxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5SVEwgPyB0aGlzLl9zZXJ2aWNlLnNjcm9sbEJhclNpemUgOiAwKSA6IGRhdGEubWVhc3VyZXMuZGVsdGF9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMuZGVsdGEgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShQT1NJVElPTiwgYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy54fSR7UFh9LCAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH1cclxuICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogU0laRV8xMDBfUEVSU0VOVCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZDogYm9vbGVhbiwgaXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGlmICh2Py5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9kZCA9IHYuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU07XHJcbiAgICBwYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9PREQgOiBQQVJUX0lURU1fRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TRUxFQ1RFRDtcclxuICAgIH1cclxuICAgIGlmIChpc0NvbGxhcHNlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9DT0xMQVBTRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLm5ldyA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX05FVztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvY3VzZWQoKSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9GT0NVU0VEO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYXJ0LnNldChwYXJ0KTtcclxuICB9XHJcblxyXG4gIGdldEJvdW5kcygpOiBJU2l6ZSB7XHJcbiAgICBjb25zdCBlbDogSFRNTEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHsgd2lkdGgsIGhlaWdodCB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICByZXR1cm4geyB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAxLCBoZWlnaHQ6IGhlaWdodCA+IDAgPyBoZWlnaHQgOiAxLCB9O1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy56SW5kZXggPSB0aGlzLl9kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1ZJU0lCTEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgIHN0eWxlcyA9IGVsLnN0eWxlO1xyXG4gICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke3RoaXMuX2RhdGE/LmNvbmZpZz8uaXNWZXJ0aWNhbCA/IDAgOiBaRVJPU19QT1NJVElPTn0sJHt0aGlzLl9kYXRhPy5jb25maWc/LmlzVmVydGljYWwgPyAwIDogWkVST1NfUE9TSVRJT059LDApYDtcclxuICAgIHN0eWxlcy56SW5kZXggPSBISURERU5fWklOREVYO1xyXG4gICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX05PTkU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfSElEREVOO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0hhbmRsZXIoKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLml0ZW1DbGljayh0aGlzLl9kYXRhKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpdGVtQ2xpY2sgW21heENsaWNrRGlzdGFuY2VdPVwibWF4Q2xpY2tEaXN0YW5jZSgpXCIgW3BhcnRdPVwicGFydCgpXCIgW2F0dHIubmd2bC1pbmRleF09XCJpbmRleCgpXCIgdGFiaW5kZXg9XCItMVwiXHJcbiAgICBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiY2xhc3NlcygpXCIgKG9uQ2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiPlxyXG4gICAgQGlmIChpdGVtUmVuZGVyZXIoKTsgYXMgcmVuZGVyZXIpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlbmRlcmVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInRlbXBsYXRlQ29udGV4dCgpXCIgLz5cclxuICAgIH1cclxuPC9kaXY+Il19
|
|
395
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzdKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekUsT0FBTyxFQUNMLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQzFJLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUMvSCxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixHQUMvRCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUs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Q0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBNWNVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLCtKQ3JEdkMsa1lBS007OzRGRGdETywwQkFBMEI7a0JBWHRDLFNBQVM7aUNBQ0ksS0FBSyxZQUNQLHNCQUFzQixRQUcxQjt3QkFDSixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ25CLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGNvbXB1dGVkLCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBpbmplY3QsIFNpZ25hbCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgbWFwLCB0YXAsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgc3dpdGNoTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlbmRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnQsIElkLCBJU2l6ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX0NMSUNLX0RJU1RBTkNFLCBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0NPTExBUFNFRCwgUEFSVF9JVEVNX0VWRU4sXHJcbiAgUEFSVF9JVEVNX0ZPQ1VTRUQsIFBBUlRfSVRFTV9ORVcsIFBBUlRfSVRFTV9PREQsIFBBUlRfSVRFTV9TRUxFQ1RFRCwgUEFSVF9JVEVNX1NOQVBQRUQsIFBPU0lUSU9OX0FCU09MVVRFLCBQWCwgU0laRV8xMDBfUEVSU0VOVCxcclxuICBTSVpFX0FVVE8sIFRSQU5TTEFURV8zRCwgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSxcclxufSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL25nLXZpcnR1YWwtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzIH0gZnJvbSAnLi4vLi4vZW51bXMvbWV0aG9kLWZvci1zZWxlY3RpbmctdHlwZXMnO1xyXG5pbXBvcnQgeyB2YWxpZGF0ZUJvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnRzLCBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBnZXRMaXN0RWxlbWVudEJ5SW5kZXggfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmludGVyZmFjZSBJVGVtcGxhdGVDb250ZXh0PEQgPSBhbnk+IHtcclxuICBkYXRhOiBEO1xyXG4gIHByZXZEYXRhOiBEO1xyXG4gIG5leHREYXRhOiBEO1xyXG4gIG1lYXN1cmVzOiBJRGlzcGxheU9iamVjdE1lYXN1cmVzIHwgdW5kZWZpbmVkO1xyXG4gIGNvbmZpZzogSURpc3BsYXlPYmplY3RDb25maWc7XHJcbiAgcmVzZXRlZDogYm9vbGVhbjtcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG5jb25zdCBaRVJPU19QT1NJVElPTiA9IC0xMDAwLCBOQVZJR0FURV9UT19BVFRFTVQgPSA1LFxyXG4gIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJywgUE9TSVRJT04gPSAncG9zaXRpb24nLCBQT1NJVElPTl9aRVJPID0gJzAnLCBJRCA9ICdpdGVtLWlkJyxcclxuICBLRVlfU1BBQ0UgPSAnICcsIEtFWV9BUlJfTEVGVCA9ICdBcnJvd0xlZnQnLCBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLCBLRVlfQVJSX1JJR0hUID0gJ0Fycm93UmlnaHQnLCBLRVlfQVJSX0RPV04gPSAnQXJyb3dEb3duJyxcclxuICBFVkVOVF9GT0NVU19JTiA9ICdmb2N1c2luJywgRVZFTlRfRk9DVVNfT1VUID0gJ2ZvY3Vzb3V0JywgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgQ0xBU1NfTkFNRV9TTkFQUEVEID0gJ3NuYXBwZWQnLCBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JywgQ0xBU1NfTkFNRV9GT0NVUyA9ICdmb2N1cyc7XHJcblxyXG4vKipcclxuICogVmlydHVhbCBsaXN0IGNvbXBvbmVudC5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICBzZWxlY3RvcjogJ25nLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcycsXHJcbiAgaG9zdDoge1xyXG4gICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgJ3JvbGUnOiAnbGlzdGl0ZW0nLFxyXG4gIH0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgX2lkOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgcHJvdGVjdGVkIF9zZXJ2aWNlID0gaW5qZWN0KE5nVmlydHVhbExpc3RTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9pc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25maWcgPSBzaWduYWw8SURpc3BsYXlPYmplY3RDb25maWc+KHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnKTtcclxuXHJcbiAgbWVhc3VyZXMgPSBzaWduYWw8SURpc3BsYXlPYmplY3RNZWFzdXJlcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgZm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHBhcnQgPSBzaWduYWw8c3RyaW5nPihQQVJUX0RFRkFVTFRfSVRFTSk7XHJcblxyXG4gIG1heENsaWNrRGlzdGFuY2UgPSBzaWduYWw8bnVtYmVyPihERUZBVUxUX0NMSUNLX0RJU1RBTkNFKTtcclxuXHJcbiAgZGF0YSA9IHNpZ25hbDxJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgX2RhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2RhdGEgPT09IHYgfHwgdGhpcy5fZGF0YT8uaWQgPT09IC0xIHx8ICF2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kYXRhID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodiwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQ29uZmlnKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlTWVhc3VyZXModik7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLmRhdGEuc2V0KHYpO1xyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjbGFzc2VzOiBTaWduYWw8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW47IH0+O1xyXG5cclxuICBpbmRleDogU2lnbmFsPG51bWJlcj47XHJcblxyXG4gIHRlbXBsYXRlQ29udGV4dDogU2lnbmFsPElUZW1wbGF0ZUNvbnRleHQ+O1xyXG5cclxuICByZWd1bGFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3JlZ3VsYXJMZW5ndGg6IHN0cmluZyA9IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgc2V0IHJlZ3VsYXJMZW5ndGgodjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fcmVndWxhckxlbmd0aCA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVndWxhckxlbmd0aCA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YT8uaWQ7XHJcbiAgfVxyXG5cclxuICBpdGVtUmVuZGVyZXIgPSBzaWduYWw8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuaXRlbVJlbmRlcmVyLnNldCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcclxuICBnZXQgZWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3RIYW5kbGVyID0gKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZCkgPT5cclxuICAgIC8qKlxyXG4gICAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgICAqL1xyXG4gICAgKHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVCb29sZWFuKHNlbGVjdGVkLCB0cnVlKTtcclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBcInNlbGVjdGVkXCIgcGFyYW1ldGVyIG11c3QgYmUgb2YgdHlwZSBgYm9vbGVhbmAgb3IgYHVuZGVmaW5lZGAuJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3NlcnZpY2Uuc2VsZWN0KGRhdGEsIHNlbGVjdGVkKTtcclxuICAgIH07XHJcblxyXG4gIHByaXZhdGUgX2NvbGxhcHNlSGFuZGxlciA9IChkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCB1bmRlZmluZWQpID0+XHJcbiAgICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gY29sbGFwc2VkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgY29sbGFwc2UvZXhwYW5kIGlzIHBlcmZvcm1lZC5cclxuICAgICovXHJcbiAgICAoY29sbGFwc2VkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVCb29sZWFuKGNvbGxhcHNlZCwgdHJ1ZSk7XHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgXCJjb2xsYXBzZWRcIiBwYXJhbWV0ZXIgbXVzdCBiZSBvZiB0eXBlIGBib29sZWFuYCBvciBgdW5kZWZpbmVkYC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2VydmljZS5jb2xsYXBzZShkYXRhLCBjb2xsYXBzZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZm9jdXNIYW5kbGVyID0gKCkgPT5cclxuICAgIC8qKlxyXG4gICAgKiBGb2N1cyBhIGxpc3QgaXRlbVxyXG4gICAgKi9cclxuICAgIChhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuQ0VOVEVSKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9jdXMoYWxpZ24pO1xyXG4gICAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5faWQgPSB0aGlzLl9zZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50SWQoKTtcclxuXHJcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIFN0cmluZyh0aGlzLl9pZCkpO1xyXG5cclxuICAgIHRoaXMuX3NlcnZpY2UuJGNsaWNrRGlzdGFuY2UucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLm1heENsaWNrRGlzdGFuY2Uuc2V0KHYpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5jbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhKCksIGZvY3VzZWQgPSB0aGlzLmZvY3VzZWQoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbQ0xBU1NfTkFNRV9TTkFQUEVEXTogZGF0YT8uY29uZmlnPy5zbmFwcGVkID8/IGZhbHNlLCBbQ0xBU1NfTkFNRV9TTkFQUEVEX09VVF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZE91dCA/PyBmYWxzZSxcclxuICAgICAgICBbQ0xBU1NfTkFNRV9GT0NVU106IGZvY3VzZWQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8udGFiSW5kZXggPz8gLTE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlQ29udGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpLCBtZWFzdXJlcyA9IHRoaXMubWVhc3VyZXMoKSwgY29uZmlnID0gdGhpcy5jb25maWcoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiBkYXRhPy5kYXRhLCBwcmV2RGF0YTogZGF0YT8ucHJldmlvdXNlRGF0YSwgbmV4dERhdGE6IGRhdGE/Lm5leHREYXRhLCBtZWFzdXJlcyxcclxuICAgICAgICBjb25maWcsIHJlc2V0ZWQ6IGZhbHNlLCBpbmRleDogZGF0YT8uaW5kZXggPz8gLSAxXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCAkZGF0YSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmRhdGEpLFxyXG4gICAgICAkZm9jdXNlZCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZvY3VzZWQpO1xyXG5cclxuICAgICRmb2N1c2VkLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5hcmVhRm9jdXModiA/IHRoaXMuX2lkIDogdGhpcy5fc2VydmljZS5mb2N1c2VkSWQgPT09IHRoaXMuX2lkID8gbnVsbCA6IHRoaXMuX3NlcnZpY2UuZm9jdXNlZElkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX0lOKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9jdXNlZC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRTdHIodGhpcy5fZGF0YSwgdGhpcy5faXNTZWxlY3RlZCwgdGhpcy5faXNDb2xsYXBzZWQpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCksXHJcblxyXG4gICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50LCBFVkVOVF9GT0NVU19PVVQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb2N1c2VkLnNldChmYWxzZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgICB9KSxcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkZm9jdXNlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4ge1xyXG4gICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICByZXR1cm4gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuZWxlbWVudCwgRVZFTlRfS0VZX0RPV04pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcclxuICAgICAgICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgS0VZX1NQQUNFOiB7XHJcbiAgICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZS5zZWxlY3QodGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UodGhpcy5fZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX0xFRlQ6XHJcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b1ByZXZJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1VQOlxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b1ByZXZJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBLRVlfQVJSX1JJR0hUOlxyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9OZXh0SXRlbShlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgS0VZX0FSUl9ET1dOOlxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b05leHRJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRhdGEsIHRoaXMuX3NlcnZpY2UuJG1ldGhvZE9mU2VsZWN0aW5nLCB0aGlzLl9zZXJ2aWNlLiRzZWxlY3RlZElkcywgdGhpcy5fc2VydmljZS4kY29sbGFwc2VkSWRzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIG1hcCgoWywgbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkc10pID0+ICh7IG1ldGhvZDogbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkcyB9KSksXHJcbiAgICAgIHRhcCgoeyBtZXRob2QsIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHMgfSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5TRUxFQ1Q6IHtcclxuICAgICAgICAgICAgY29uc3QgaWQgPSBzZWxlY3RlZElkcyBhcyBJZCB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZCA9IGlkID09PSB0aGlzLml0ZW1JZDtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBzZWxlY3RlZElkcyBhcyBBcnJheTxJZD4sIGlzU2VsZWN0ZWQgPSB0aGlzLml0ZW1JZCAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbElkcyAmJiBhY3R1YWxJZHMuaW5jbHVkZXModGhpcy5pdGVtSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKEFUVFJfQVJFQV9TRUxFQ1RFRCwgU3RyaW5nKGlzU2VsZWN0ZWQpKTtcclxuICAgICAgICAgICAgdGhpcy5faXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTk9ORTpcclxuICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQpO1xyXG4gICAgICAgICAgICB0aGlzLl9pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gY29sbGFwc2VkSWRzLCBpc0NvbGxhcHNlZCA9IHRoaXMuaXRlbUlkICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsSWRzICYmIGFjdHVhbElkcy5pbmNsdWRlcyh0aGlzLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5faXNDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIGlzQ29sbGFwc2VkKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlTWVhc3VyZXModGhpcy5fZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9OZXh0SXRlbShlOiBFdmVudCwgYXR0ZW1wdDogbnVtYmVyID0gTkFWSUdBVEVfVE9fQVRURU1UKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID0gaW5kZXg7XHJcbiAgICAgIGlmICghIWUgJiYgZS5jYW5jZWxhYmxlKSB7XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID4gLTEpIHtcclxuICAgICAgdGhpcy5mb2N1cyhGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0ZW1wdCA+IDApIHtcclxuICAgICAgdGhpcy50b05leHRJdGVtKGUsIGF0dGVtcHQgLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9QcmV2SXRlbShlOiBFdmVudCwgYXR0ZW1wdDogbnVtYmVyID0gTkFWSUdBVEVfVE9fQVRURU1UKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNQcmV2KCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID0gaW5kZXg7XHJcbiAgICAgIGlmICghIWUgJiYgZS5jYW5jZWxhYmxlKSB7XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkID4gLTEpIHtcclxuICAgICAgdGhpcy5mb2N1cyhGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCB0aGlzLl9zZXJ2aWNlLmxhc3RGb2N1c2VkSXRlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0ZW1wdCA+IDApIHtcclxuICAgICAgdGhpcy50b1ByZXZJdGVtKGUsIGF0dGVtcHQgLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNOZXh0KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMCwgbGVuZ3RoID0gdGhpcy5fc2VydmljZS5jb2xsZWN0aW9uPy5sZW5ndGggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8PSBsZW5ndGgpIHtcclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KGdldExpc3RFbGVtZW50QnlJbmRleChpbmRleCkpO1xyXG4gICAgICAgIGlmICghIWVsZW1lbnQgJiYgZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ICE9PSBWSVNJQklMSVRZX0hJRERFTikge1xyXG4gICAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50KTtcclxuICAgICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNQcmV2KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaW5kZXgtLTtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRMaXN0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgICBpZiAoISFlbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmZvY3VzKGVsZW1lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1cyhhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuQ0VOVEVSLCBpbmRleDogbnVtYmVyID0gLTEpIHtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlLmxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYkluZGV4ID0gaW5kZXggPiAtMSA/IGluZGV4IDogdGhpcy5fZGF0YT8uY29uZmlnPy50YWJJbmRleCA/PyAwO1xyXG4gICAgICBsZXQgaSA9IHRhYkluZGV4O1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRMaXN0RWxlbWVudEJ5SW5kZXgoaSkpO1xyXG4gICAgICBpZiAoISFlbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50LCBhbGlnbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTWVhc3VyZXModjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLm1lYXN1cmVzLnNldCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogdW5kZWZpbmVkKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb25maWcodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5zZXQoe1xyXG4gICAgICAuLi52Py5jb25maWcgfHwge30gYXMgSURpc3BsYXlPYmplY3RDb25maWcsIHNlbGVjdGVkOiB0aGlzLl9pc1NlbGVjdGVkLCBjb2xsYXBzZWQ6IHRoaXMuX2lzQ29sbGFwc2VkLCBmb2N1c2VkOiB0aGlzLmZvY3VzZWQoKSxcclxuICAgICAgY29sbGFwc2U6IHRoaXMuX2NvbGxhcHNlSGFuZGxlcih2KSwgc2VsZWN0OiB0aGlzLl9zZWxlY3RIYW5kbGVyKHYpLCBmb2N1czogdGhpcy5fZm9jdXNIYW5kbGVyKCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2RhdGEsIHJlZ3VsYXIgPSB0aGlzLnJlZ3VsYXIsIGxlbmd0aCA9IHRoaXMuX3JlZ3VsYXJMZW5ndGg7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgIHN0eWxlcy56SW5kZXggPSBkYXRhLmNvbmZpZy56SW5kZXg7XHJcbiAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIFBPU0lUSU9OX1pFUk8pO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/ICh0aGlzLl9zZXJ2aWNlLmxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5SVEwgPyB0aGlzLl9zZXJ2aWNlLnNjcm9sbEJhclNpemUgOiAwKSA6IGRhdGEubWVhc3VyZXMuZGVsdGF9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMuZGVsdGEgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShQT1NJVElPTiwgYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAwIDogZGF0YS5tZWFzdXJlcy54fSR7UFh9LCAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH1cclxuICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogU0laRV8xMDBfUEVSU0VOVCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCwgaXNTZWxlY3RlZDogYm9vbGVhbiwgaXNDb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGlmICh2Py5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9kZCA9IHYuaW5kZXggJSAyID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU07XHJcbiAgICBwYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9PREQgOiBQQVJUX0lURU1fRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTZWxlY3RlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9TRUxFQ1RFRDtcclxuICAgIH1cclxuICAgIGlmIChpc0NvbGxhcHNlZCkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9DT0xMQVBTRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLm5ldyA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX05FVztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvY3VzZWQoKSkge1xyXG4gICAgICBwYXJ0ICs9IFBBUlRfSVRFTV9GT0NVU0VEO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYXJ0LnNldChwYXJ0KTtcclxuICB9XHJcblxyXG4gIGdldEJvdW5kcygpOiBJU2l6ZSB7XHJcbiAgICBjb25zdCBlbDogSFRNTEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHsgd2lkdGgsIGhlaWdodCB9ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICByZXR1cm4geyB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAxLCBoZWlnaHQ6IGhlaWdodCA+IDAgPyBoZWlnaHQgOiAxLCB9O1xyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy56SW5kZXggPSB0aGlzLl9kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1ZJU0lCTEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlKCkge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgIHN0eWxlcyA9IGVsLnN0eWxlO1xyXG4gICAgc3R5bGVzLnBvc2l0aW9uID0gUE9TSVRJT05fQUJTT0xVVEU7XHJcbiAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke3RoaXMuX2RhdGE/LmNvbmZpZz8uaXNWZXJ0aWNhbCA/IDAgOiBaRVJPU19QT1NJVElPTn0sJHt0aGlzLl9kYXRhPy5jb25maWc/LmlzVmVydGljYWwgPyAwIDogWkVST1NfUE9TSVRJT059LDApYDtcclxuICAgIHN0eWxlcy56SW5kZXggPSBISURERU5fWklOREVYO1xyXG4gICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX05PTkU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfSElEREVOO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0hhbmRsZXIoKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLml0ZW1DbGljayh0aGlzLl9kYXRhKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpdGVtQ2xpY2sgW21heENsaWNrRGlzdGFuY2VdPVwibWF4Q2xpY2tEaXN0YW5jZSgpXCIgW3BhcnRdPVwicGFydCgpXCIgW2F0dHIubmd2bC1pbmRleF09XCJpbmRleCgpXCIgdGFiaW5kZXg9XCItMVwiXHJcbiAgICBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiY2xhc3NlcygpXCIgKG9uQ2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiPlxyXG4gICAgQGlmIChpdGVtUmVuZGVyZXIoKTsgYXMgcmVuZGVyZXIpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlbmRlcmVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInRlbXBsYXRlQ29udGV4dCgpXCIgLz5cclxuICAgIH1cclxuPC9kaXY+Il19
|
|
@@ -165,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
165
165
|
{ provide: SCROLL_VIEW_INVERSION, useValue: true },
|
|
166
166
|
], template: "<div #scrollViewport class=\"track\" [ngStyle]=\"styles()\" [ngClass]=\"{grabbing: grabbing()}\">\r\n <div #scrollContent class=\"thumb\" [class.horizontal]=\"!isVertical()\" (pointerdown)=\"ripple(substrate, $event)\">\r\n <ng-substrate #substrate mode=\"rounded-rectangle\" class=\"shape\" [type]=\"type()\" [width]=\"thumbWidth()\"\r\n [height]=\"thumbHeight()\" [roundCorner]=\"roundCorner()\" [strokeWidth]=\"8\" [rippleColor]=\"rippleColor()\"\r\n [fillPositions]=\"thumbGradientPositions()\" [fillColors]=\"fill()\"\r\n [strokeColors]=\"strokeGradientColor()\" [strokeAnimationDuration]=\"strokeAnimationDuration()\"></ng-substrate>\r\n </div>\r\n</div>", styles: [":host{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;width:100%;height:100%}.track{position:relative;overflow:hidden;width:100%;height:100%;cursor:grab}.track.grabbing{cursor:grabbing}.track .thumb{display:block;position:absolute;list-style:none;padding:0;margin:0;overflow:hidden}.track .thumb.prepared{overflow:hidden}.track .thumb.horizontal{top:0}.track .thumb .shape{box-sizing:border-box;pointer-events:none}.track.grabbing .thumb{cursor:grabbing}\n"] }]
|
|
167
167
|
}], ctorParameters: () => [] });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9CLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFtQixnQkFBZ0IsRUFBc0IsTUFBTSxjQUFjLENBQUM7QUFJckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0FBRTVELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUN6QixZQUFZLEdBQUcsQ0FBQyxFQUNoQixzQkFBc0IsR0FBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDcEQsaUNBQWlDLEdBQUcsR0FBRyxFQUN2QyxzQkFBc0IsR0FBRyxJQUFJLEVBQzdCLG9CQUFvQixHQUFHLGlCQUFpQixFQUN4QyxFQUFFLEdBQUcsSUFBSSxFQUNULEtBQUss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QUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQTZCLEVBQUUsS0FBZ0M7UUFDcEUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7d0dBbE5VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLGc1Q0FOcEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ25ELGlEQzFDSCxvc0JBT007OzRGRHVDTyxvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLEtBQUssYUFDTjt3QkFDVCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3FCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgTk9fRVJST1JTX1NDSEVNQSwgb3V0cHV0LCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzdGFyYXRlU3R5bGUsIFN1YnN0YXJhdGVTdHlsZXMsIFN1YnN0cmF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3N1YnN0cmF0ZSc7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3IgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvcic7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQgeyBSb3VuZGVkQ29ybmVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvcm91bmRlZC1jb3JuZXInO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTY3JvbGxCYXJUaGVtZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi90eXBlcy9jb2xvcic7XHJcbmltcG9ydCB7IE5nU2Nyb2xsVmlldywgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IElTY3JvbGxCYXJEcmFnRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuXHJcbmNvbnN0IERFRkFVTFRfVEhJQ0tORVNTID0gNixcclxuICBERUZBVUxUX1NJWkUgPSA2LFxyXG4gIERFRkFVTFRfUk9VTkRFRF9DT1JORVI6IFJvdW5kZWRDb3JuZXIgPSBbMywgMywgMywgM10sXHJcbiAgREVGQVVMVF9TVFJPS0VfQU5JTUFUSU9OX0RVUkFUSU9OID0gNTAwLFxyXG4gIERFRkFVTFRfUklQUExFX0VOQUJMRUQgPSB0cnVlLFxyXG4gIERFRkFVTFRfUklQUExFX0NPTE9SID0gJ3JnYmEoMCwwLDAsMC41KScsXHJcbiAgUFggPSAncHgnLFxyXG4gIFdJRFRIID0gJ3dpZHRoJyxcclxuICBIRUlHSFQgPSAnaGVpZ2h0JyxcclxuICBPUEFDSVRZID0gJ29wYWNpdHknLFxyXG4gIE9QQUNJVFlfMCA9ICcwJyxcclxuICBPUEFDSVRZXzEgPSAnMScsXHJcbiAgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJyxcclxuICBOT05FID0gJ25vbmUnLFxyXG4gIFRSQU5TSVRJT05fRkFERV9JTiA9IGAke09QQUNJVFl9IDUwMG1zIGVhc2Utb3V0YDtcclxuXHJcbi8qKlxyXG4gKiBTY3JvbGxCYXIgY29tcG9uZW50LlxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctc2Nyb2xsLWJhci9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctc2Nyb2xsLWJhcicsXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX0lOVkVSU0lPTiwgdXNlVmFsdWU6IHRydWUgfSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbmctc2Nyb2xsLWJhci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2Nyb2xsQmFyQ29tcG9uZW50IGV4dGVuZHMgTmdTY3JvbGxWaWV3IHtcclxuICBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBvbkRyYWcgPSBvdXRwdXQ8SVNjcm9sbEJhckRyYWdFdmVudD4oKTtcclxuXHJcbiAgdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IGlucHV0PEdyYWRpZW50Q29sb3JQb3NpdGlvbnM+KFswLCAwXSk7XHJcblxyXG4gIHNpemUgPSBpbnB1dDxudW1iZXI+KERFRkFVTFRfU0laRSk7XHJcblxyXG4gIHRoZW1lID0gaW5wdXQ8U2Nyb2xsQmFyVGhlbWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHN0YXJ0T2Zmc2V0ID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcbiAgZW5kT2Zmc2V0ID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcbiAgc2Nyb2xsYmFyTWluU2l6ZSA9IGlucHV0PG51bWJlcj4oMCk7XHJcblxyXG4gIHByZXBhcmVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBpbnRlcmFjdGl2ZSA9IGlucHV0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0lOVEVSQUNUSVZFKTtcclxuXHJcbiAgc2hvdyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgdGhpY2tuZXNzID0gc2lnbmFsPG51bWJlcj4oREVGQVVMVF9USElDS05FU1MpO1xyXG5cclxuICBmaWxsOiBTaWduYWw8c3RyaW5nIHwgR3JhZGllbnRDb2xvciB8IHVuZGVmaW5lZD47XHJcblxyXG4gIHRodW1iR3JhZGllbnRGaWxsID0gc2lnbmFsPHN0cmluZyB8IEdyYWRpZW50Q29sb3IgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHRodW1iSG92ZXJHcmFkaWVudEZpbGwgPSBzaWduYWw8c3RyaW5nIHwgR3JhZGllbnRDb2xvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgdGh1bWJQcmVzc2VkR3JhZGllbnRGaWxsID0gc2lnbmFsPHN0cmluZyB8IEdyYWRpZW50Q29sb3IgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHN0cm9rZUdyYWRpZW50Q29sb3IgPSBzaWduYWw8c3RyaW5nIHwgR3JhZGllbnRDb2xvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgc3Ryb2tlQW5pbWF0aW9uRHVyYXRpb24gPSBzaWduYWw8bnVtYmVyPihERUZBVUxUX1NUUk9LRV9BTklNQVRJT05fRFVSQVRJT04pO1xyXG5cclxuICByb3VuZENvcm5lciA9IHNpZ25hbDxSb3VuZGVkQ29ybmVyPihERUZBVUxUX1JPVU5ERURfQ09STkVSKTtcclxuXHJcbiAgcmlwcGxlQ29sb3IgPSBzaWduYWw8Q29sb3IgfCB1bmRlZmluZWQ+KERFRkFVTFRfUklQUExFX0NPTE9SKTtcclxuXHJcbiAgcmlwcGxlRW5hYmxlZCA9IHNpZ25hbDxib29sZWFuPihERUZBVUxUX1JJUFBMRV9FTkFCTEVEKTtcclxuXHJcbiAgaG92ZXJTdGF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByZXNzZWRTdGF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHR5cGU6IFNpZ25hbDxTdWJzdGFyYXRlU3R5bGU+O1xyXG5cclxuICBzdHlsZXM6IFNpZ25hbDx7IFtzTmFtZTogc3RyaW5nXTogYW55IH0+O1xyXG5cclxuICB0aHVtYldpZHRoOiBTaWduYWw8bnVtYmVyPjtcclxuXHJcbiAgdGh1bWJIZWlnaHQ6IFNpZ25hbDxudW1iZXI+O1xyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsaW5nQ2FuY2VsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWFkb25seSAkc2Nyb2xsaW5nQ2FuY2VsID0gdGhpcy5fJHNjcm9sbGluZ0NhbmNlbC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMudGh1bWJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gdGhpcy50aGlja25lc3MoKSA6IHRoaXMuc2l6ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy50aHVtYkhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gdGhpcy5zaXplKCkgOiB0aGlzLnRoaWNrbmVzcygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgJHBvaW50ZXJEb3duID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmRvd24nKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICksICRwb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVydXAnKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICksICRkb2NQb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXHJcbiAgICApLCAkcG9pbnRlckVudGVyID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmVudGVyJykucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICApLCAkcG9pbnRlckxlYXZlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmxlYXZlJykucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICApO1xyXG5cclxuICAgICRwb2ludGVyRG93bi5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMucHJlc3NlZFN0YXRlLnNldCh0aGlzLnRodW1iSGl0KGUuY2xpZW50WCwgZS5jbGllbnRZKSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZG9jUG9pbnRlclVwLCAkcG9pbnRlclVwXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmVzc2VkU3RhdGUuc2V0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyRW50ZXIucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ob3ZlclN0YXRlLnNldCh0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyTGVhdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ob3ZlclN0YXRlLnNldChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmZpbGwgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXNzZWQgPSB0aGlzLnByZXNzZWRTdGF0ZSgpLCBob3ZlciA9IHRoaXMuaG92ZXJTdGF0ZSgpO1xyXG4gICAgICBpZiAocHJlc3NlZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRodW1iUHJlc3NlZEdyYWRpZW50RmlsbCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGhvdmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGh1bWJIb3ZlckdyYWRpZW50RmlsbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnRodW1iR3JhZGllbnRGaWxsKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvdGFsU2l6ZSA9IHRoaXMuc2l6ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5faW50ZXJhY3RpdmUgPSB0aGlzLmludGVyYWN0aXZlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvYWRpbmcoKSA/IFN1YnN0YXJhdGVTdHlsZXMuU1RST0tFIDogU3Vic3RhcmF0ZVN0eWxlcy5OT05FO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNob3cgPSB0aGlzLnNob3coKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbdGhpcy5pc1ZlcnRpY2FsKCkgPyBXSURUSCA6IEhFSUdIVF06IGAke3RoaXMudGhpY2tuZXNzKCl9JHtQWH1gLFxyXG4gICAgICAgIFtPUEFDSVRZXTogc2hvdyA/IE9QQUNJVFlfMSA6IE9QQUNJVFlfMCwgW1RSQU5TSVRJT05dOiBzaG93ID8gVFJBTlNJVElPTl9GQURFX0lOIDogTk9ORSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuJHNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLmlzVmVydGljYWwoKSwgc2Nyb2xsU2l6ZSA9IGlzVmVydGljYWwgPyB0aGlzLnNjcm9sbEhlaWdodCA6IHRoaXMuc2Nyb2xsV2lkdGgsXHJcbiAgICAgICAgICBzY3JvbGxDb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50KCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgICAgICBzY3JvbGxWaWV3cG9ydCA9IHRoaXMuc2Nyb2xsVmlld3BvcnQoKT8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgICAgICBpZiAoISFzY3JvbGxWaWV3cG9ydCAmJiAhIXNjcm9sbENvbnRlbnQpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgICAgdmlld3BvcnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCA6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWcuZW1pdCh7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzY3JvbGxTaXplICE9PSAwID8gKChpc1ZlcnRpY2FsID8gdGhpcy5feSA6IHRoaXMuX3gpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgICAgICBtaW46IHNjcm9sbFNpemUgIT09IDAgPyAodGhpcy5zdGFydE9mZnNldCgpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgICAgICBtYXg6IHNjcm9sbFNpemUgIT09IDAgPyAoKHZpZXdwb3J0U2l6ZSAtIHRoaXMuZW5kT2Zmc2V0KCkgLSBjb250ZW50U2l6ZSkgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgICAgIGFuaW1hdGlvbjogIXRoaXMuX2lzTW92aW5nLFxyXG4gICAgICAgICAgICB1c2VyQWN0aW9uOiB2LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLnRoZW1lKCk7XHJcbiAgICAgIGlmICh0aGVtZSkge1xyXG4gICAgICAgIGlmICh0aGVtZSkge1xyXG4gICAgICAgICAgdGhpcy50aHVtYkdyYWRpZW50RmlsbC5zZXQodGhlbWUuZmlsbCk7XHJcbiAgICAgICAgICB0aGlzLnRodW1iSG92ZXJHcmFkaWVudEZpbGwuc2V0KHRoZW1lLmhvdmVyRmlsbCk7XHJcbiAgICAgICAgICB0aGlzLnRodW1iUHJlc3NlZEdyYWRpZW50RmlsbC5zZXQodGhlbWUucHJlc3NlZEZpbGwpO1xyXG4gICAgICAgICAgdGhpcy5zdHJva2VHcmFkaWVudENvbG9yLnNldCh0aGVtZS5zdHJva2VHcmFkaWVudENvbG9yKTtcclxuICAgICAgICAgIHRoaXMuc3Ryb2tlQW5pbWF0aW9uRHVyYXRpb24uc2V0KHRoZW1lLnN0cm9rZUFuaW1hdGlvbkR1cmF0aW9uID8/IERFRkFVTFRfU1RST0tFX0FOSU1BVElPTl9EVVJBVElPTik7XHJcbiAgICAgICAgICB0aGlzLnJvdW5kQ29ybmVyLnNldCh0aGVtZS5yb3VuZENvcm5lciA/PyBERUZBVUxUX1JPVU5ERURfQ09STkVSKTtcclxuICAgICAgICAgIHRoaXMudGhpY2tuZXNzLnNldCh0aGVtZS50aGlja25lc3MgPz8gREVGQVVMVF9USElDS05FU1MpO1xyXG4gICAgICAgICAgdGhpcy5yaXBwbGVDb2xvci5zZXQodGhlbWUucmlwcGxlQ29sb3IgPz8gREVGQVVMVF9SSVBQTEVfQ09MT1IpO1xyXG4gICAgICAgICAgdGhpcy5yaXBwbGVFbmFibGVkLnNldCh0aGVtZS5yaXBwbGVFbmFibGVkID8/IERFRkFVTFRfUklQUExFX0VOQUJMRUQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0aHVtYkhpdCh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdGh1bWIgPSB0aGlzLnNjcm9sbENvbnRlbnQoKT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIXRodW1iKSB7XHJcbiAgICAgIGNvbnN0IHsgeDogdFgsIHk6IHRZLCB3aWR0aDogdFdpZHRoLCBoZWlnaHQ6IHRIZWlnaHQgfSA9IHRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXHJcbiAgICAgIGlmICgoeCA+PSB0WCAmJiB4IDw9IHRYICsgdFdpZHRoKSAmJiAoeSA+PSB0WSAmJiB5IDw9IHRZICsgdEhlaWdodCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5vcm1hbGl6ZUFuaW1hdGVkVmFsdWUodmFsdWU6IG51bWJlcikge1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuaXNWZXJ0aWNhbCgpLCBzY3JvbGxDb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50KCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgIHNjcm9sbFZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydCgpPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKCEhc2Nyb2xsQ29udGVudCAmJiAhIXNjcm9sbFZpZXdwb3J0KSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gdGhpcy5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQgPSB0aGlzLmVuZE9mZnNldCgpO1xyXG4gICAgICBpZiAoaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgIGNvbnN0IG1heFkgPSBzY3JvbGxWaWV3cG9ydC5vZmZzZXRIZWlnaHQgLSBlbmRPZmZzZXQgLSBzY3JvbGxDb250ZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPCBzdGFydE9mZnNldCA/IHN0YXJ0T2Zmc2V0IDogdmFsdWUgPiBtYXhZID8gbWF4WSA6IHZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG1heFggPSBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCAtIGVuZE9mZnNldCAtIHNjcm9sbENvbnRlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIDwgc3RhcnRPZmZzZXQgPyBzdGFydE9mZnNldCA6IHZhbHVlID4gbWF4WCA/IG1heFggOiB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmlwcGxlKHN1YnN0cmF0ZTogU3Vic3RyYXRlQ29tcG9uZW50LCBldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucmlwcGxlRW5hYmxlZCgpICYmICEhc3Vic3RyYXRlKSB7XHJcbiAgICAgIHN1YnN0cmF0ZS5yaXBwbGUoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNzY3JvbGxWaWV3cG9ydCBjbGFzcz1cInRyYWNrXCIgW25nU3R5bGVdPVwic3R5bGVzKClcIiBbbmdDbGFzc109XCJ7Z3JhYmJpbmc6IGdyYWJiaW5nKCl9XCI+XHJcbiAgICA8ZGl2ICNzY3JvbGxDb250ZW50IGNsYXNzPVwidGh1bWJcIiBbY2xhc3MuaG9yaXpvbnRhbF09XCIhaXNWZXJ0aWNhbCgpXCIgKHBvaW50ZXJkb3duKT1cInJpcHBsZShzdWJzdHJhdGUsICRldmVudClcIj5cclxuICAgICAgICA8bmctc3Vic3RyYXRlICNzdWJzdHJhdGUgbW9kZT1cInJvdW5kZWQtcmVjdGFuZ2xlXCIgY2xhc3M9XCJzaGFwZVwiIFt0eXBlXT1cInR5cGUoKVwiIFt3aWR0aF09XCJ0aHVtYldpZHRoKClcIlxyXG4gICAgICAgICAgICBbaGVpZ2h0XT1cInRodW1iSGVpZ2h0KClcIiBbcm91bmRDb3JuZXJdPVwicm91bmRDb3JuZXIoKVwiIFtzdHJva2VXaWR0aF09XCI4XCIgW3JpcHBsZUNvbG9yXT1cInJpcHBsZUNvbG9yKClcIlxyXG4gICAgICAgICAgICBbZmlsbFBvc2l0aW9uc109XCJ0aHVtYkdyYWRpZW50UG9zaXRpb25zKClcIiBbZmlsbENvbG9yc109XCJmaWxsKClcIlxyXG4gICAgICAgICAgICBbc3Ryb2tlQ29sb3JzXT1cInN0cm9rZUdyYWRpZW50Q29sb3IoKVwiIFtzdHJva2VBbmltYXRpb25EdXJhdGlvbl09XCJzdHJva2VBbmltYXRpb25EdXJhdGlvbigpXCI+PC9uZy1zdWJzdHJhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQW1CLGdCQUFnQixFQUFzQixNQUFNLGNBQWMsQ0FBQztBQUlyRixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzlELE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQ3pCLFlBQVksR0FBRyxDQUFDLEVBQ2hCLHNCQUFzQixHQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNwRCxpQ0FBaUMsR0FBRyxHQUFHLEVBQ3ZDLHNCQUFzQixHQUFHLElBQUksRUFDN0Isb0JBQW9CLEdBQUcsaUJBQWlCLEVBQ3hDLEVBQUUsR0FBRyxJQUFJLEVBQ1QsS0FBSyxH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QUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBNkIsRUFBRSxLQUFnQztRQUNwRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzt3R0FsTlUsb0JBQW9COzRGQUFwQixvQkFBb0IsZzVDQU5wQjtZQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDbkQsaURDMUNILG9zQkFPTTs7NEZEdUNPLG9CQUFvQjtrQkFUaEMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsS0FBSyxhQUNOO3dCQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7cUJBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnN0YXJhdGVTdHlsZSwgU3Vic3RhcmF0ZVN0eWxlcywgU3Vic3RyYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vc3Vic3RyYXRlJztcclxuaW1wb3J0IHsgR3JhZGllbnRDb2xvciB9IGZyb20gJy4uLy4uL3R5cGVzL2dyYWRpZW50LWNvbG9yJztcclxuaW1wb3J0IHsgR3JhZGllbnRDb2xvclBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL2dyYWRpZW50LWNvbG9yLXBvc2l0aW9ucyc7XHJcbmltcG9ydCB7IFJvdW5kZWRDb3JuZXIgfSBmcm9tICcuLi8uLi90eXBlcy9yb3VuZGVkLWNvcm5lcic7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNjcm9sbEJhclRoZW1lIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbG9yJztcclxuaW1wb3J0IHsgTmdTY3JvbGxWaWV3LCBTQ1JPTExfVklFV19JTlZFUlNJT04gfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgSVNjcm9sbEJhckRyYWdFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IERFRkFVTFRfU0NST0xMQkFSX0lOVEVSQUNUSVZFIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xyXG5cclxuY29uc3QgREVGQVVMVF9USElDS05FU1MgPSA2LFxyXG4gIERFRkFVTFRfU0laRSA9IDYsXHJcbiAgREVGQVVMVF9ST1VOREVEX0NPUk5FUjogUm91bmRlZENvcm5lciA9IFszLCAzLCAzLCAzXSxcclxuICBERUZBVUxUX1NUUk9LRV9BTklNQVRJT05fRFVSQVRJT04gPSA1MDAsXHJcbiAgREVGQVVMVF9SSVBQTEVfRU5BQkxFRCA9IHRydWUsXHJcbiAgREVGQVVMVF9SSVBQTEVfQ09MT1IgPSAncmdiYSgwLDAsMCwwLjUpJyxcclxuICBQWCA9ICdweCcsXHJcbiAgV0lEVEggPSAnd2lkdGgnLFxyXG4gIEhFSUdIVCA9ICdoZWlnaHQnLFxyXG4gIE9QQUNJVFkgPSAnb3BhY2l0eScsXHJcbiAgT1BBQ0lUWV8wID0gJzAnLFxyXG4gIE9QQUNJVFlfMSA9ICcxJyxcclxuICBUUkFOU0lUSU9OID0gJ3RyYW5zaXRpb24nLFxyXG4gIE5PTkUgPSAnbm9uZScsXHJcbiAgVFJBTlNJVElPTl9GQURFX0lOID0gYCR7T1BBQ0lUWX0gNTAwbXMgZWFzZS1vdXRgO1xyXG5cclxuLyoqXHJcbiAqIFNjcm9sbEJhciBjb21wb25lbnQuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1zY3JvbGwtYmFyJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfSU5WRVJTSU9OLCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdTY3JvbGxCYXJDb21wb25lbnQgZXh0ZW5kcyBOZ1Njcm9sbFZpZXcge1xyXG4gIGxvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG9uRHJhZyA9IG91dHB1dDxJU2Nyb2xsQmFyRHJhZ0V2ZW50PigpO1xyXG5cclxuICB0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gaW5wdXQ8R3JhZGllbnRDb2xvclBvc2l0aW9ucz4oWzAsIDBdKTtcclxuXHJcbiAgc2l6ZSA9IGlucHV0PG51bWJlcj4oREVGQVVMVF9TSVpFKTtcclxuXHJcbiAgdGhlbWUgPSBpbnB1dDxTY3JvbGxCYXJUaGVtZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgc3RhcnRPZmZzZXQgPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cclxuICBlbmRPZmZzZXQgPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cclxuICBzY3JvbGxiYXJNaW5TaXplID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcbiAgcHJlcGFyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGludGVyYWN0aXZlID0gaW5wdXQ8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUpO1xyXG5cclxuICBzaG93ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICB0aGlja25lc3MgPSBzaWduYWw8bnVtYmVyPihERUZBVUxUX1RISUNLTkVTUyk7XHJcblxyXG4gIGZpbGw6IFNpZ25hbDxzdHJpbmcgfCBHcmFkaWVudENvbG9yIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgdGh1bWJHcmFkaWVudEZpbGwgPSBzaWduYWw8c3RyaW5nIHwgR3JhZGllbnRDb2xvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgdGh1bWJIb3ZlckdyYWRpZW50RmlsbCA9IHNpZ25hbDxzdHJpbmcgfCBHcmFkaWVudENvbG9yIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICB0aHVtYlByZXNzZWRHcmFkaWVudEZpbGwgPSBzaWduYWw8c3RyaW5nIHwgR3JhZGllbnRDb2xvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgc3Ryb2tlR3JhZGllbnRDb2xvciA9IHNpZ25hbDxzdHJpbmcgfCBHcmFkaWVudENvbG9yIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICBzdHJva2VBbmltYXRpb25EdXJhdGlvbiA9IHNpZ25hbDxudW1iZXI+KERFRkFVTFRfU1RST0tFX0FOSU1BVElPTl9EVVJBVElPTik7XHJcblxyXG4gIHJvdW5kQ29ybmVyID0gc2lnbmFsPFJvdW5kZWRDb3JuZXI+KERFRkFVTFRfUk9VTkRFRF9DT1JORVIpO1xyXG5cclxuICByaXBwbGVDb2xvciA9IHNpZ25hbDxDb2xvciB8IHVuZGVmaW5lZD4oREVGQVVMVF9SSVBQTEVfQ09MT1IpO1xyXG5cclxuICByaXBwbGVFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KERFRkFVTFRfUklQUExFX0VOQUJMRUQpO1xyXG5cclxuICBob3ZlclN0YXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcHJlc3NlZFN0YXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgdHlwZTogU2lnbmFsPFN1YnN0YXJhdGVTdHlsZT47XHJcblxyXG4gIHN0eWxlczogU2lnbmFsPHsgW3NOYW1lOiBzdHJpbmddOiBhbnkgfT47XHJcblxyXG4gIHRodW1iV2lkdGg6IFNpZ25hbDxudW1iZXI+O1xyXG5cclxuICB0aHVtYkhlaWdodDogU2lnbmFsPG51bWJlcj47XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxpbmdDYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHJlYWRvbmx5ICRzY3JvbGxpbmdDYW5jZWwgPSB0aGlzLl8kc2Nyb2xsaW5nQ2FuY2VsLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy50aHVtYldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0aGlzLnRoaWNrbmVzcygpIDogdGhpcy5zaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRodW1iSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0aGlzLnNpemUoKSA6IHRoaXMudGhpY2tuZXNzKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCAkcG9pbnRlckRvd24gPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZG93bicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgKSwgJHBvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgKSwgJGRvY1BvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJykucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcclxuICAgICksICRwb2ludGVyRW50ZXIgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZW50ZXInKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICksICRwb2ludGVyTGVhdmUgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVybGVhdmUnKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICk7XHJcblxyXG4gICAgJHBvaW50ZXJEb3duLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmVzc2VkU3RhdGUuc2V0KHRoaXMudGh1bWJIaXQoZS5jbGllbnRYLCBlLmNsaWVudFkpKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkb2NQb2ludGVyVXAsICRwb2ludGVyVXBdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByZXNzZWRTdGF0ZS5zZXQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgJHBvaW50ZXJFbnRlci5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmhvdmVyU3RhdGUuc2V0KHRydWUpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgJHBvaW50ZXJMZWF2ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmhvdmVyU3RhdGUuc2V0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuZmlsbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3QgcHJlc3NlZCA9IHRoaXMucHJlc3NlZFN0YXRlKCksIGhvdmVyID0gdGhpcy5ob3ZlclN0YXRlKCk7XHJcbiAgICAgIGlmIChwcmVzc2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGh1bWJQcmVzc2VkR3JhZGllbnRGaWxsKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaG92ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aHVtYkhvdmVyR3JhZGllbnRGaWxsKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMudGh1bWJHcmFkaWVudEZpbGwoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudG90YWxTaXplID0gdGhpcy5zaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9pbnRlcmFjdGl2ZSA9IHRoaXMuaW50ZXJhY3RpdmUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZGluZygpID8gU3Vic3RhcmF0ZVN0eWxlcy5TVFJPS0UgOiBTdWJzdGFyYXRlU3R5bGVzLk5PTkU7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2hvdyA9IHRoaXMuc2hvdygpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIFt0aGlzLmlzVmVydGljYWwoKSA/IFdJRFRIIDogSEVJR0hUXTogYCR7dGhpcy50aGlja25lc3MoKX0ke1BYfWAsXHJcbiAgICAgICAgW09QQUNJVFldOiBzaG93ID8gT1BBQ0lUWV8xIDogT1BBQ0lUWV8wLCBbVFJBTlNJVElPTl06IHNob3cgPyBUUkFOU0lUSU9OX0ZBREVfSU4gOiBOT05FLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy4kc2Nyb2xsLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuaXNWZXJ0aWNhbCgpLCBzY3JvbGxTaXplID0gaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsSGVpZ2h0IDogdGhpcy5zY3JvbGxXaWR0aCxcclxuICAgICAgICAgIHNjcm9sbENvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQoKT8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgIHNjcm9sbFZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydCgpPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgICAgIGlmICghIXNjcm9sbFZpZXdwb3J0ICYmICEhc2Nyb2xsQ29udGVudCkge1xyXG4gICAgICAgICAgY29uc3QgY29udGVudFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQgOiBzY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICB2aWV3cG9ydFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZy5lbWl0KHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHNjcm9sbFNpemUgIT09IDAgPyAoKGlzVmVydGljYWwgPyB0aGlzLl95IDogdGhpcy5feCkgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgICAgIG1pbjogc2Nyb2xsU2l6ZSAhPT0gMCA/ICh0aGlzLnN0YXJ0T2Zmc2V0KCkgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgICAgIG1heDogc2Nyb2xsU2l6ZSAhPT0gMCA/ICgodmlld3BvcnRTaXplIC0gdGhpcy5lbmRPZmZzZXQoKSAtIGNvbnRlbnRTaXplKSAvIHNjcm9sbFNpemUpIDogMCxcclxuICAgICAgICAgICAgYW5pbWF0aW9uOiAhdGhpcy5faXNNb3ZpbmcsXHJcbiAgICAgICAgICAgIHVzZXJBY3Rpb246IHYsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWUoKTtcclxuICAgICAgaWYgKHRoZW1lKSB7XHJcbiAgICAgICAgaWYgKHRoZW1lKSB7XHJcbiAgICAgICAgICB0aGlzLnRodW1iR3JhZGllbnRGaWxsLnNldCh0aGVtZS5maWxsKTtcclxuICAgICAgICAgIHRoaXMudGh1bWJIb3ZlckdyYWRpZW50RmlsbC5zZXQodGhlbWUuaG92ZXJGaWxsKTtcclxuICAgICAgICAgIHRoaXMudGh1bWJQcmVzc2VkR3JhZGllbnRGaWxsLnNldCh0aGVtZS5wcmVzc2VkRmlsbCk7XHJcbiAgICAgICAgICB0aGlzLnN0cm9rZUdyYWRpZW50Q29sb3Iuc2V0KHRoZW1lLnN0cm9rZUdyYWRpZW50Q29sb3IpO1xyXG4gICAgICAgICAgdGhpcy5zdHJva2VBbmltYXRpb25EdXJhdGlvbi5zZXQodGhlbWUuc3Ryb2tlQW5pbWF0aW9uRHVyYXRpb24gPz8gREVGQVVMVF9TVFJPS0VfQU5JTUFUSU9OX0RVUkFUSU9OKTtcclxuICAgICAgICAgIHRoaXMucm91bmRDb3JuZXIuc2V0KHRoZW1lLnJvdW5kQ29ybmVyID8/IERFRkFVTFRfUk9VTkRFRF9DT1JORVIpO1xyXG4gICAgICAgICAgdGhpcy50aGlja25lc3Muc2V0KHRoZW1lLnRoaWNrbmVzcyA/PyBERUZBVUxUX1RISUNLTkVTUyk7XHJcbiAgICAgICAgICB0aGlzLnJpcHBsZUNvbG9yLnNldCh0aGVtZS5yaXBwbGVDb2xvciA/PyBERUZBVUxUX1JJUFBMRV9DT0xPUik7XHJcbiAgICAgICAgICB0aGlzLnJpcHBsZUVuYWJsZWQuc2V0KHRoZW1lLnJpcHBsZUVuYWJsZWQgPz8gREVGQVVMVF9SSVBQTEVfRU5BQkxFRClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRodW1iSGl0KHg6IG51bWJlciwgeTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0aHVtYiA9IHRoaXMuc2Nyb2xsQ29udGVudCgpPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhdGh1bWIpIHtcclxuICAgICAgY29uc3QgeyB4OiB0WCwgeTogdFksIHdpZHRoOiB0V2lkdGgsIGhlaWdodDogdEhlaWdodCB9ID0gdGh1bWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgaWYgKCh4ID49IHRYICYmIHggPD0gdFggKyB0V2lkdGgpICYmICh5ID49IHRZICYmIHkgPD0gdFkgKyB0SGVpZ2h0KSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbm9ybWFsaXplQW5pbWF0ZWRWYWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy5pc1ZlcnRpY2FsKCksIHNjcm9sbENvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQoKT8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0KCk/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBpZiAoISFzY3JvbGxDb250ZW50ICYmICEhc2Nyb2xsVmlld3BvcnQpIHtcclxuICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCA9IHRoaXMuZW5kT2Zmc2V0KCk7XHJcbiAgICAgIGlmIChpc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgY29uc3QgbWF4WSA9IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCAtIGVuZE9mZnNldCAtIHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA8IHN0YXJ0T2Zmc2V0ID8gc3RhcnRPZmZzZXQgOiB2YWx1ZSA+IG1heFkgPyBtYXhZIDogdmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbWF4WCA9IHNjcm9sbFZpZXdwb3J0Lm9mZnNldFdpZHRoIC0gZW5kT2Zmc2V0IC0gc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICByZXR1cm4gdmFsdWUgPCBzdGFydE9mZnNldCA/IHN0YXJ0T2Zmc2V0IDogdmFsdWUgPiBtYXhYID8gbWF4WCA6IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByaXBwbGUoc3Vic3RyYXRlOiBTdWJzdHJhdGVDb21wb25lbnQsIGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yaXBwbGVFbmFibGVkKCkgJiYgISFzdWJzdHJhdGUpIHtcclxuICAgICAgc3Vic3RyYXRlLnJpcHBsZShldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3Njcm9sbFZpZXdwb3J0IGNsYXNzPVwidHJhY2tcIiBbbmdTdHlsZV09XCJzdHlsZXMoKVwiIFtuZ0NsYXNzXT1cIntncmFiYmluZzogZ3JhYmJpbmcoKX1cIj5cclxuICAgIDxkaXYgI3Njcm9sbENvbnRlbnQgY2xhc3M9XCJ0aHVtYlwiIFtjbGFzcy5ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsKClcIiAocG9pbnRlcmRvd24pPVwicmlwcGxlKHN1YnN0cmF0ZSwgJGV2ZW50KVwiPlxyXG4gICAgICAgIDxuZy1zdWJzdHJhdGUgI3N1YnN0cmF0ZSBtb2RlPVwicm91bmRlZC1yZWN0YW5nbGVcIiBjbGFzcz1cInNoYXBlXCIgW3R5cGVdPVwidHlwZSgpXCIgW3dpZHRoXT1cInRodW1iV2lkdGgoKVwiXHJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwidGh1bWJIZWlnaHQoKVwiIFtyb3VuZENvcm5lcl09XCJyb3VuZENvcm5lcigpXCIgW3N0cm9rZVdpZHRoXT1cIjhcIiBbcmlwcGxlQ29sb3JdPVwicmlwcGxlQ29sb3IoKVwiXHJcbiAgICAgICAgICAgIFtmaWxsUG9zaXRpb25zXT1cInRodW1iR3JhZGllbnRQb3NpdGlvbnMoKVwiIFtmaWxsQ29sb3JzXT1cImZpbGwoKVwiXHJcbiAgICAgICAgICAgIFtzdHJva2VDb2xvcnNdPVwic3Ryb2tlR3JhZGllbnRDb2xvcigpXCIgW3N0cm9rZUFuaW1hdGlvbkR1cmF0aW9uXT1cInN0cm9rZUFuaW1hdGlvbkR1cmF0aW9uKClcIj48L25nLXN1YnN0cmF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|