@colijnit/corecomponents_v12 12.0.36 → 12.0.39

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 (37) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +194 -22
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +5 -3
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +6 -4
  6. package/esm2015/lib/components/base/base-input.component.js +4 -3
  7. package/esm2015/lib/components/co-dialog/co-dialog.component.js +15 -8
  8. package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +2 -1
  9. package/esm2015/lib/components/filter-item/filter-item.component.js +5 -2
  10. package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.component.js +28 -0
  11. package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.module.js +21 -0
  12. package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +2 -1
  13. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +9 -10
  14. package/esm2015/lib/components/simple-grid/base-simple-grid.component.js +3 -1
  15. package/esm2015/lib/components/simple-grid/simple-grid.component.js +3 -3
  16. package/esm2015/lib/components/simple-grid/simple-grid.module.js +4 -2
  17. package/esm2015/lib/directives/observe-visibility/observe-visibility.directive.js +80 -0
  18. package/esm2015/lib/directives/observe-visibility/observe-visibility.module.js +15 -0
  19. package/esm2015/public-api.js +3 -1
  20. package/fesm2015/colijnit-corecomponents_v12.js +169 -21
  21. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  22. package/lib/components/co-dialog/co-dialog.component.d.ts +4 -2
  23. package/lib/components/co-dialog/style/_layout.scss +6 -0
  24. package/lib/components/co-dialog/style/_theme.scss +1 -1
  25. package/lib/components/filter-item/filter-item.component.d.ts +1 -0
  26. package/lib/components/grid-toolbar-button/grid-toolbar-button.component.d.ts +8 -0
  27. package/lib/components/grid-toolbar-button/grid-toolbar-button.module.d.ts +2 -0
  28. package/lib/components/grid-toolbar-button/style/_layout.scss +18 -0
  29. package/lib/components/grid-toolbar-button/style/_material-definition.scss +0 -0
  30. package/lib/components/grid-toolbar-button/style/_theme.scss +5 -0
  31. package/lib/components/grid-toolbar-button/style/material.scss +5 -0
  32. package/lib/components/input-number-picker/input-number-picker.component.d.ts +2 -0
  33. package/lib/components/simple-grid/base-simple-grid.component.d.ts +1 -0
  34. package/lib/directives/observe-visibility/observe-visibility.directive.d.ts +16 -0
  35. package/lib/directives/observe-visibility/observe-visibility.module.d.ts +2 -0
  36. package/package.json +1 -1
  37. package/public-api.d.ts +2 -0
