ng-virtual-list 18.12.2 → 18.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +2 -2
  2. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +9 -5
  3. package/esm2022/lib/components/ng-list-item/const/index.mjs +2 -1
  4. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +14 -8
  5. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +3 -3
  6. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +20 -14
  7. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +6 -2
  8. package/esm2022/lib/const/index.mjs +6 -3
  9. package/esm2022/lib/core/track-box.mjs +31 -9
  10. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +35 -16
  11. package/esm2022/lib/models/display-object-config.model.mjs +1 -1
  12. package/esm2022/lib/ng-virtual-list.component.mjs +43 -11
  13. package/esm2022/lib/ng-virtual-list.service.mjs +31 -2
  14. package/esm2022/lib/utils/animator/animator.mjs +39 -14
  15. package/fesm2022/ng-virtual-list.mjs +222 -73
  16. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  17. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +1 -1
  18. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +3 -1
  19. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +5 -2
  20. package/lib/components/ng-scroller/ng-scroller.component.d.ts +1 -1
  21. package/lib/const/index.d.ts +3 -1
  22. package/lib/directives/virtual-click/virtual-click.directive.d.ts +11 -6
  23. package/lib/models/display-object-config.model.d.ts +4 -0
  24. package/lib/ng-virtual-list.component.d.ts +2 -1
  25. package/lib/ng-virtual-list.service.d.ts +13 -0
  26. package/lib/utils/animator/animator.d.ts +11 -2
  27. package/package.json +1 -1
@@ -82,13 +82,13 @@ export class NgPrerenderVirtualListItemComponent extends NgVirtualListItemCompon
82
82
  }
83
83
  }
84
84
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderVirtualListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgPrerenderVirtualListItemComponent, selector: "ng-prerender-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\" [attr.ngvl-index]=\"($index | async)!\"\r\n [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"$maxClickDistance | async\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", 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;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.VirtualClickDirective, selector: "[virtualClick]", inputs: ["maxClickDistance"], outputs: ["onVirtualClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgPrerenderVirtualListItemComponent, selector: "ng-prerender-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"\r\n [attr.ngvl-index]=\"($index | async)!\" [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"($maxClickDistance | async)!\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\"\r\n (onVirtualClickPress)=\"onClickPressHandler()\" (onVirtualClickCancel)=\"onClickCancelHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", 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;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.VirtualClickDirective, selector: "[virtualClick]", inputs: ["maxClickDistance"], outputs: ["onVirtualClick", "onVirtualClickPress", "onVirtualClickCancel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
86
  }
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderVirtualListItemComponent, decorators: [{
88
88
  type: Component,
89
89
  args: [{ selector: 'ng-prerender-virtual-list-item', host: {
90
90
  'class': 'ngvl__item',
91
91
  'role': 'listitem',
92
- }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\" [attr.ngvl-index]=\"($index | async)!\"\r\n [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"$maxClickDistance | async\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", 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;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"] }]
92
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"\r\n [attr.ngvl-index]=\"($index | async)!\" [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"($maxClickDistance | async)!\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\"\r\n (onVirtualClickPress)=\"onClickPressHandler()\" (onVirtualClickCancel)=\"onClickCancelHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", 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;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"] }]
93
93
  }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQ25ILE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFMUU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwwQkFBMEI7SUFDNUQsTUFBTTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQy9ELEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0csTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pHLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ25GLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBRW5GLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pLLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMs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QztZQUNmLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7d0dBeEVRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHlLQzFCaEQscXpCQVVlOzs0RkRnQkYsbUNBQW1DO2tCQVgvQyxTQUFTOytCQUNJLGdDQUFnQyxRQUdwQzt3QkFDRixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ3JCLGNBQ1csS0FBSyxtQkFDQSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgREVGQVVMVF9aSU5ERVgsIERJU1BMQVlfQkxPQ0ssIERJU1BMQVlfTk9ORSwgSElEREVOX1pJTkRFWCwgUFgsIFNJWkVfQVVUTywgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IElELCBQT1NJVElPTiwgUE9TSVRJT05fWkVSTyB9IGZyb20gJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJywgJy4vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICduZ3ZsX19pdGVtJyxcclxuICAgICAgICAncm9sZSc6ICdsaXN0aXRlbScsXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YSwgcmVndWxhciA9IHRoaXMucmVndWxhciwgbGVuZ3RoID0gdGhpcy5fcmVndWxhckxlbmd0aCwgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIGl0ZW1FbGVtZW50ID0gdGhpcy5faXRlbT8ubmF0aXZlRWxlbWVudCwgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuX2NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAoISFkYXRhICYmICEhZWwgJiYgISFpdGVtRWxlbWVudCAmJiAhIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3R5bGVzID0gZWwuc3R5bGUsIGl0ZW1FbGVtZW50U3R5bGVzID0gaXRlbUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShJRCwgYCR7ZGF0YS5pZH1gKTtcclxuICAgICAgICAgICAgc3R5bGVzLnpJbmRleCA9IGRhdGEuY29uZmlnLnpJbmRleDtcclxuICAgICAgICAgICAgaWYgKHJlZ3VsYXIpIHtcclxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgUE9TSVRJT05fWkVSTyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIGAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiBkYXRhLm1lYXN1cmVzLnh9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEuY29uZmlnLmRpdmlkZXMgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMuaGVpZ2h0ID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMucm93LnNpemV9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5taW5XaWR0aCA9IHN0eWxlcy5taW5XaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWluV2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4V2lkdGggPSBzdHlsZXMubWF4V2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1heFdpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1pbkhlaWdodCA9IHN0eWxlcy5taW5IZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5tYXhIZWlnaHQgPSBzdHlsZXMubWF4SGVpZ2h0ID0gYCR7ZGF0YS5tZWFzdXJlcy5tYXhIZWlnaHR9JHtQWH1gO1xyXG5cclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IHJlZ3VsYXIgPyBsZW5ndGggOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLm1pbldpZHRoID0gYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWF4V2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1heFdpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5taW5IZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWF4SGVpZ2h0ID0gYCR7ZGF0YS5tZWFzdXJlcy5tYXhIZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKElEKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2hvdygpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8uekluZGV4ID8/IERFRkFVTFRfWklOREVYO1xyXG4gICAgICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9CTE9DSztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgaGlkZSgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICAgICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIigkZGF0YSB8IGFzeW5jKSBhcyBkYXRhXCI+XHJcbiAgICA8ZGl2ICNpdGVtIGNsYXNzPVwibmd2bC1pdGVtXCIgW25nQ2xhc3NdPVwiKCRjbGFzc2VzIHwgYXN5bmMpIVwiIFtwYXJ0XT1cIigkcGFydCB8IGFzeW5jKSFcIiBbYXR0ci5uZ3ZsLWluZGV4XT1cIigkaW5kZXggfCBhc3luYykhXCJcclxuICAgICAgICBbYXR0ci5uZ3ZsLXZpc2liaWxpdHldPVwidmlzaWJpbGl0eVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2JsZW5kQ29sb3JcIiBjbGFzcz1cIm5ndmwtaXRlbV9fYmxlbmQtY29sb3JcIiBbc3R5bGUuLS1ibGVuZC1jb2xvcl09XCJfYmxlbmRDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciB2aXJ0dWFsQ2xpY2sgW3BhcnRdPVwiJGZ4UGFydCB8IGFzeW5jXCIgW21heENsaWNrRGlzdGFuY2VdPVwiJG1heENsaWNrRGlzdGFuY2UgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmd2bC1pdGVtX19jb250YWluZXJcIiBbbmdDbGFzc109XCIoJGNsYXNzZXMgfCBhc3luYykhXCIgKG9uVmlydHVhbENsaWNrKT1cIm9uQ2xpY2tIYW5kbGVyKClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtUmVuZGVyZXIgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiJHRlbXBsYXRlQ29udGV4dCB8IGFzeW5jXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQ25ILE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFMUU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwwQkFBMEI7SUFDNUQsTUFBTTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQy9ELEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0csTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pHLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ25GLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBRW5GLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pLLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMs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QztZQUNmLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7d0dBeEVRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHlLQzFCaEQseTZCQVdlOzs0RkRlRixtQ0FBbUM7a0JBWC9DLFNBQVM7K0JBQ0ksZ0NBQWdDLFFBR3BDO3dCQUNGLE9BQU8sRUFBRSxZQUFZO3dCQUNyQixNQUFNLEVBQUUsVUFBVTtxQkFDckIsY0FDVyxLQUFLLG1CQUNBLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQWCwgU0laRV9BVVRPLCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgSUQsIFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPIH0gZnJvbSAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL2NvbnN0JztcclxuXHJcbi8qKlxyXG4gKiBOZ1ByZXJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1saXN0LWl0ZW0vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmctcHJlcmVuZGVyLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnLCAnLi9uZy1wcmVyZW5kZXItbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgICAgICdyb2xlJzogJ2xpc3RpdGVtJyxcclxuICAgIH0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdQcmVyZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoLCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgaXRlbUVsZW1lbnQgPSB0aGlzLl9pdGVtPy5uYXRpdmVFbGVtZW50LCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5fY29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICghIWRhdGEgJiYgISFlbCAmJiAhIWl0ZW1FbGVtZW50ICYmICEhY29udGFpbmVyRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZXMgPSBlbC5zdHlsZSwgaXRlbUVsZW1lbnRTdHlsZXMgPSBpdGVtRWxlbWVudC5zdHlsZTtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICAgICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICAgICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGF0YS5jb25maWcuZGl2aWRlcyA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLnJvdy5zaXplfSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1pbldpZHRoID0gc3R5bGVzLm1pbldpZHRoID0gYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5tYXhXaWR0aCA9IHN0eWxlcy5tYXhXaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWF4V2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluSGVpZ2h0ID0gc3R5bGVzLm1pbkhlaWdodCA9IGAke2RhdGEubWVhc3VyZXMubWluSGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1heEhlaWdodCA9IHN0eWxlcy5tYXhIZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMuaGVpZ2h0ID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWAgOiByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWluV2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1pbldpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5tYXhXaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWF4V2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLm1pbkhlaWdodCA9IGAke2RhdGEubWVhc3VyZXMubWluSGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5tYXhIZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBzaG93KCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICAgICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gdGhpcy5fZGF0YT8uY29uZmlnPy56SW5kZXggPz8gREVGQVVMVF9aSU5ERVg7XHJcbiAgICAgICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfQkxPQ0spIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX0JMT0NLO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9WSVNJQkxFKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9WSVNJQkxFO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBoaWRlKCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gSElEREVOX1pJTkRFWDtcclxuICAgICAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9OT05FO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX0hJRERFTjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKCRkYXRhIHwgYXN5bmMpIGFzIGRhdGFcIj5cclxuICAgIDxkaXYgI2l0ZW0gY2xhc3M9XCJuZ3ZsLWl0ZW1cIiBbbmdDbGFzc109XCIoJGNsYXNzZXMgfCBhc3luYykhXCIgW3BhcnRdPVwiKCRwYXJ0IHwgYXN5bmMpIVwiXHJcbiAgICAgICAgW2F0dHIubmd2bC1pbmRleF09XCIoJGluZGV4IHwgYXN5bmMpIVwiIFthdHRyLm5ndmwtdmlzaWJpbGl0eV09XCJ2aXNpYmlsaXR5XCIgdGFiaW5kZXg9XCItMVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJfYmxlbmRDb2xvclwiIGNsYXNzPVwibmd2bC1pdGVtX19ibGVuZC1jb2xvclwiIFtzdHlsZS4tLWJsZW5kLWNvbG9yXT1cIl9ibGVuZENvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIHZpcnR1YWxDbGljayBbcGFydF09XCIkZnhQYXJ0IHwgYXN5bmNcIiBbbWF4Q2xpY2tEaXN0YW5jZV09XCIoJG1heENsaWNrRGlzdGFuY2UgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJuZ3ZsLWl0ZW1fX2NvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIigkY2xhc3NlcyB8IGFzeW5jKSFcIiAob25WaXJ0dWFsQ2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiXHJcbiAgICAgICAgICAgIChvblZpcnR1YWxDbGlja1ByZXNzKT1cIm9uQ2xpY2tQcmVzc0hhbmRsZXIoKVwiIChvblZpcnR1YWxDbGlja0NhbmNlbCk9XCJvbkNsaWNrQ2FuY2VsSGFuZGxlcigpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVJlbmRlcmVyID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIiR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==