@@ -0,0 +1,28 @@
1
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ export class GridToolbarButtonComponent {
3
+ constructor() {
4
+ this.disabled = false;
5
+ this.buttonClick = new EventEmitter();
6
+ }
7
+ showClass() {
8
+ return true;
9
+ }
10
+ }
11
+ GridToolbarButtonComponent.decorators = [
12
+ { type: Component, args: [{
13
+ selector: "co-grid-toolbar-button",
14
+ template: `
15
+ <div class="grid-toolbar-button-wrapper" [class.disabled]="disabled" (click)="buttonClick.next()">
16
+ <co-icon [iconData]="iconData"></co-icon>
17
+ </div>
18
+ `,
19
+ encapsulation: ViewEncapsulation.None
20
+ },] }
21
+ ];
22
+ GridToolbarButtonComponent.propDecorators = {
23
+ iconData: [{ type: Input }],
24
+ disabled: [{ type: Input }],
25
+ buttonClick: [{ type: Output }],
26
+ showClass: [{ type: HostBinding, args: ["class.co-grid-toolbar-button",] }]
27
+ };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZ3JpZC10b29sYmFyLWJ1dHRvbi9ncmlkLXRvb2xiYXItYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVlyRyxNQUFNLE9BQU8sMEJBQTBCO0lBVHZDO1FBZVMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBTXBFLENBQUM7SUFIUSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7WUF2QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFFBQVEsRUFBRTs7OztHQUlUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7dUJBR0UsS0FBSzt1QkFHTCxLQUFLOzBCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWdyaWQtdG9vbGJhci1idXR0b25cIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWQtdG9vbGJhci1idXR0b24td3JhcHBlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJidXR0b25DbGljay5uZXh0KClcIj5cclxuICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25EYXRhXCI+PC9jby1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkVG9vbGJhckJ1dHRvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGljb25EYXRhOiBTYWZlSHRtbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWdyaWQtdG9vbGJhci1idXR0b25cIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { enableRipple } from "@syncfusion/ej2-base";
3
+ import { GridToolbarButtonComponent } from "./grid-toolbar-button.component";
4
+ import { IconModule } from "../icon/icon.module";
5
+ enableRipple(true);
6
+ export class GridToolbarButtonModule {
7
+ }
8
+ GridToolbarButtonModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ IconModule,
12
+ ],
13
+ declarations: [
14
+ GridToolbarButtonComponent
15
+ ],
16
+ exports: [
17
+ GridToolbarButtonComponent
18
+ ]
19
+ },] }
20
+ ];
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZ3JpZC10b29sYmFyLWJ1dHRvbi9ncmlkLXRvb2xiYXItYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBYW5CLE1BQU0sT0FBTyx1QkFBdUI7OztZQVhuQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFVBQVU7aUJBQ1g7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLDBCQUEwQjtpQkFDM0I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLDBCQUEwQjtpQkFDM0I7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7ZW5hYmxlUmlwcGxlfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHtHcmlkVG9vbGJhckJ1dHRvbkNvbXBvbmVudH0gZnJvbSBcIi4vZ3JpZC10b29sYmFyLWJ1dHRvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtJY29uTW9kdWxlfSBmcm9tIFwiLi4vaWNvbi9pY29uLm1vZHVsZVwiO1xyXG5cclxuZW5hYmxlUmlwcGxlKHRydWUpO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBJY29uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBHcmlkVG9vbGJhckJ1dHRvbkNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgR3JpZFRvb2xiYXJCdXR0b25Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkVG9vbGJhckJ1dHRvbk1vZHVsZSB7XHJcbn1cclxuIl19
@@ -38,6 +38,7 @@ InputCheckboxComponent.decorators = [
38
38
  [name]="name"
39
39
  [cssClass]="cssClass"
40
40
  [ngModel]="model"
41
+ [disabled]="disabled"
41
42
  (ngModelChange)="handleModelChange($event)"
42
43
  ></ejs-checkbox>
43
44
  `,
@@ -68,4 +69,4 @@ InputCheckboxComponent.propDecorators = {
68
69
  modelChange: [{ type: Output }],
69
70
  showClass: [{ type: HostBinding, args: ["class.co-input-checkbox",] }]
70
71
  };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWNoZWNrYm94L2lucHV0LWNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ25ILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBc0I1RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQTJCO0lBa0JyRSxZQUNxQixhQUE0QixFQUN4QyxnQkFBa0MsRUFDL0IsY0FBaUMsRUFDakMsd0JBQWtELEVBQ2xELHNCQUFnRSxFQUNoRSxhQUFvQyxFQUN2QyxVQUF1QjtRQUU5QixLQUFLLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQVJoRixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUFkekIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQWlCeEUsQ0FBQztJQWRNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFjTSxRQUFRLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUEzREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7OztHQU9UO2dCQUNELFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSx3QkFBd0I7d0JBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7cUJBQ3RELEVBQUU7d0JBQ0QsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IsV0FBVyxFQUFFLHNCQUFzQjtxQkFDcEMsQ0FBQztnQkFDRixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXpCTyxhQUFhLHVCQTZDaEIsUUFBUTtZQXpDTCxnQkFBZ0I7WUFqQnRCLGlCQUFpQjtZQUVqQix3QkFBd0I7WUFZbEIsdUNBQXVDO1lBQ3ZDLG9CQUFvQjtZQVoxQixVQUFVOzs7bUJBcUNULEtBQUs7b0JBR0wsS0FBSzt1QkFHTCxLQUFLOzBCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCIuLi9mb3JtL2Zvcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Rm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0taW5wdXQtdXNlci1jaGFuZ2UtbGlzdGVuZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge05nWm9uZVdyYXBwZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL25nLXpvbmUtd3JhcHBlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FfSBmcm9tIFwiLi4vYmFzZS9jb21wb25lbnQtaW50ZXJmYWNlLW5hbWVcIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vaWNvbi9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWlucHV0LWNoZWNrYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxlanMtY2hlY2tib3ggW2xhYmVsXT1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjc3NDbGFzc109XCJjc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9lanMtY2hlY2tib3g+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBDT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENoZWNrYm94Q29tcG9uZW50KVxyXG4gIH0sIHtcclxuICAgIHByb3ZpZGU6IEJhc2VJbnB1dENvbXBvbmVudCxcclxuICAgIHVzZUV4aXN0aW5nOiBJbnB1dENoZWNrYm94Q29tcG9uZW50XHJcbiAgfV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudDxib29sZWFuPiB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjc3NDbGFzczogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28taW5wdXQtY2hlY2tib3hcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50LFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXI/OiBGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgbmdab25lV3JhcHBlcj86IE5nWm9uZVdyYXBwZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgc3VwZXIoY2hhbmdlRGV0ZWN0b3IsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lciwgbmdab25lV3JhcHBlciwgZWxlbWVudFJlZik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TW9kZWwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UubmV4dCh0aGlzLm1vZGVsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb2RlbENoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuc2V0TW9kZWwodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWNoZWNrYm94L2lucHV0LWNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ25ILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBdUI1RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQTJCO0lBa0JyRSxZQUNxQixhQUE0QixFQUN4QyxnQkFBa0MsRUFDL0IsY0FBaUMsRUFDakMsd0JBQWtELEVBQ2xELHNCQUFnRSxFQUNoRSxhQUFvQyxFQUN2QyxVQUF1QjtRQUU5QixLQUFLLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQVJoRixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUFkekIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQWlCeEUsQ0FBQztJQWRNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFjTSxRQUFRLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUE1REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDtnQkFDRCxTQUFTLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsd0JBQXdCO3dCQUNqQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO3FCQUN0RCxFQUFFO3dCQUNELE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLFdBQVcsRUFBRSxzQkFBc0I7cUJBQ3BDLENBQUM7Z0JBQ0YsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUExQk8sYUFBYSx1QkE4Q2hCLFFBQVE7WUExQ0wsZ0JBQWdCO1lBakJ0QixpQkFBaUI7WUFFakIsd0JBQXdCO1lBWWxCLHVDQUF1QztZQUN2QyxvQkFBb0I7WUFaMUIsVUFBVTs7O21CQXNDVCxLQUFLO29CQUdMLEtBQUs7dUJBR0wsS0FBSzswQkFHTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Jhc2VJbnB1dENvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS9mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSBcIi4uL2Jhc2UvY29tcG9uZW50LWludGVyZmFjZS1uYW1lXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1pbnB1dC1jaGVja2JveFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWpzLWNoZWNrYm94IFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbY3NzQ2xhc3NdPVwiY3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPjwvZWpzLWNoZWNrYm94PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRDaGVja2JveENvbXBvbmVudClcclxuICB9LCB7XHJcbiAgICBwcm92aWRlOiBCYXNlSW5wdXRDb21wb25lbnQsXHJcbiAgICB1c2VFeGlzdGluZzogSW5wdXRDaGVja2JveENvbXBvbmVudFxyXG4gIH1dLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8Ym9vbGVhbj4ge1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3NzQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWlucHV0LWNoZWNrYm94XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZm9ybUNvbXBvbmVudDogRm9ybUNvbXBvbmVudCxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIsIG5nWm9uZVdyYXBwZXIsIGVsZW1lbnRSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE1vZGVsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsID0gdmFsdWU7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnNldE1vZGVsKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -54,15 +54,13 @@ export class InputNumberPickerComponent extends BaseInputComponent {
54
54
  });
55
55
  }
56
56
  // @override
57
- // @Input()
58
- // public set model(model: number) {
59
- // super.model = model;
60
- // this.numberLogic.value = model;
61
- // }
62
- //
63
- // public get model(): number {
64
- // return this.numberLogic.value;
65
- // }
57
+ set model(model) {
58
+ this.setValue(model, true);
59
+ super.model = model;
60
+ }
61
+ get model() {
62
+ return super.model;
63
+ }
66
64
  set min(min) {
67
65
  this.numberLogic.min = min;
68
66
  }
@@ -261,6 +259,7 @@ InputNumberPickerComponent.ctorParameters = () => [
261
259
  { type: FormInputUserModelChangeListenerService }
262
260
  ];
263
261
  InputNumberPickerComponent.propDecorators = {
262
+ model: [{ type: Input }],
264
263
  min: [{ type: Input }],
265
264
  step: [{ type: Input }],
266
265
  max: [{ type: Input }],
@@ -278,4 +277,4 @@ InputNumberPickerComponent.propDecorators = {
278
277
  __decorate([
279
278
  InputBoolean()
280
279
  ], InputNumberPickerComponent.prototype, "noValidation", void 0);
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyLXBpY2tlci9pbnB1dC1udW1iZXItcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFFMUUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDOUYsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFHeEcsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBb0NyRCx3R0FBd0c7QUFDeEcsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUEwQjtJQWdHeEUsWUFD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LFdBQVcsU0FBQyxrQ0FBa0M7dUJBSzlDLFdBQVcsU0FBQyxpQkFBaUI7d0JBSzdCLFdBQVcsU0FBQyw4QkFBOEI7O0FBckIzQztJQURVLFlBQVksRUFBRTtnRUFDWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0JvdW5kc0NvbnN0cmFpbmVkTnVtYmVyVmFsdWV9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsL2JvdW5kcy1jb25zdHJhaW5lZC1udW1iZXItdmFsdWVcIjtcbmltcG9ydCB7TlVNQkVSX0lOUFVUU19LRVlfRE9XTl9XSElURV9MSVNUfSBmcm9tIFwiLi4vLi4vY29yZS9jb25zdGFudC9udW1iZXItaW5wdXRzLWtleS1kb3duLXdoaXRlLWxpc3RcIjtcbmltcG9ydCB7S2V5Ym9hcmRDb2RlfSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2tleWJvYXJkLWNvZGUuZW51bVwiO1xuaW1wb3J0IHtJbnB1dFRleHRDb21wb25lbnR9IGZyb20gXCIuLi9pbnB1dC10ZXh0L2lucHV0LXRleHQuY29tcG9uZW50XCI7XG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcbmltcG9ydCB7SW5wdXROdW1iZXJQaWNrZXJCdXR0b25TaG93TW9kZX0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9pbnB1dC1udW1iZXItcGlja2VyLXNob3ctbW9kZS5lbnVtXCI7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi9pY29uL2ljb24tY2FjaGUuc2VydmljZVwiO1xuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bVwiO1xuaW1wb3J0IHtDT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gXCIuLi9iYXNlL2NvbXBvbmVudC1pbnRlcmZhY2UtbmFtZVwiO1xuaW1wb3J0IHtGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS9mb3JtLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjby1pbnB1dC1udW1iZXItcGlja2VyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgIDxjby1idXR0b24gKm5nSWY9XCJzaG93QnV0dG9uc1wiIGNsYXNzPVwibWludXMtb3BlcmF0b3IgY2lyY2xlXCIgW2NsYXNzLnNlbGVjdF09XCJtaW5TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24obWludXNJY29uKVwiXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25NaW51c01vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwic3RvcEF1dG9Db3VudGluZygpXCIgKG1vdXNlbGVhdmUpPVwic3RvcEF1dG9Db3VudGluZygpXCI+PC9jby1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgW25nTW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVDaGFuZ2VNb2RlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCIvPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlclwiPlxuICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cInNob3dCdXR0b25zXCIgY2xhc3M9XCJwbHVzLW9wZXJhdG9yIGNpcmNsZVwiICBbY2xhc3Muc2VsZWN0XT1cInBsdXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24ocGx1c0ljb24pXCJcbiAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblBsdXNNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BBdXRvQ291bnRpbmcoKVwiIChtb3VzZWxlYXZlKT1cInN0b3BBdXRvQ291bnRpbmcoKVwiPjwvY28tYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dE51bWJlclBpY2tlckNvbXBvbmVudClcbiAgfSwge1xuICAgIHByb3ZpZGU6IEJhc2VJbnB1dENvbXBvbmVudCxcbiAgICB1c2VFeGlzdGluZzogSW5wdXROdW1iZXJQaWNrZXJDb21wb25lbnRcbiAgfV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbi8vIEEgY29tcG9uZW50IHRoYXQgbGV0cyB1c2VycyBwaWNrIGEgbnVtYmVyIGJ5IGluY3JlYXNpbmcgYW5kIGRlY3JlYXNpbmcgaXQgd2l0aCBidXR0b25zLCBvciBieSB0eXBpbmcuXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXJQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQ8bnVtYmVyPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvLyBAb3ZlcnJpZGVcbiAgLy8gQElucHV0KClcbiAgLy8gcHVibGljIHNldCBtb2RlbChtb2RlbDogbnVtYmVyKSB7XG4gIC8vICAgc3VwZXIubW9kZWwgPSBtb2RlbDtcbiAgLy8gICB0aGlzLm51bWJlckxvZ2ljLnZhbHVlID0gbW9kZWw7XG4gIC8vIH1cbiAgLy9cbiAgLy8gcHVibGljIGdldCBtb2RlbCgpOiBudW1iZXIge1xuICAvLyAgIHJldHVybiB0aGlzLm51bWJlckxvZ2ljLnZhbHVlO1xuICAvLyB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4obWluOiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLm1pbiA9IG1pbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RlcChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLnN0ZXAgPSBzdGVwO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXgobWF4OiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLm1heCA9IG1heDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuZ01vZGVsT3B0aW9uczogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW51c0ljb246IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5NaW51c1NpbXBsZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGx1c0ljb246IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5QbHVzU2ltcGxlO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zICdhbHdheXMnLCAnb25Gb2N1c09ubHknLCBvciAnbmV2ZXInXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25TaG93TW9kZTogSW5wdXROdW1iZXJQaWNrZXJCdXR0b25TaG93TW9kZSA9IElucHV0TnVtYmVyUGlja2VyQnV0dG9uU2hvd01vZGUuQWx3YXlzO1xuXG4gIC8vIEBvdmVycmlkZSBEZWZhdWx0IHRydWUgZm9yIHVzLlxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcbiAgcHVibGljIG5vVmFsaWRhdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWNpbWFscyhkZWNpbWFsczogbnVtYmVyKSB7XG4gICAgdGhpcy5udW1iZXJMb2dpYy5kZWNpbWFscyA9IGRlY2ltYWxzO1xuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3Muc2hvdy1idXR0b25zLW9uLWZvY3VzLW9ubHlcIilcbiAgcHVibGljIGdldCBzaG93QnV0dG9uc09uRm9jdXNPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblNob3dNb2RlID09PSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLk9uRm9jdXNPbmx5O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFzLWxhYmVsXCIpXG4gIHB1YmxpYyBnZXQgaGFzTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sYWJlbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW5wdXQtbnVtYmVyLXBpY2tlcicpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2hvd0J1dHRvbnM6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IG15S2V5RG93bldoaXRlTGlzdDogS2V5Ym9hcmRDb2RlW10gPSBOVU1CRVJfSU5QVVRTX0tFWV9ET1dOX1dISVRFX0xJU1Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IG51bWJlckxvZ2ljOiBCb3VuZHNDb25zdHJhaW5lZE51bWJlclZhbHVlID0gbmV3IEJvdW5kc0NvbnN0cmFpbmVkTnVtYmVyVmFsdWUoKTtcblxuICBwdWJsaWMgbWluU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHBsdXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX251bWJlcklucHV0SGFzRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9udW1iZXJMb2dpY1ZhbHVlQ2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGF5QmVmb3JlU3RhcnRBdXRvQ291bnRNczogbnVtYmVyID0gNjY2O1xuICAvLyB0aGUgJ3NwZWVkIGdlYXJzJyBmb3IgYXV0byBjb3VudGluZ1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGVwRmFjdG9yczogbnVtYmVyW10gPSBbMSwgMTAsIDIwXTtcbiAgLy8gaW5jcmVhc2Ugc3RlcCBzaXplIHRpbWluZ1xuICBwcml2YXRlIHJlYWRvbmx5IF9tc0NoYW5nZVN0ZXBGYWN0b3I6IG51bWJlciA9IDEwMDA7XG4gIC8vIHN0ZXAgc3BlZWRcbiAgcHJpdmF0ZSByZWFkb25seSBfbXNEb1N0ZXA6IG51bWJlciA9IDU7XG4gIC8vIGhvbGQgdGhlIG1vdXNlIGRvd24gYW5kIHRoaXMgaW5jcmVhc2VzIGZvciBhIGZhc3RlciBhdXRvIGluY3JlbWVudFxuICBwcml2YXRlIF9zdGVwRmFjdG9yOiBudW1iZXIgPSB0aGlzLl9zdGVwRmFjdG9yc1swXTtcbiAgcHJpdmF0ZSBfbWF5QXV0b0NvdW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXV0b0NvdW50VGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9zdGVwSW5jcmVtZW50VGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9zdGFydEF1dG9jb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZm9ybUNvbXBvbmVudDogRm9ybUNvbXBvbmVudCxcbiAgICBASW5qZWN0KEljb25DYWNoZVNlcnZpY2UpIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcjogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fbnVtYmVyTG9naWNWYWx1ZUNoYW5nZVN1YiA9IHRoaXMubnVtYmVyTG9naWMudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIC8vIGN1c3RvbSBmb3JtIHVzZXIgY2hhZ25lIGxpc3RlbmVyIC5uZXh0IGJlY2F1c2Ugd2UgZG9uJ3QgdXNlciBzdXBlci51cGRhdGVNb2RlbCgpIHdoaWNoIG5vcm1hbGx5IGRvZXMgdGhhdCBmb3IgdXNcbiAgICAgICAgaWYgKHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgICAgIHRoaXMudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLmluaXQodHJ1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQnV0dG9uc1Nob3dTdGF0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbnVtYmVyTG9naWNWYWx1ZUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9hdXRvQ291bnRUaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc3RlcEluY3JlbWVudFRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zdGFydEF1dG9jb3VudFRpbWVvdXQpO1xuICB9XG5cbiAgLy8gTm90ZTogcmVjdXJzaXZlIHRocm91Z2ggc2V0VGltZW91dCgpLlxuICBwdWJsaWMgZG9JbmNyZW1lbnRBdXRvKCk6IHZvaWQge1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IHRydWU7XG5cbiAgICB0aGlzLmluY3JlbWVudCh0aGlzLl9zdGVwRmFjdG9yKTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9hdXRvQ291bnRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgICAgdGhpcy5kb0luY3JlbWVudEF1dG8oKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5fbXNEb1N0ZXApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLm15S2V5RG93bldoaXRlTGlzdC5maW5kKChrKSA9PiBrID09PSBldmVudC5rZXlDb2RlKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHN1cGVyLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZU1vZGVsKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHJlY3Vyc2l2ZSB0aHJvdWdoIHNldFRpbWVvdXQoKS5cbiAgcHVibGljIGRvRGVjcmVtZW50QXV0bygpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXlBdXRvQ291bnQgPSB0cnVlO1xuXG4gICAgdGhpcy5kZWNyZW1lbnQodGhpcy5fc3RlcEZhY3Rvcik7XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fYXV0b0NvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICAgIHRoaXMuZG9EZWNyZW1lbnRBdXRvKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMuX21zRG9TdGVwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wQXV0b0NvdW50aW5nKCk6IHZvaWQge1xuICAgIHRoaXMubWluU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBsdXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IGZhbHNlO1xuICAgIHRoaXMuX3N0ZXBGYWN0b3IgPSB0aGlzLl9zdGVwRmFjdG9yc1swXTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGN1cnJlbnQgbnVtYmVyIHZhbHVlIHdpdGggZ2l2ZW4gbmV3VmFsdWUsIG9wdGlvbmFsbHkgc2lsZW50IChubyB2YWx1ZUNoYW5nZSBldmVudCBmaXJlZCkuXG4gIHB1YmxpYyBzZXRWYWx1ZShuZXdWYWx1ZTogbnVtYmVyLCBzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMubnVtYmVyTG9naWMuc2V0VmFsdWUobmV3VmFsdWUsIHNpbGVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5jcmVtZW50KHN0ZXBzOiBudW1iZXIgPSAxKTogdm9pZCB7XG4gICAgdGhpcy5udW1iZXJMb2dpYy5pbmNyZW1lbnQoc3RlcHMpO1xuICB9XG5cbiAgcHVibGljIGRlY3JlbWVudChzdGVwczogbnVtYmVyID0gMSk6IHZvaWQge1xuICAgIHRoaXMubnVtYmVyTG9naWMuZGVjcmVtZW50KHN0ZXBzKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBsdXNNb3VzZURvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGx1c1NlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gdHJ1ZTtcblxuICAgIC8vIGtlZXBzIGZvY3VzIG9uIGlucHV0IHRleHQgaW5zdGVhZCBvZiBidXR0b25cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5pbmNyZW1lbnQoKTtcbiAgICB0aGlzLl9tYXlBdXRvQ291bnQgPSB0cnVlO1xuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0QXV0b2NvdW50VGltZW91dCk7XG4gICAgdGhpcy5fc3RhcnRBdXRvY291bnRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICB0aGlzLmRvSW5jcmVtZW50QXV0bygpO1xuICAgICAgICB0aGlzLl9kb0luY3JlYXNlU3RlcEZhY3RvcigpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2RlbGF5QmVmb3JlU3RhcnRBdXRvQ291bnRNcyk7XG4gIH1cblxuICBwdWJsaWMgb25NaW51c01vdXNlRG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IHRydWU7XG4gICAgLy8ga2VlcHMgZm9jdXMgb24gaW5wdXQgdGV4dCBpbnN0ZWFkIG9mIGJ1dHRvblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IHRydWU7XG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRBdXRvY291bnRUaW1lb3V0KTtcbiAgICB0aGlzLl9zdGFydEF1dG9jb3VudFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgIHRoaXMuZG9EZWNyZW1lbnRBdXRvKCk7XG4gICAgICAgIHRoaXMuX2RvSW5jcmVhc2VTdGVwRmFjdG9yKCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fZGVsYXlCZWZvcmVTdGFydEF1dG9Db3VudE1zKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHJlY3Vyc2l2ZS5cbiAgcHJpdmF0ZSBfZG9JbmNyZWFzZVN0ZXBGYWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcEluY3JlbWVudFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgIHRoaXMuX3N0ZXBGYWN0b3IgPSB0aGlzLl9nZXROZXh0U3RlcEZhY3Rvck1vdXNlRG93bigpO1xuICAgICAgICB0aGlzLl9kb0luY3JlYXNlU3RlcEZhY3RvcigpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX21zQ2hhbmdlU3RlcEZhY3Rvcik7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0U3RlcEZhY3Rvck1vdXNlRG93bigpOiBudW1iZXIge1xuICAgIGNvbnN0IGN1cklkeDogbnVtYmVyID0gdGhpcy5fc3RlcEZhY3RvcnMuaW5kZXhPZih0aGlzLl9zdGVwRmFjdG9yKTtcbiAgICBpZiAoY3VySWR4IDwgdGhpcy5fc3RlcEZhY3RvcnMubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBGYWN0b3JzW2N1cklkeCArIDFdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RlcEZhY3RvcjtcbiAgfVxuXG4gIC8vIFNob3cgb3IgaGlkZSArIGFuZCAtIGJ1dHRvbnMuIE1pZ2h0IGhpZGUgYnV0dG9ucyBpZiBudW1iZXIgaW5wdXQgbG9zdCBmb2N1cyBhbmQgYnV0dG9uIHNob3cgbW9kZSBpcyBvbiBmb2N1cyBvbmx5LlxuICBwcml2YXRlIF91cGRhdGVCdXR0b25zU2hvd1N0YXRlKCk6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5idXR0b25TaG93TW9kZSkge1xuICAgICAgY2FzZSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLkFsd2F5czpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbnMgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSW5wdXROdW1iZXJQaWNrZXJCdXR0b25TaG93TW9kZS5PbkZvY3VzT25seTpcbiAgICAgICAgdGhpcy5zaG93QnV0dG9ucyA9IHRoaXMuX251bWJlcklucHV0SGFzRm9jdXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLk5ldmVyOlxuICAgICAgICB0aGlzLnNob3dCdXR0b25zID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyLXBpY2tlci9pbnB1dC1udW1iZXItcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFFMUUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDOUYsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFHeEcsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBb0NyRCx3R0FBd0c7QUFDeEcsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUEwQjtJQWdHeEUsWUFD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QUs7NkJBS0wsS0FBSzt3QkFHTCxLQUFLO3VCQUdMLEtBQUs7NkJBSUwsS0FBSzsyQkFJTCxLQUFLO3VCQUdMLEtBQUs7MEJBTUwsTUFBTTtxQ0FHTixXQUFXLFNBQUMsa0NBQWtDO3VCQUs5QyxXQUFXLFNBQUMsaUJBQWlCO3dCQUs3QixXQUFXLFNBQUMsOEJBQThCOztBQXJCM0M7SUFEVSxZQUFZLEVBQUU7Z0VBQ1kiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0Jhc2VJbnB1dENvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnRcIjtcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtCb3VuZHNDb25zdHJhaW5lZE51bWJlclZhbHVlfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbC9ib3VuZHMtY29uc3RyYWluZWQtbnVtYmVyLXZhbHVlXCI7XG5pbXBvcnQge05VTUJFUl9JTlBVVFNfS0VZX0RPV05fV0hJVEVfTElTVH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uc3RhbnQvbnVtYmVyLWlucHV0cy1rZXktZG93bi13aGl0ZS1saXN0XCI7XG5pbXBvcnQge0tleWJvYXJkQ29kZX0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9rZXlib2FyZC1jb2RlLmVudW1cIjtcbmltcG9ydCB7SW5wdXRUZXh0Q29tcG9uZW50fSBmcm9tIFwiLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGb3JtSW5wdXRVc2VyTW9kZWxDaGFuZ2VMaXN0ZW5lclNlcnZpY2V9IGZyb20gXCIuLi8uLi9jb3JlL3NlcnZpY2UvZm9ybS1pbnB1dC11c2VyLWNoYW5nZS1saXN0ZW5lci5zZXJ2aWNlXCI7XG5pbXBvcnQge0lucHV0TnVtYmVyUGlja2VyQnV0dG9uU2hvd01vZGV9IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vaW5wdXQtbnVtYmVyLXBpY2tlci1zaG93LW1vZGUuZW51bVwiO1xuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vaWNvbi9pY29uLWNhY2hlLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tIFwiLi4vLi4vY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW1cIjtcbmltcG9ydCB7Q09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FfSBmcm9tIFwiLi4vYmFzZS9jb21wb25lbnQtaW50ZXJmYWNlLW5hbWVcIjtcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0vZm9ybS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY28taW5wdXQtbnVtYmVyLXBpY2tlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICA8Y28tYnV0dG9uICpuZ0lmPVwic2hvd0J1dHRvbnNcIiBjbGFzcz1cIm1pbnVzLW9wZXJhdG9yIGNpcmNsZVwiIFtjbGFzcy5zZWxlY3RdPVwibWluU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKG1pbnVzSWNvbilcIlxuICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uTWludXNNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BBdXRvQ291bnRpbmcoKVwiIChtb3VzZWxlYXZlKT1cInN0b3BBdXRvQ291bnRpbmcoKVwiPjwvY28tYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtuZ01vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiLz5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgIDxjby1idXR0b24gKm5nSWY9XCJzaG93QnV0dG9uc1wiIGNsYXNzPVwicGx1cy1vcGVyYXRvciBjaXJjbGVcIiAgW2NsYXNzLnNlbGVjdF09XCJwbHVzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHBsdXNJY29uKVwiXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25QbHVzTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJzdG9wQXV0b0NvdW50aW5nKClcIiAobW91c2VsZWF2ZSk9XCJzdG9wQXV0b0NvdW50aW5nKClcIj48L2NvLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IENPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXROdW1iZXJQaWNrZXJDb21wb25lbnQpXG4gIH0sIHtcbiAgICBwcm92aWRlOiBCYXNlSW5wdXRDb21wb25lbnQsXG4gICAgdXNlRXhpc3Rpbmc6IElucHV0TnVtYmVyUGlja2VyQ29tcG9uZW50XG4gIH1dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG4vLyBBIGNvbXBvbmVudCB0aGF0IGxldHMgdXNlcnMgcGljayBhIG51bWJlciBieSBpbmNyZWFzaW5nIGFuZCBkZWNyZWFzaW5nIGl0IHdpdGggYnV0dG9ucywgb3IgYnkgdHlwaW5nLlxuZXhwb3J0IGNsYXNzIElucHV0TnVtYmVyUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50PG51bWJlcj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLy8gQG92ZXJyaWRlXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbW9kZWwobW9kZWw6IG51bWJlcikge1xuICAgIHRoaXMuc2V0VmFsdWUobW9kZWwsIHRydWUpO1xuICAgIHN1cGVyLm1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN1cGVyLm1vZGVsO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4obWluOiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLm1pbiA9IG1pbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RlcChzdGVwOiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLnN0ZXAgPSBzdGVwO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXgobWF4OiBudW1iZXIpIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLm1heCA9IG1heDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuZ01vZGVsT3B0aW9uczogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW51c0ljb246IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5NaW51c1NpbXBsZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGx1c0ljb246IENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbi5QbHVzU2ltcGxlO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zICdhbHdheXMnLCAnb25Gb2N1c09ubHknLCBvciAnbmV2ZXInXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25TaG93TW9kZTogSW5wdXROdW1iZXJQaWNrZXJCdXR0b25TaG93TW9kZSA9IElucHV0TnVtYmVyUGlja2VyQnV0dG9uU2hvd01vZGUuQWx3YXlzO1xuXG4gIC8vIEBvdmVycmlkZSBEZWZhdWx0IHRydWUgZm9yIHVzLlxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcbiAgcHVibGljIG5vVmFsaWRhdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWNpbWFscyhkZWNpbWFsczogbnVtYmVyKSB7XG4gICAgdGhpcy5udW1iZXJMb2dpYy5kZWNpbWFscyA9IGRlY2ltYWxzO1xuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3Muc2hvdy1idXR0b25zLW9uLWZvY3VzLW9ubHlcIilcbiAgcHVibGljIGdldCBzaG93QnV0dG9uc09uRm9jdXNPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblNob3dNb2RlID09PSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLk9uRm9jdXNPbmx5O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGFzLWxhYmVsXCIpXG4gIHB1YmxpYyBnZXQgaGFzTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sYWJlbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28taW5wdXQtbnVtYmVyLXBpY2tlcicpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2hvd0J1dHRvbnM6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IG15S2V5RG93bldoaXRlTGlzdDogS2V5Ym9hcmRDb2RlW10gPSBOVU1CRVJfSU5QVVRTX0tFWV9ET1dOX1dISVRFX0xJU1Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IG51bWJlckxvZ2ljOiBCb3VuZHNDb25zdHJhaW5lZE51bWJlclZhbHVlID0gbmV3IEJvdW5kc0NvbnN0cmFpbmVkTnVtYmVyVmFsdWUoKTtcblxuICBwdWJsaWMgbWluU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHBsdXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX251bWJlcklucHV0SGFzRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9udW1iZXJMb2dpY1ZhbHVlQ2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGF5QmVmb3JlU3RhcnRBdXRvQ291bnRNczogbnVtYmVyID0gNjY2O1xuICAvLyB0aGUgJ3NwZWVkIGdlYXJzJyBmb3IgYXV0byBjb3VudGluZ1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGVwRmFjdG9yczogbnVtYmVyW10gPSBbMSwgMTAsIDIwXTtcbiAgLy8gaW5jcmVhc2Ugc3RlcCBzaXplIHRpbWluZ1xuICBwcml2YXRlIHJlYWRvbmx5IF9tc0NoYW5nZVN0ZXBGYWN0b3I6IG51bWJlciA9IDEwMDA7XG4gIC8vIHN0ZXAgc3BlZWRcbiAgcHJpdmF0ZSByZWFkb25seSBfbXNEb1N0ZXA6IG51bWJlciA9IDU7XG4gIC8vIGhvbGQgdGhlIG1vdXNlIGRvd24gYW5kIHRoaXMgaW5jcmVhc2VzIGZvciBhIGZhc3RlciBhdXRvIGluY3JlbWVudFxuICBwcml2YXRlIF9zdGVwRmFjdG9yOiBudW1iZXIgPSB0aGlzLl9zdGVwRmFjdG9yc1swXTtcbiAgcHJpdmF0ZSBfbWF5QXV0b0NvdW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXV0b0NvdW50VGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9zdGVwSW5jcmVtZW50VGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9zdGFydEF1dG9jb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZm9ybUNvbXBvbmVudDogRm9ybUNvbXBvbmVudCxcbiAgICBASW5qZWN0KEljb25DYWNoZVNlcnZpY2UpIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lcjogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fbnVtYmVyTG9naWNWYWx1ZUNoYW5nZVN1YiA9IHRoaXMubnVtYmVyTG9naWMudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIC8vIGN1c3RvbSBmb3JtIHVzZXIgY2hhZ25lIGxpc3RlbmVyIC5uZXh0IGJlY2F1c2Ugd2UgZG9uJ3QgdXNlciBzdXBlci51cGRhdGVNb2RlbCgpIHdoaWNoIG5vcm1hbGx5IGRvZXMgdGhhdCBmb3IgdXNcbiAgICAgICAgaWYgKHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgICAgIHRoaXMudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLmluaXQodHJ1ZSk7XG4gICAgdGhpcy5fdXBkYXRlQnV0dG9uc1Nob3dTdGF0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbnVtYmVyTG9naWNWYWx1ZUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9hdXRvQ291bnRUaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc3RlcEluY3JlbWVudFRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zdGFydEF1dG9jb3VudFRpbWVvdXQpO1xuICB9XG5cbiAgLy8gTm90ZTogcmVjdXJzaXZlIHRocm91Z2ggc2V0VGltZW91dCgpLlxuICBwdWJsaWMgZG9JbmNyZW1lbnRBdXRvKCk6IHZvaWQge1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IHRydWU7XG5cbiAgICB0aGlzLmluY3JlbWVudCh0aGlzLl9zdGVwRmFjdG9yKTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9hdXRvQ291bnRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgICAgdGhpcy5kb0luY3JlbWVudEF1dG8oKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5fbXNEb1N0ZXApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLm15S2V5RG93bldoaXRlTGlzdC5maW5kKChrKSA9PiBrID09PSBldmVudC5rZXlDb2RlKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHN1cGVyLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZU1vZGVsKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm51bWJlckxvZ2ljLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHJlY3Vyc2l2ZSB0aHJvdWdoIHNldFRpbWVvdXQoKS5cbiAgcHVibGljIGRvRGVjcmVtZW50QXV0bygpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXlBdXRvQ291bnQgPSB0cnVlO1xuXG4gICAgdGhpcy5kZWNyZW1lbnQodGhpcy5fc3RlcEZhY3Rvcik7XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fYXV0b0NvdW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICAgIHRoaXMuZG9EZWNyZW1lbnRBdXRvKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMuX21zRG9TdGVwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wQXV0b0NvdW50aW5nKCk6IHZvaWQge1xuICAgIHRoaXMubWluU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBsdXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IGZhbHNlO1xuICAgIHRoaXMuX3N0ZXBGYWN0b3IgPSB0aGlzLl9zdGVwRmFjdG9yc1swXTtcbiAgfVxuXG4gIC8vIFNldHMgdGhlIGN1cnJlbnQgbnVtYmVyIHZhbHVlIHdpdGggZ2l2ZW4gbmV3VmFsdWUsIG9wdGlvbmFsbHkgc2lsZW50IChubyB2YWx1ZUNoYW5nZSBldmVudCBmaXJlZCkuXG4gIHB1YmxpYyBzZXRWYWx1ZShuZXdWYWx1ZTogbnVtYmVyLCBzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMubnVtYmVyTG9naWMuc2V0VmFsdWUobmV3VmFsdWUsIHNpbGVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5jcmVtZW50KHN0ZXBzOiBudW1iZXIgPSAxKTogdm9pZCB7XG4gICAgdGhpcy5udW1iZXJMb2dpYy5pbmNyZW1lbnQoc3RlcHMpO1xuICB9XG5cbiAgcHVibGljIGRlY3JlbWVudChzdGVwczogbnVtYmVyID0gMSk6IHZvaWQge1xuICAgIHRoaXMubnVtYmVyTG9naWMuZGVjcmVtZW50KHN0ZXBzKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBsdXNNb3VzZURvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGx1c1NlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gdHJ1ZTtcblxuICAgIC8vIGtlZXBzIGZvY3VzIG9uIGlucHV0IHRleHQgaW5zdGVhZCBvZiBidXR0b25cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5pbmNyZW1lbnQoKTtcbiAgICB0aGlzLl9tYXlBdXRvQ291bnQgPSB0cnVlO1xuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0QXV0b2NvdW50VGltZW91dCk7XG4gICAgdGhpcy5fc3RhcnRBdXRvY291bnRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX21heUF1dG9Db3VudCkge1xuICAgICAgICB0aGlzLmRvSW5jcmVtZW50QXV0bygpO1xuICAgICAgICB0aGlzLl9kb0luY3JlYXNlU3RlcEZhY3RvcigpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2RlbGF5QmVmb3JlU3RhcnRBdXRvQ291bnRNcyk7XG4gIH1cblxuICBwdWJsaWMgb25NaW51c01vdXNlRG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5fbWFya2VkQXNVc2VyVG91Y2hlZCA9IHRydWU7XG4gICAgLy8ga2VlcHMgZm9jdXMgb24gaW5wdXQgdGV4dCBpbnN0ZWFkIG9mIGJ1dHRvblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgIHRoaXMuX21heUF1dG9Db3VudCA9IHRydWU7XG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRBdXRvY291bnRUaW1lb3V0KTtcbiAgICB0aGlzLl9zdGFydEF1dG9jb3VudFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgIHRoaXMuZG9EZWNyZW1lbnRBdXRvKCk7XG4gICAgICAgIHRoaXMuX2RvSW5jcmVhc2VTdGVwRmFjdG9yKCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fZGVsYXlCZWZvcmVTdGFydEF1dG9Db3VudE1zKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHJlY3Vyc2l2ZS5cbiAgcHJpdmF0ZSBfZG9JbmNyZWFzZVN0ZXBGYWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcEluY3JlbWVudFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbWF5QXV0b0NvdW50KSB7XG4gICAgICAgIHRoaXMuX3N0ZXBGYWN0b3IgPSB0aGlzLl9nZXROZXh0U3RlcEZhY3Rvck1vdXNlRG93bigpO1xuICAgICAgICB0aGlzLl9kb0luY3JlYXNlU3RlcEZhY3RvcigpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX21zQ2hhbmdlU3RlcEZhY3Rvcik7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0U3RlcEZhY3Rvck1vdXNlRG93bigpOiBudW1iZXIge1xuICAgIGNvbnN0IGN1cklkeDogbnVtYmVyID0gdGhpcy5fc3RlcEZhY3RvcnMuaW5kZXhPZih0aGlzLl9zdGVwRmFjdG9yKTtcbiAgICBpZiAoY3VySWR4IDwgdGhpcy5fc3RlcEZhY3RvcnMubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBGYWN0b3JzW2N1cklkeCArIDFdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RlcEZhY3RvcjtcbiAgfVxuXG4gIC8vIFNob3cgb3IgaGlkZSArIGFuZCAtIGJ1dHRvbnMuIE1pZ2h0IGhpZGUgYnV0dG9ucyBpZiBudW1iZXIgaW5wdXQgbG9zdCBmb2N1cyBhbmQgYnV0dG9uIHNob3cgbW9kZSBpcyBvbiBmb2N1cyBvbmx5LlxuICBwcml2YXRlIF91cGRhdGVCdXR0b25zU2hvd1N0YXRlKCk6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5idXR0b25TaG93TW9kZSkge1xuICAgICAgY2FzZSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLkFsd2F5czpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbnMgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSW5wdXROdW1iZXJQaWNrZXJCdXR0b25TaG93TW9kZS5PbkZvY3VzT25seTpcbiAgICAgICAgdGhpcy5zaG93QnV0dG9ucyA9IHRoaXMuX251bWJlcklucHV0SGFzRm9jdXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJbnB1dE51bWJlclBpY2tlckJ1dHRvblNob3dNb2RlLk5ldmVyOlxuICAgICAgICB0aGlzLnNob3dCdXR0b25zID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -18,6 +18,7 @@ export class BaseSimpleGridComponent {
18
18
  this.selectRow = new EventEmitter();
19
19
  this.dblClickRow = new EventEmitter();
20
20
  this.saveRow = new EventEmitter();
21
+ this.rowVisible = new EventEmitter();
21
22
  this.columns = [];
22
23
  this.headerColumns = [];
23
24
  this._data = [];
@@ -135,7 +136,8 @@ BaseSimpleGridComponent.propDecorators = {
135
136
  selectRow: [{ type: Output }],
136
137
  dblClickRow: [{ type: Output }],
137
138
  saveRow: [{ type: Output }],
139
+ rowVisible: [{ type: Output }],
138
140
  handleMouseMove: [{ type: HostListener, args: ['document:mousemove', ['$event'],] }],
139
141
  handleMouseUp: [{ type: HostListener, args: ['document:mouseup', ['$event'],] }]
140
142
  };
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQW9DLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRzFGLE1BQU0sT0FBZ0IsdUJBQXVCO0lBRDdDO1FBRW1CLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQWtCeEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHakMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUczQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRzdCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbkM7OztXQUdHO1FBRUksaUJBQVksR0FBWSxLQUFLLENBQUM7UUFROUIsV0FBTSxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUdsRyxjQUFTLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFHckQsZ0JBQVcsR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQUd2RCxZQUFPLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFlbkQsWUFBTyxHQUFnQyxFQUFFLENBQUM7UUFDMUMsa0JBQWEsR0FBZ0MsRUFBRSxDQUFDO1FBRTdDLFVBQUssR0FBYSxFQUFFLENBQUM7UUFHdkIsY0FBUyxHQUFZLEtBQUssQ0FBQztJQWdGckMsQ0FBQztJQXpKQyxJQUFnRCxPQUFPLENBQUMsZ0JBQXNEO1FBQzVHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ1csSUFBSSxDQUFDLEtBQWU7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQXdCRCxJQUNXLFlBQVksQ0FBQyxLQUFrQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFlTSxlQUFlLENBQUMsS0FBaUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pIO0lBQ0gsQ0FBQztJQUdNLGFBQWEsQ0FBQyxLQUFpQjtRQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQVdNLG9CQUFvQixDQUFDLEtBQWlCLEVBQUUsTUFBaUM7UUFDOUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDcEUsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQWEsRUFBRSxJQUFpQjtRQUN2RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBNEI7UUFDNUMsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFXLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQVcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN0QyxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTzthQUNSO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNsQyxPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNsQyxPQUFRLEdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QyxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQW9DO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDL0QsSUFBSSxpQkFBaUIsR0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUU7b0JBQ2hDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztvQkFDdEIsTUFBTTtpQkFDUDthQUNGO1lBQ0QsNENBQTRDO1lBQzVDLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQzVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLHFDQUFxQztvQkFDaEYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbkcsMENBQTBDO3dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO3FCQUM3RDtpQkFDRjthQUNGO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBaUMsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2pILE1BQU0sSUFBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2pGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBM0pGLFNBQVM7OztzQkFJUCxlQUFlLFNBQUMseUJBQXlCO21CQUt6QyxLQUFLOzhCQVVMLEtBQUs7d0JBR0wsS0FBSzt5QkFHTCxLQUFLOzBCQUdMLEtBQUs7eUJBR0wsS0FBSzsyQkFPTCxLQUFLOzJCQUdMLEtBQUs7cUJBS0wsTUFBTTt3QkFHTixNQUFNOzBCQUdOLE1BQU07c0JBR04sTUFBTTs4QkFHTixZQUFZLFNBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7NEJBTzdDLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlfSBmcm9tIFwiLi9zaW1wbGUtZ3JpZC1jb2x1bW4uZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7Q2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0LCBtb3ZlSXRlbUluQXJyYXl9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTaW1wbGVHcmlkQ29tcG9uZW50IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IE1JTl9DT0xVTU5fV0lEVEg6IG51bWJlciA9IDYwO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmUpIHNldCBjb250ZW50KGNvbHVtbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlPikge1xyXG4gICAgdGhpcy5fc2V0Q29sdW1ucyhjb2x1bW5Db21wb25lbnRzLnRvQXJyYXkoKSk7XHJcbiAgICB0aGlzLl9wcmVwYXJlRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IE9iamVjdFtdKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLl9wcmVwYXJlRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRhKCk6IE9iamVjdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZHJhZ0Ryb3BFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbmxpbmVFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGF1dG9BZGRSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdWxkIGNvbXBvbmVudCBlbWl0IGRyYWcgYW5kIGRyb3AgYWN0aW9ucyBpbnN0ZWFkIG9mIGhhbmRsZVxyXG4gICAqICh1cGRhdGUgY29sbGVjdGlvbikgYnkgaXRzZWxmXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1pdERyYWdEcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBleHRyYUNvbHVtbnModmFsdWU6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSkge1xyXG4gICAgdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25Ecm9wOiBFdmVudEVtaXR0ZXI8e2Zyb206IG51bWJlciwgdG86IG51bWJlcn0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7ZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdFJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkYmxDbGlja1JvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzYXZlUm93OiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXNpemFibGUgJiYgZXZlbnQuYnV0dG9ucyA9PT0gMSAmJiB0aGlzLl9jb2x1bW5Gb3JSZXNpemUpIHtcclxuICAgICAgdGhpcy5fY29sdW1uRm9yUmVzaXplLndpZHRoID0gdGhpcy5fY29sdW1uRm9yUmVzaXplLm9yaWdpbmFsV2lkdGggLSAodGhpcy5fc3RhcnRNb3VzZVBvc2l0aW9uWCAtIGV2ZW50LmNsaWVudFgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXJ0TW91c2VQb3NpdGlvblggPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jb2x1bW5Gb3JSZXNpemUgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gW107XHJcbiAgcHVibGljIGhlYWRlckNvbHVtbnM6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSA9IFtdO1xyXG5cclxuICBwcm90ZWN0ZWQgX2RhdGE6IE9iamVjdFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbkZvclJlc2l6ZTogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZTtcclxuICBwcml2YXRlIF9wcmVwYXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N0YXJ0TW91c2VQb3NpdGlvblg6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIGhhbmRsZVNpemVyTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW46IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmUpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFdpZHRoT2ZBbGxDb2x1bW5zKCk7XHJcbiAgICB0aGlzLl9zdGFydE1vdXNlUG9zaXRpb25YID0gZXZlbnQuY2xpZW50WDtcclxuICAgIHRoaXMuX2NvbHVtbkZvclJlc2l6ZSA9IGNvbHVtbjtcclxuICAgIHRoaXMuX2NvbHVtbkZvclJlc2l6ZS5vcmlnaW5hbFdpZHRoID0gdGhpcy5fY29sdW1uRm9yUmVzaXplLndpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhbkRyYWdEcm9wKGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxPYmplY3RbXT4pOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZyb206IG51bWJlciA9IGV2ZW50LnByZXZpb3VzSW5kZXg7XHJcbiAgICAgIGNvbnN0IHRvOiBudW1iZXIgPSBldmVudC5jdXJyZW50SW5kZXg7XHJcbiAgICAgIGlmIChmcm9tID09PSB0bykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbWl0RHJhZ0Ryb3ApIHtcclxuICAgICAgICB0aGlzLm9uRHJvcC5uZXh0KHtmcm9tOiBmcm9tLCB0bzogdG99KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5kYXRhLCBmcm9tLCB0byk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NpbmdsZUNvbHVtblJvdyhyb3c6IE9iamVjdCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHJvdy5oYXNPd25Qcm9wZXJ0eSgnc2luZ2xlQ29sdW1uSW5kZXgnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaW5nbGVDb2x1bW5JbmRleChyb3c6IE9iamVjdCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHJvdyBhcyBhbnkpLnNpbmdsZUNvbHVtbkluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q29sdW1ucyhjb2x1bW5zOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1ucy5wdXNoKC4uLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5jb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgPCBiLm9yZGVyID8gLTEgOiAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ByZXBhcmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oZWFkZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLnNpbmdsZUNvbHVtbik7XHJcbiAgICAgIGxldCBzaW5nbGVDb2x1bW5JbmRleDogbnVtYmVyID0gLTE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tpXS5zaW5nbGVDb2x1bW4pIHtcclxuICAgICAgICAgIHNpbmdsZUNvbHVtbkluZGV4ID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIHNpbmdsZSBjb2x1bW4gZGF0YVxyXG4gICAgICBpZiAoc2luZ2xlQ29sdW1uSW5kZXggPiAtMSAmJiB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaWVsZDogc3RyaW5nID0gdGhpcy5jb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4XS5maWVsZDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgeyAvLyB0aGVuIG1hcmsgcm93IGFzIHNpbmdsZSBjb2x1bW4gcm93XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YVtpXVtmaWVsZF0gIT09IG51bGwgJiYgdGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICAvLyBiaXQgbmFzdHkgdG8gYWRkIHByb3AsIGJ1dCBjb29sIGZvciBub3dcclxuICAgICAgICAgICAgKHRoaXMuZGF0YVtpXSBhcyBhbnkpLnNpbmdsZUNvbHVtbkluZGV4ID0gc2luZ2xlQ29sdW1uSW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFdpZHRoT2ZBbGxDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSkgPT4ge1xyXG4gICAgICBpZiAoKGNvbHVtbi53aWR0aCA9PT0gdW5kZWZpbmVkIHx8IGNvbHVtbi53aWR0aCA9PT0gbnVsbCkgJiYgY29sdW1uLmVsZW1lbnRSZWYgJiYgY29sdW1uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHJlY3Q6IENsaWVudFJlY3QgPSBjb2x1bW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbHVtbi53aWR0aCA9IHJlY3Qud2lkdGg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQW9DLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRzFGLE1BQU0sT0FBZ0IsdUJBQXVCO0lBRDdDO1FBRW1CLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQWtCeEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHakMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUczQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRzdCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbkM7OztXQUdHO1FBRUksaUJBQVksR0FBWSxLQUFLLENBQUM7UUFROUIsV0FBTSxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUdsRyxjQUFTLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFHckQsZ0JBQVcsR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQUd2RCxZQUFPLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFHbkQsZUFBVSxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBZXRELFlBQU8sR0FBZ0MsRUFBRSxDQUFDO1FBQzFDLGtCQUFhLEdBQWdDLEVBQUUsQ0FBQztRQUU3QyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBR3ZCLGNBQVMsR0FB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Y2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZX0gZnJvbSBcIi4vc2ltcGxlLWdyaWQtY29sdW1uLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0Nka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBNSU5fQ09MVU1OX1dJRFRIOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlKSBzZXQgY29udGVudChjb2x1bW5Db21wb25lbnRzOiBRdWVyeUxpc3Q8U2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZT4pIHtcclxuICAgIHRoaXMuX3NldENvbHVtbnMoY29sdW1uQ29tcG9uZW50cy50b0FycmF5KCkpO1xyXG4gICAgdGhpcy5fcHJlcGFyZURhdGEoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fcHJlcGFyZURhdGEoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRyYWdEcm9wRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZXNpemFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaW5saW5lRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93VG9vbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhdXRvQWRkUm93OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3VsZCBjb21wb25lbnQgZW1pdCBkcmFnIGFuZCBkcm9wIGFjdGlvbnMgaW5zdGVhZCBvZiBoYW5kbGVcclxuICAgKiAodXBkYXRlIGNvbGxlY3Rpb24pIGJ5IGl0c2VsZlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVtaXREcmFnRHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZXh0cmFDb2x1bW5zKHZhbHVlOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlW10pIHtcclxuICAgIHRoaXMuX3NldENvbHVtbnModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRHJvcDogRXZlbnRFbWl0dGVyPHtmcm9tOiBudW1iZXIsIHRvOiBudW1iZXJ9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2Zyb206IG51bWJlcjsgdG86IG51bWJlcn0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RSb3c6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGJsQ2xpY2tSb3c6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2F2ZVJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByb3dWaXNpYmxlOiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXNpemFibGUgJiYgZXZlbnQuYnV0dG9ucyA9PT0gMSAmJiB0aGlzLl9jb2x1bW5Gb3JSZXNpemUpIHtcclxuICAgICAgdGhpcy5fY29sdW1uRm9yUmVzaXplLndpZHRoID0gdGhpcy5fY29sdW1uRm9yUmVzaXplLm9yaWdpbmFsV2lkdGggLSAodGhpcy5fc3RhcnRNb3VzZVBvc2l0aW9uWCAtIGV2ZW50LmNsaWVudFgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXJ0TW91c2VQb3NpdGlvblggPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jb2x1bW5Gb3JSZXNpemUgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gW107XHJcbiAgcHVibGljIGhlYWRlckNvbHVtbnM6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSA9IFtdO1xyXG5cclxuICBwcm90ZWN0ZWQgX2RhdGE6IE9iamVjdFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbkZvclJlc2l6ZTogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZTtcclxuICBwcml2YXRlIF9wcmVwYXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N0YXJ0TW91c2VQb3NpdGlvblg6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIGhhbmRsZVNpemVyTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW46IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmUpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFdpZHRoT2ZBbGxDb2x1bW5zKCk7XHJcbiAgICB0aGlzLl9zdGFydE1vdXNlUG9zaXRpb25YID0gZXZlbnQuY2xpZW50WDtcclxuICAgIHRoaXMuX2NvbHVtbkZvclJlc2l6ZSA9IGNvbHVtbjtcclxuICAgIHRoaXMuX2NvbHVtbkZvclJlc2l6ZS5vcmlnaW5hbFdpZHRoID0gdGhpcy5fY29sdW1uRm9yUmVzaXplLndpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNhbkRyYWdEcm9wKGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxPYmplY3RbXT4pOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGZyb206IG51bWJlciA9IGV2ZW50LnByZXZpb3VzSW5kZXg7XHJcbiAgICAgIGNvbnN0IHRvOiBudW1iZXIgPSBldmVudC5jdXJyZW50SW5kZXg7XHJcbiAgICAgIGlmIChmcm9tID09PSB0bykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lbWl0RHJhZ0Ryb3ApIHtcclxuICAgICAgICB0aGlzLm9uRHJvcC5uZXh0KHtmcm9tOiBmcm9tLCB0bzogdG99KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5kYXRhLCBmcm9tLCB0byk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NpbmdsZUNvbHVtblJvdyhyb3c6IE9iamVjdCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHJvdy5oYXNPd25Qcm9wZXJ0eSgnc2luZ2xlQ29sdW1uSW5kZXgnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaW5nbGVDb2x1bW5JbmRleChyb3c6IE9iamVjdCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHJvdyBhcyBhbnkpLnNpbmdsZUNvbHVtbkluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0Q29sdW1ucyhjb2x1bW5zOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1ucy5wdXNoKC4uLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5jb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgPCBiLm9yZGVyID8gLTEgOiAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ByZXBhcmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oZWFkZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLnNpbmdsZUNvbHVtbik7XHJcbiAgICAgIGxldCBzaW5nbGVDb2x1bW5JbmRleDogbnVtYmVyID0gLTE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tpXS5zaW5nbGVDb2x1bW4pIHtcclxuICAgICAgICAgIHNpbmdsZUNvbHVtbkluZGV4ID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIHNpbmdsZSBjb2x1bW4gZGF0YVxyXG4gICAgICBpZiAoc2luZ2xlQ29sdW1uSW5kZXggPiAtMSAmJiB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaWVsZDogc3RyaW5nID0gdGhpcy5jb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4XS5maWVsZDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgeyAvLyB0aGVuIG1hcmsgcm93IGFzIHNpbmdsZSBjb2x1bW4gcm93XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YVtpXVtmaWVsZF0gIT09IG51bGwgJiYgdGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICAvLyBiaXQgbmFzdHkgdG8gYWRkIHByb3AsIGJ1dCBjb29sIGZvciBub3dcclxuICAgICAgICAgICAgKHRoaXMuZGF0YVtpXSBhcyBhbnkpLnNpbmdsZUNvbHVtbkluZGV4ID0gc2luZ2xlQ29sdW1uSW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFdpZHRoT2ZBbGxDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSkgPT4ge1xyXG4gICAgICBpZiAoKGNvbHVtbi53aWR0aCA9PT0gdW5kZWZpbmVkIHx8IGNvbHVtbi53aWR0aCA9PT0gbnVsbCkgJiYgY29sdW1uLmVsZW1lbnRSZWYgJiYgY29sdW1uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHJlY3Q6IENsaWVudFJlY3QgPSBjb2x1bW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbHVtbi53aWR0aCA9IHJlY3Qud2lkdGg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -295,9 +295,9 @@ SimpleGridComponent.decorators = [
295
295
  [cdkDropListData]="data"
296
296
  [cdkDropListEnterPredicate]="handleCanDragDrop"
297
297
  (cdkDropListDropped)="handleDrop($event)">
298
- <tr class="simple-grid-row" [class.selected]="rowIndex === selectedRowIndex && !editing"
298
+ <tr class="simple-grid-row" [class.selected]="rowIndex === selectedRowIndex && !editing" observeVisibility
299
299
  [class.editing]="rowIndex === editRowIndex" *ngFor="let row of data; let rowIndex = index" cdkDrag
300
- (click)="handleClickRow($event, rowIndex)" (dblclick)="handleDblClickRow($event, rowIndex)">
300
+ (click)="handleClickRow($event, rowIndex)" (dblclick)="handleDblClickRow($event, rowIndex)" (visible)="rowVisible.next(row)">
301
301
  <co-form class="simple-grid-row-form">
302
302
  <ng-container *ngIf="isSingleColumnRow(row)">
303
303
  <td class="simple-grid-single-column-cell" [attr.colspan]="headerColumns.length">
@@ -343,4 +343,4 @@ SimpleGridComponent.propDecorators = {
343
343
  showClass: [{ type: HostBinding, args: ["class.co-simple-grid",] }],
344
344
  handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]
345
345
  };
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFBRSxZQUFZLEVBQzFCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUE4RTdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUE4QzlELFlBQ1UsZ0JBQW1DLEVBQ25DLFdBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUEvQ3hCLHFCQUFnQixHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBb0MxRCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUc3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxZQUFPLEdBQVksS0FBSyxDQUFDO0lBT2pDLENBQUM7SUFoREQsSUFBZ0MsV0FBVyxDQUFDLEtBQUs7UUFDL0MsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLEtBQUss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QUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXJGQyxpQkFBaUI7WUFNVixpQkFBaUI7OzswQkFtRnZCLFlBQVksU0FBQyxZQUFZO3dCQU96QixXQUFXLFNBQUMsc0JBQXNCOzRCQUtsQyxZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybU1hc3RlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0tbWFzdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVNpbXBsZUdyaWRDb21wb25lbnQgfSBmcm9tIFwiLi9iYXNlLXNpbXBsZS1ncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5BbGlnbiB9IGZyb20gXCIuL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXNpbXBsZS1ncmlkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1ncmlkLXRvb2xiYXIgKm5nSWY9XCJpbmxpbmVFZGl0ICYmIHNob3dUb29sYmFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGFkZENsaWNrKT1cImFkZFJvdygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGVkaXRDbGljayk9XCJlZGl0Um93KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoc2F2ZUNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cImNhbmNlbEVkaXRSb3coKVwiXHJcbiAgICA+PC9jby1ncmlkLXRvb2xiYXI+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJzaW1wbGUtZ3JpZC10YWJsZVwiPlxyXG4gICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgPGNvbCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnM7IGxldCBpbmRleCA9IGluZGV4XCIgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+XHJcbiAgICAgIDwvY29sZ3JvdXA+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiICNoZWFkZXJDZWxsIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlclwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLXdyYXBwZXJcIiBbY2xhc3MucmVzaXphYmxlXT1cInJlc2l6YWJsZVwiICBbbmdDbGFzc109XCJjb2x1bW4udGV4dEFsaWduID8gY29sdW1uLnRleHRBbGlnbiA6IGRlZmF1bHRUZXh0QWxpZ25cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9IZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlci1sYWJlbFwiIFtuZ0NsYXNzXT1cImNvbHVtbi50ZXh0QWxpZ24gPyBjb2x1bW4udGV4dEFsaWduIDogZGVmYXVsdFRleHRBbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY29sdW1uLmhlYWRlclRleHQgfHwgJyZuYnNwOydcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlc2l6YWJsZSAmJiBjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlU2l6ZXJNb3VzZURvd24oJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5ICNkcm9wTGlzdCBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1kcmFnLWRyb3AtbGlzdFwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ0Ryb3BFbmFibGVkXCJcclxuICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJoYW5kbGVDYW5EcmFnRHJvcFwiXHJcbiAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZURyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInNpbXBsZS1ncmlkLXJvd1wiIFtjbGFzcy5zZWxlY3RlZF09XCJyb3dJbmRleCA9PT0gc2VsZWN0ZWRSb3dJbmRleCAmJiAhZWRpdGluZ1wiXHJcbiAgICAgICAgICBbY2xhc3MuZWRpdGluZ109XCJyb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleFwiIGNka0RyYWdcclxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4KVwiIChkYmxjbGljayk9XCJoYW5kbGVEYmxDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4KVwiPlxyXG4gICAgICAgICAgPGNvLWZvcm0gY2xhc3M9XCJzaW1wbGUtZ3JpZC1yb3ctZm9ybVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaW5nbGVDb2x1bW5Sb3cocm93KVwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNpbXBsZS1ncmlkLXNpbmdsZS1jb2x1bW4tY2VsbFwiIFthdHRyLmNvbHNwYW5dPVwiaGVhZGVyQ29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uc1tzaW5nbGVDb2x1bW5JbmRleChyb3cpXVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID48L2NvLXNpbXBsZS1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTaW5nbGVDb2x1bW5Sb3cocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBoZWFkZXJDb2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWNlbGxcIiAqbmdJZj1cImNvbHVtbkluZGV4ICE9PSBzaW5nbGVDb2x1bW5JbmRleChyb3cpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiaW5saW5lRWRpdCAmJiBlZGl0aW5nICYmIHJvd0luZGV4ID09PSBlZGl0Um93SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZEVkaXRNb2RlXT1cImVkaXRDZWxsSW5kZXggPT09IGNvbHVtbkluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2VsbENsaWNrKT1cImhhbmRsZUNlbGxDbGljayhjb2x1bW5JbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9jby1zaW1wbGUtZ3JpZC1jZWxsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLnJlc2l6YWJsZVwiIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLXNpemVyLXBsYWNlaG9sZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvY28tZm9ybT5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRm9ybU1hc3RlclNlcnZpY2VcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaW1wbGVHcmlkQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNpbXBsZUdyaWRDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGV4dEFsaWduOiBDb2x1bW5BbGlnbiA9IENvbHVtbkFsaWduLkxlZnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJoZWFkZXJDZWxsXCIpIHNldCBoZWFkZXJDZWxscyhjZWxscykge1xyXG4gICAgY29uc3QgaGVhZGVyRWxlbWVudHMgPSBjZWxscy50b0FycmF5KCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlckVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uc1tpXS5lbGVtZW50UmVmID0gaGVhZGVyRWxlbWVudHNbaV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1zaW1wbGUtZ3JpZFwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW5saW5lRWRpdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQoIWV2ZW50LnNoaWZ0S2V5LCB0aGlzLmVkaXRDZWxsSW5kZXgpXHJcbiAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLmNhbmNlbEVkaXRSb3coKTtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVBbmRTYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBlZGl0Um93SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyBlZGl0Q2VsbEluZGV4OiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgc2VsZWN0ZWRSb3dJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIHJvd1RvRWRpdDogYW55O1xyXG5cclxuICBwcml2YXRlIF9kb3VibGVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfbmV3Um93OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2Zvcm1NYXN0ZXI6IEZvcm1NYXN0ZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2luZ2xlQ29sdW1uKGNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbHVtbi5zaW5nbGVDb2x1bW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcm93Q29udGFpbnNTaW5nbGVDb2x1bW4ocm93LCBjb2x1bW5zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzaW5nbGVDb2x1bW4gPSBjb2x1bW5zLmZpbmQoY29sdW1uID0+IHRoaXMuaXNTaW5nbGVDb2x1bW4oY29sdW1uKSAmJiAhIXJvd1tjb2x1bW4uZmllbGRdKVxyXG4gICAgcmV0dXJuICEhc2luZ2xlQ29sdW1uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZFJvdygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh2YWxpZCkge1xyXG4gICAgICB0aGlzLmRhdGEucHVzaCh7fSk7XHJcbiAgICAgIHRoaXMuX25ld1JvdyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuX25leHRBdmFpbGFibGVDZWxsVG9FZGl0KHRydWUpLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcclxuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV07XHJcbiAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZUFuZFNhdmUoc3RvcGVkaXRpbmc6IGJvb2xlYW4gPSB0cnVlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGluZykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gdGhpcy5fZm9ybU1hc3Rlci5zdWJtaXRTbGF2ZXMoKTtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh2YWxpZCkge1xyXG4gICAgICB0aGlzLl9zYXZlUm93KHN0b3BlZGl0aW5nKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsRWRpdFJvdygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9uZXdSb3cpIHtcclxuICAgICAgdGhpcy5kYXRhLnNwbGljZSh0aGlzLmRhdGEubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFbdGhpcy5lZGl0Um93SW5kZXhdID0gdGhpcy5yb3dUb0VkaXQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNsaWNrUm93KGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2RvdWJsZUNsaWNrZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RUaGVSb3coaW5kZXgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RUaGVSb3coaW5kZXg6IG51bWJlciwgZW1pdDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93SW5kZXggIT09IGluZGV4ICYmICgodGhpcy5lZGl0aW5nICYmIHRoaXMudmFsaWRhdGVBbmRTYXZlKCkpIHx8ICF0aGlzLmVkaXRpbmcpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICBpZiAoZW1pdCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0Um93Lm5leHQodGhpcy5kYXRhW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGJsQ2xpY2tSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RvdWJsZUNsaWNrZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5kYmxDbGlja1Jvdy5uZXh0KHRoaXMuZGF0YVtpbmRleF0pO1xyXG4gICAgdGhpcy5zZWxlY3RUaGVSb3coaW5kZXgsIGZhbHNlKTtcclxuICAgIGlmICh0aGlzLmlubGluZUVkaXQpIHtcclxuICAgICAgdGhpcy5lZGl0Um93KGV2ZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc2V0RGJsQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0Um93KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleDtcclxuICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW3RoaXMuZWRpdFJvd0luZGV4XTtcclxuICAgIHRoaXMuZWRpdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKS50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2VsbENsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXREYmxDbGljaygpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9kb3VibGVDbGlja2VkID0gZmFsc2U7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmV4dDsgTW92ZSB0byBuZXh0IG9yIHByZXZpb3VzIGNlbGxcclxuICAgKiBAcGFyYW0gc3RhcnQ7IFN0YXJ0IGZyb20gY2VsbGluZGV4XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdChuZXh0OiBib29sZWFuLCBzdGFydDogbnVtYmVyID0gLTEpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCBudW1FZGl0YWJsZUNvbHVtbnM6IG51bWJlciA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5yZWFkb25seSkubGVuZ3RoO1xyXG4gICAgICBjb25zdCB3YW50ZWRJbmRleCA9IHN0YXJ0ICsgKG5leHQgPyAxIDogLTEpO1xyXG4gICAgICBpZiAod2FudGVkSW5kZXggPj0gbnVtRWRpdGFibGVDb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5fZ2V0TmV4dEVkaXRSb3dJbmRleCgpXHJcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KDApKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh3YW50ZWRJbmRleCA8IDApIHtcclxuICAgICAgICB0aGlzLl9nZXRQcmV2aW91c0VkaXRSb3dJbmRleCgpXHJcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldFByZXZpb3VzRWRpdENlbGxJbmRleCh0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMSkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobmV4dCA/IHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KHN0YXJ0ICsgMSkgOiB0aGlzLl9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQgLSAxKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0TmV4dEVkaXRDZWxsSW5kZXgoc3RhcnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBzdGFydDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoIXRoaXMuY29sdW1uc1tpXS5yZWFkb25seSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBzdGFydDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbHVtbnNbaV0ucmVhZG9ubHkpIHtcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0TmV4dEVkaXRSb3dJbmRleCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBsZXQgbmV3Um93SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICAgIGlmICh0aGlzLmVkaXRSb3dJbmRleCArIDEgPj0gdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9BZGRSb3cpIHtcclxuICAgICAgICAgIHRoaXMuYWRkUm93KCk7XHJcbiAgICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdSb3dJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXggKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdSb3dJbmRleCAhPT0gdGhpcy5lZGl0Um93SW5kZXgpIHsgLy8gZ28gdG8gZGlmZmVyZW50IHJvdyB2YWxpZGF0ZSBjdXJyZW50IG9uZSBmaXJzdFxyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQW5kU2F2ZShmYWxzZSkpIHtcclxuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW25ld1Jvd0luZGV4XTtcclxuICAgICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UHJldmlvdXNFZGl0Um93SW5kZXgoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgbGV0IG5ld1Jvd0luZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgICBpZiAodGhpcy5lZGl0Um93SW5kZXggLSAxIDwgMCkge1xyXG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmVkaXRSb3dJbmRleCAtIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1Jvd0luZGV4ICE9PSB0aGlzLmVkaXRSb3dJbmRleCkgeyAvLyBnbyB0byBkaWZmZXJlbnQgcm93IHZhbGlkYXRlIGN1cnJlbnQgb25lIGZpcnN0XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBbmRTYXZlKGZhbHNlKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbbmV3Um93SW5kZXhdO1xyXG4gICAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zYXZlUm93KHN0b3BlZGl0aW5nOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgLy8gZW1pdCBzYXZlRXZlbnRcclxuICAgIGlmICh0aGlzLnJvd1RvRWRpdCkge1xyXG4gICAgICB0aGlzLnNhdmVSb3cubmV4dCh0aGlzLnJvd1RvRWRpdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcclxuICAgIGlmIChzdG9wZWRpdGluZykge1xyXG4gICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IC0xO1xyXG4gICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSAtMTtcclxuICAgICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucm93VG9FZGl0ID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFBRSxZQUFZLEVBQzFCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUE4RTdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUE4QzlELFlBQ1UsZ0JBQW1DLEVBQ25DLFdBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUEvQ3hCLHFCQUFnQixHQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDO1FBb0MxRCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUc3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxZQUFPLEdBQVksS0FBSyxDQUFDO0lBT2pDLENBQUM7SUFoREQsSUFBZ0MsV0FBVyxDQUFDLEtBQUs7UUFDL0MsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLEtBQUss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QUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXJGQyxpQkFBaUI7WUFNVixpQkFBaUI7OzswQkFtRnZCLFlBQVksU0FBQyxZQUFZO3dCQU96QixXQUFXLFNBQUMsc0JBQXNCOzRCQUtsQyxZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybU1hc3RlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0tbWFzdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVNpbXBsZUdyaWRDb21wb25lbnQgfSBmcm9tIFwiLi9iYXNlLXNpbXBsZS1ncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5BbGlnbiB9IGZyb20gXCIuL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXNpbXBsZS1ncmlkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby1ncmlkLXRvb2xiYXIgKm5nSWY9XCJpbmxpbmVFZGl0ICYmIHNob3dUb29sYmFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGFkZENsaWNrKT1cImFkZFJvdygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGVkaXRDbGljayk9XCJlZGl0Um93KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoc2F2ZUNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cImNhbmNlbEVkaXRSb3coKVwiXHJcbiAgICA+PC9jby1ncmlkLXRvb2xiYXI+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJzaW1wbGUtZ3JpZC10YWJsZVwiPlxyXG4gICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgPGNvbCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnM7IGxldCBpbmRleCA9IGluZGV4XCIgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+XHJcbiAgICAgIDwvY29sZ3JvdXA+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiICNoZWFkZXJDZWxsIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlclwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLXdyYXBwZXJcIiBbY2xhc3MucmVzaXphYmxlXT1cInJlc2l6YWJsZVwiICBbbmdDbGFzc109XCJjb2x1bW4udGV4dEFsaWduID8gY29sdW1uLnRleHRBbGlnbiA6IGRlZmF1bHRUZXh0QWxpZ25cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9IZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlci1sYWJlbFwiIFtuZ0NsYXNzXT1cImNvbHVtbi50ZXh0QWxpZ24gPyBjb2x1bW4udGV4dEFsaWduIDogZGVmYXVsdFRleHRBbGlnblwiXHJcbiAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY29sdW1uLmhlYWRlclRleHQgfHwgJyZuYnNwOydcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlc2l6YWJsZSAmJiBjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXJcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiaGFuZGxlU2l6ZXJNb3VzZURvd24oJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5ICNkcm9wTGlzdCBjZGtEcm9wTGlzdCBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1kcmFnLWRyb3AtbGlzdFwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ0Ryb3BFbmFibGVkXCJcclxuICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJoYW5kbGVDYW5EcmFnRHJvcFwiXHJcbiAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZURyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgIDx0ciBjbGFzcz1cInNpbXBsZS1ncmlkLXJvd1wiIFtjbGFzcy5zZWxlY3RlZF09XCJyb3dJbmRleCA9PT0gc2VsZWN0ZWRSb3dJbmRleCAmJiAhZWRpdGluZ1wiIG9ic2VydmVWaXNpYmlsaXR5XHJcbiAgICAgICAgICBbY2xhc3MuZWRpdGluZ109XCJyb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBsZXQgcm93SW5kZXggPSBpbmRleFwiIGNka0RyYWdcclxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4KVwiIChkYmxjbGljayk9XCJoYW5kbGVEYmxDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4KVwiICh2aXNpYmxlKT1cInJvd1Zpc2libGUubmV4dChyb3cpXCI+XHJcbiAgICAgICAgICA8Y28tZm9ybSBjbGFzcz1cInNpbXBsZS1ncmlkLXJvdy1mb3JtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NpbmdsZUNvbHVtblJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2ltcGxlLWdyaWQtc2luZ2xlLWNvbHVtbi1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJoZWFkZXJDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4KHJvdyldXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgPjwvY28tc2ltcGxlLWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1NpbmdsZUNvbHVtblJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tY2VsbFwiICpuZ0lmPVwiY29sdW1uSW5kZXggIT09IHNpbmdsZUNvbHVtbkluZGV4KHJvdylcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0ICYmIGVkaXRpbmcgJiYgcm93SW5kZXggPT09IGVkaXRSb3dJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkRWRpdE1vZGVdPVwiZWRpdENlbGxJbmRleCA9PT0gY29sdW1uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjZWxsQ2xpY2spPVwiaGFuZGxlQ2VsbENsaWNrKGNvbHVtbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2NvLXNpbXBsZS1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXItcGxhY2Vob2xkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtTWFzdGVyU2VydmljZVxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpbXBsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRUZXh0QWxpZ246IENvbHVtbkFsaWduID0gQ29sdW1uQWxpZ24uTGVmdDtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcImhlYWRlckNlbGxcIikgc2V0IGhlYWRlckNlbGxzKGNlbGxzKSB7XHJcbiAgICBjb25zdCBoZWFkZXJFbGVtZW50cyA9IGNlbGxzLnRvQXJyYXkoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jb2x1bW5zW2ldLmVsZW1lbnRSZWYgPSBoZWFkZXJFbGVtZW50c1tpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXNpbXBsZS1ncmlkXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pbmxpbmVFZGl0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldmVudC5jb2RlID09PSAnVGFiJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCghZXZlbnQuc2hpZnRLZXksIHRoaXMuZWRpdENlbGxJbmRleClcclxuICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsRWRpdFJvdygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGVkaXRSb3dJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIGVkaXRDZWxsSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFJvd0luZGV4OiBudW1iZXIgPSAtMTtcclxuICBwdWJsaWMgcm93VG9FZGl0OiBhbnk7XHJcblxyXG4gIHByaXZhdGUgX2RvdWJsZUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9uZXdSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZm9ybU1hc3RlcjogRm9ybU1hc3RlclNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTaW5nbGVDb2x1bW4oY29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sdW1uLnNpbmdsZUNvbHVtbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByb3dDb250YWluc1NpbmdsZUNvbHVtbihyb3csIGNvbHVtbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNpbmdsZUNvbHVtbiA9IGNvbHVtbnMuZmluZChjb2x1bW4gPT4gdGhpcy5pc1NpbmdsZUNvbHVtbihjb2x1bW4pICYmICEhcm93W2NvbHVtbi5maWVsZF0pXHJcbiAgICByZXR1cm4gISFzaW5nbGVDb2x1bW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkUm93KCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpO1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHZhbGlkKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5wdXNoKHt9KTtcclxuICAgICAgdGhpcy5fbmV3Um93ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSkudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZWRpdGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXTtcclxuICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbGlkYXRlQW5kU2F2ZShzdG9wZWRpdGluZzogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xyXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHZhbGlkKSB7XHJcbiAgICAgIHRoaXMuX3NhdmVSb3coc3RvcGVkaXRpbmcpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxFZGl0Um93KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX25ld1Jvdykge1xyXG4gICAgICB0aGlzLmRhdGEuc3BsaWNlKHRoaXMuZGF0YS5sZW5ndGggLSAxLCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YVt0aGlzLmVkaXRSb3dJbmRleF0gPSB0aGlzLnJvd1RvRWRpdDtcclxuICAgIH1cclxuICAgIHRoaXMuX25ld1JvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2xpY2tSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fZG91YmxlQ2xpY2tlZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFRoZVJvdyhpbmRleCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFRoZVJvdyhpbmRleDogbnVtYmVyLCBlbWl0OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dJbmRleCAhPT0gaW5kZXggJiYgKCh0aGlzLmVkaXRpbmcgJiYgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKSkgfHwgIXRoaXMuZWRpdGluZykpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgIGlmIChlbWl0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RSb3cubmV4dCh0aGlzLmRhdGFbdGhpcy5zZWxlY3RlZFJvd0luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYmxDbGlja1JvdyhldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZG91YmxlQ2xpY2tlZCA9IHRydWU7XHJcbiAgICB0aGlzLmRibENsaWNrUm93Lm5leHQodGhpcy5kYXRhW2luZGV4XSk7XHJcbiAgICB0aGlzLnNlbGVjdFRoZVJvdyhpbmRleCwgZmFsc2UpO1xyXG4gICAgaWYgKHRoaXMuaW5saW5lRWRpdCkge1xyXG4gICAgICB0aGlzLmVkaXRSb3coZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVzZXREYmxDbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVkaXRSb3coZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4O1xyXG4gICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbdGhpcy5lZGl0Um93SW5kZXhdO1xyXG4gICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuX25leHRBdmFpbGFibGVDZWxsVG9FZGl0KHRydWUpLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gaW5kZXg7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDZWxsQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXNldERibENsaWNrKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2RvdWJsZUNsaWNrZWQgPSBmYWxzZTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuZXh0OyBNb3ZlIHRvIG5leHQgb3IgcHJldmlvdXMgY2VsbFxyXG4gICAqIEBwYXJhbSBzdGFydDsgU3RhcnQgZnJvbSBjZWxsaW5kZXhcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX25leHRBdmFpbGFibGVDZWxsVG9FZGl0KG5leHQ6IGJvb2xlYW4sIHN0YXJ0OiBudW1iZXIgPSAtMSk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IG51bUVkaXRhYmxlQ29sdW1uczogbnVtYmVyID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLnJlYWRvbmx5KS5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IHdhbnRlZEluZGV4ID0gc3RhcnQgKyAobmV4dCA/IDEgOiAtMSk7XHJcbiAgICAgIGlmICh3YW50ZWRJbmRleCA+PSBudW1FZGl0YWJsZUNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLl9nZXROZXh0RWRpdFJvd0luZGV4KClcclxuICAgICAgICAgIC50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZ2V0TmV4dEVkaXRDZWxsSW5kZXgoMCkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHdhbnRlZEluZGV4IDwgMCkge1xyXG4gICAgICAgIHRoaXMuX2dldFByZXZpb3VzRWRpdFJvd0luZGV4KClcclxuICAgICAgICAgIC50aGVuKChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZ2V0UHJldmlvdXNFZGl0Q2VsbEluZGV4KHRoaXMuY29sdW1ucy5sZW5ndGggLSAxKSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZShuZXh0ID8gdGhpcy5fZ2V0TmV4dEVkaXRDZWxsSW5kZXgoc3RhcnQgKyAxKSA6IHRoaXMuX2dldFByZXZpb3VzRWRpdENlbGxJbmRleChzdGFydCAtIDEpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXROZXh0RWRpdENlbGxJbmRleChzdGFydDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHN0YXJ0OyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb2x1bW5zW2ldLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFByZXZpb3VzRWRpdENlbGxJbmRleChzdGFydDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHN0YXJ0OyBpID49IDA7IGktLSkge1xyXG4gICAgICBpZiAoIXRoaXMuY29sdW1uc1tpXS5yZWFkb25seSkge1xyXG4gICAgICAgIHJldHVybiBpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXROZXh0RWRpdFJvd0luZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGxldCBuZXdSb3dJbmRleDogbnVtYmVyID0gMDtcclxuICAgICAgaWYgKHRoaXMuZWRpdFJvd0luZGV4ICsgMSA+PSB0aGlzLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b0FkZFJvdykge1xyXG4gICAgICAgICAgdGhpcy5hZGRSb3coKTtcclxuICAgICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ld1Jvd0luZGV4ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmVkaXRSb3dJbmRleCArIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1Jvd0luZGV4ICE9PSB0aGlzLmVkaXRSb3dJbmRleCkgeyAvLyBnbyB0byBkaWZmZXJlbnQgcm93IHZhbGlkYXRlIGN1cnJlbnQgb25lIGZpcnN0XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBbmRTYXZlKGZhbHNlKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbbmV3Um93SW5kZXhdO1xyXG4gICAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRQcmV2aW91c0VkaXRSb3dJbmRleCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBsZXQgbmV3Um93SW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICAgIGlmICh0aGlzLmVkaXRSb3dJbmRleCAtIDEgPCAwKSB7XHJcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4IC0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmV3Um93SW5kZXggIT09IHRoaXMuZWRpdFJvd0luZGV4KSB7IC8vIGdvIHRvIGRpZmZlcmVudCByb3cgdmFsaWRhdGUgY3VycmVudCBvbmUgZmlyc3RcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUFuZFNhdmUoZmFsc2UpKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVtuZXdSb3dJbmRleF07XHJcbiAgICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NhdmVSb3coc3RvcGVkaXRpbmc6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICAvLyBlbWl0IHNhdmVFdmVudFxyXG4gICAgaWYgKHRoaXMucm93VG9FZGl0KSB7XHJcbiAgICAgIHRoaXMuc2F2ZVJvdy5uZXh0KHRoaXMucm93VG9FZGl0KTtcclxuICAgIH1cclxuICAgIHRoaXMuX25ld1JvdyA9IGZhbHNlO1xyXG4gICAgaWYgKHN0b3BlZGl0aW5nKSB7XHJcbiAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IC0xO1xyXG4gICAgICB0aGlzLmVkaXRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yb3dUb0VkaXQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -7,6 +7,7 @@ import { GridToolbarModule } from "../grid-toolbar/grid-toolbar.module";
7
7
  import { InputTextModule } from "../input-text/input-text.module";
8
8
  import { SimpleGridCellComponent } from "./simple-grid-cell.component";
9
9
  import { FormModule } from "../form/form.module";
10
+ import { ObserveVisibilityModule } from "../../directives/observe-visibility/observe-visibility.module";
10
11
  export class SimpleGridModule {
11
12
  }
12
13
  SimpleGridModule.decorators = [
@@ -16,7 +17,8 @@ SimpleGridModule.decorators = [
16
17
  DragDropModule,
17
18
  GridToolbarModule,
18
19
  InputTextModule,
19
- FormModule
20
+ FormModule,
21
+ ObserveVisibilityModule
20
22
  ],
21
23
  declarations: [
22
24
  SimpleGridComponent,
@@ -30,4 +32,4 @@ SimpleGridModule.decorators = [
30
32
  ]
31
33
  },] }
32
34
  ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQXFCL0MsTUFBTSxPQUFPLGdCQUFnQjs7O1lBbkI1QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osY0FBYztvQkFDZCxpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsVUFBVTtpQkFDWDtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osbUJBQW1CO29CQUNuQix1QkFBdUI7b0JBQ3ZCLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLG1CQUFtQjtvQkFDbkIsdUJBQXVCO29CQUN2Qix5QkFBeUI7aUJBQzFCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1NpbXBsZUdyaWRDb21wb25lbnR9IGZyb20gXCIuL3NpbXBsZS1ncmlkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQge1NpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmV9IGZyb20gXCIuL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtHcmlkVG9vbGJhck1vZHVsZX0gZnJvbSBcIi4uL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIubW9kdWxlXCI7XHJcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tIFwiLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0Lm1vZHVsZVwiO1xyXG5pbXBvcnQge1NpbXBsZUdyaWRDZWxsQ29tcG9uZW50fSBmcm9tIFwiLi9zaW1wbGUtZ3JpZC1jZWxsLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0Zvcm1Nb2R1bGV9IGZyb20gXCIuLi9mb3JtL2Zvcm0ubW9kdWxlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgR3JpZFRvb2xiYXJNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBGb3JtTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNpbXBsZUdyaWRDb21wb25lbnQsXHJcbiAgICBTaW1wbGVHcmlkQ2VsbENvbXBvbmVudCxcclxuICAgIFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFNpbXBsZUdyaWRDb21wb25lbnQsXHJcbiAgICBTaW1wbGVHcmlkQ2VsbENvbXBvbmVudCxcclxuICAgIFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaW1wbGVHcmlkTW9kdWxlIHsgfVxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQXNCdEcsTUFBTSxPQUFPLGdCQUFnQjs7O1lBcEI1QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osY0FBYztvQkFDZCxpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsVUFBVTtvQkFDVix1QkFBdUI7aUJBQ3hCO2dCQUNELFlBQVksRUFBRTtvQkFDWixtQkFBbUI7b0JBQ25CLHVCQUF1QjtvQkFDdkIseUJBQXlCO2lCQUMxQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsbUJBQW1CO29CQUNuQix1QkFBdUI7b0JBQ3ZCLHlCQUF5QjtpQkFDMUI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7U2ltcGxlR3JpZENvbXBvbmVudH0gZnJvbSBcIi4vc2ltcGxlLWdyaWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RHJhZ0Ryb3BNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7U2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZX0gZnJvbSBcIi4vc2ltcGxlLWdyaWQtY29sdW1uLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0dyaWRUb29sYmFyTW9kdWxlfSBmcm9tIFwiLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5tb2R1bGVcIjtcclxuaW1wb3J0IHtJbnB1dFRleHRNb2R1bGV9IGZyb20gXCIuLi9pbnB1dC10ZXh0L2lucHV0LXRleHQubW9kdWxlXCI7XHJcbmltcG9ydCB7U2ltcGxlR3JpZENlbGxDb21wb25lbnR9IGZyb20gXCIuL3NpbXBsZS1ncmlkLWNlbGwuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Rm9ybU1vZHVsZX0gZnJvbSBcIi4uL2Zvcm0vZm9ybS5tb2R1bGVcIjtcclxuaW1wb3J0IHtPYnNlcnZlVmlzaWJpbGl0eU1vZHVsZX0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvb2JzZXJ2ZS12aXNpYmlsaXR5L29ic2VydmUtdmlzaWJpbGl0eS5tb2R1bGVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICBHcmlkVG9vbGJhck1vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIEZvcm1Nb2R1bGUsXHJcbiAgICBPYnNlcnZlVmlzaWJpbGl0eU1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBTaW1wbGVHcmlkQ29tcG9uZW50LFxyXG4gICAgU2ltcGxlR3JpZENlbGxDb21wb25lbnQsXHJcbiAgICBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTaW1wbGVHcmlkQ29tcG9uZW50LFxyXG4gICAgU2ltcGxlR3JpZENlbGxDb21wb25lbnQsXHJcbiAgICBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2ltcGxlR3JpZE1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,80 @@
1
+ import { __awaiter } from "tslib";
2
+ import { delay, filter } from "rxjs/operators";
3
+ import { Directive, ElementRef, EventEmitter, Input, Output } from "@angular/core";
4
+ import { Subject } from "rxjs";
5
+ export class ObserveVisibilityDirective {
6
+ constructor(_element) {
7
+ this._element = _element;
8
+ this.debounceTime = 0;
9
+ this.threshold = 0;
10
+ this.visible = new EventEmitter();
11
+ this._subject = new Subject();
12
+ }
13
+ ngOnInit() {
14
+ this._createObserver();
15
+ }
16
+ ngAfterViewInit() {
17
+ this._startObservingElements();
18
+ }
19
+ ngOnDestroy() {
20
+ if (this._observer) {
21
+ this._observer.disconnect();
22
+ this._observer = undefined;
23
+ }
24
+ this._subject.next();
25
+ this._subject.complete();
26
+ }
27
+ _isVisible(element) {
28
+ return new Promise(resolve => {
29
+ const observer = new IntersectionObserver(([entry]) => {
30
+ resolve(entry.isIntersecting && entry.intersectionRatio >= this.threshold);
31
+ observer.disconnect();
32
+ });
33
+ observer.observe(element);
34
+ });
35
+ }
36
+ _createObserver() {
37
+ const options = {
38
+ rootMargin: '0px',
39
+ threshold: this.threshold,
40
+ };
41
+ const isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;
42
+ this._observer = new IntersectionObserver((entries, observer) => {
43
+ entries.forEach(entry => {
44
+ if (isIntersecting(entry)) {
45
+ this._subject.next({ entry, observer });
46
+ }
47
+ });
48
+ }, options);
49
+ }
50
+ _startObservingElements() {
51
+ if (!this._observer) {
52
+ return;
53
+ }
54
+ this._observer.observe(this._element.nativeElement);
55
+ this._subject
56
+ .pipe(delay(this.debounceTime), filter(Boolean))
57
+ .subscribe(({ entry, observer }) => __awaiter(this, void 0, void 0, function* () {
58
+ const target = entry.target;
59
+ const isStillVisible = yield this._isVisible(target);
60
+ if (isStillVisible) {
61
+ this.visible.emit(target);
62
+ observer.unobserve(target);
63
+ }
64
+ }));
65
+ }
66
+ }
67
+ ObserveVisibilityDirective.decorators = [
68
+ { type: Directive, args: [{
69
+ selector: '[observeVisibility]',
70
+ },] }
71
+ ];
72
+ ObserveVisibilityDirective.ctorParameters = () => [
73
+ { type: ElementRef }
74
+ ];
75
+ ObserveVisibilityDirective.propDecorators = {
76
+ debounceTime: [{ type: Input }],
77
+ threshold: [{ type: Input }],
78
+ visible: [{ type: Output }]
79
+ };
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS12aXNpYmlsaXR5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXZpc2liaWxpdHkvb2JzZXJ2ZS12aXNpYmlsaXR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFLN0IsTUFBTSxPQUFPLDBCQUEwQjtJQWVyQyxZQUFvQixRQUFvQjtRQUFwQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBWmpDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBR3pCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFHdEIsWUFBTyxHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO1FBR3BFLGFBQVEsR0FDZCxJQUFJLE9BQU8sRUFBd0UsQ0FBQztJQUUzQyxDQUFDO0lBRXJDLFFBQVE7UUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFvQjtRQUNyQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLE1BQU0sUUFBUSxHQUF5QixJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUMxRSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMzRSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxPQUFPLEdBQUc7WUFDZCxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFLENBQzFELEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDOUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVE7YUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDL0MsU0FBUyxDQUFDLENBQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUN2QyxNQUFNLE1BQU0sR0FBZ0IsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDeEQsTUFBTSxjQUFjLEdBQVksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTlELElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUFyRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7YUFDaEM7OztZQUxpQyxVQUFVOzs7MkJBUXpDLEtBQUs7d0JBR0wsS0FBSztzQkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWxheSwgZmlsdGVyfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW29ic2VydmVWaXNpYmlsaXR5XScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYnNlcnZlVmlzaWJpbGl0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVib3VuY2VUaW1lOiBudW1iZXIgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0aHJlc2hvbGQ6IG51bWJlciA9IDA7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyB2aXNpYmxlOiBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX3N1YmplY3Q6IFN1YmplY3Q8eyBlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSwgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIH0+ID1cclxuICAgIG5ldyBTdWJqZWN0PHsgZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnksIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB9PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jcmVhdGVPYnNlcnZlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXJ0T2JzZXJ2aW5nRWxlbWVudHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xyXG4gICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgIHRoaXMuX29ic2VydmVyID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3N1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fc3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNWaXNpYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPj0gdGhpcy50aHJlc2hvbGQpO1xyXG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYnNlcnZlcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxyXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMudGhyZXNob2xkLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBpc0ludGVyc2VjdGluZyA9IChlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkgPT5cclxuICAgICAgZW50cnkuaXNJbnRlcnNlY3RpbmcgfHwgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwO1xyXG5cclxuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xyXG4gICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgIGlmIChpc0ludGVyc2VjdGluZyhlbnRyeSkpIHtcclxuICAgICAgICAgIHRoaXMuX3N1YmplY3QubmV4dCh7IGVudHJ5LCBvYnNlcnZlciB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdGFydE9ic2VydmluZ0VsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9vYnNlcnZlcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMuX3N1YmplY3RcclxuICAgICAgLnBpcGUoZGVsYXkodGhpcy5kZWJvdW5jZVRpbWUpLCBmaWx0ZXIoQm9vbGVhbikpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHsgZW50cnksIG9ic2VydmVyIH0pID0+IHtcclxuICAgICAgICBjb25zdCB0YXJnZXQ6IEhUTUxFbGVtZW50ID0gZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGlzU3RpbGxWaXNpYmxlOiBib29sZWFuID0gYXdhaXQgdGhpcy5faXNWaXNpYmxlKHRhcmdldCk7XHJcblxyXG4gICAgICAgIGlmIChpc1N0aWxsVmlzaWJsZSkge1xyXG4gICAgICAgICAgdGhpcy52aXNpYmxlLmVtaXQodGFyZ2V0KTtcclxuICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==