fabrikantencore 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-manyname-dialog/beheer-products-connect-manyname-dialog.component.mjs +8 -7
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.mjs +7 -6
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.mjs +8 -7
- package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +41 -43
- package/esm2020/src/app/modules/fabrikantencore/services/products.service.mjs +5 -2
- package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +64 -13
- package/fesm2015/fabrikantencore.mjs +183 -127
- package/fesm2015/fabrikantencore.mjs.map +1 -1
- package/fesm2020/fabrikantencore.mjs +181 -125
- package/fesm2020/fabrikantencore.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-manyname-dialog/beheer-products-connect-manyname-dialog.component.d.ts +3 -2
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.d.ts +3 -2
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.d.ts +3 -2
- package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +6 -3
- package/src/app/modules/fabrikantencore/services/products.service.d.ts +2 -2
- package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +14 -10
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { BeheerConnectCategoryDialogComponent } from '../../beheer-connect-category-dialog/beheer-connect-category-dialog.component';
|
|
4
|
-
import { BeheerProductsConnectManynameDialogComponent } from '../beheer-products-connect-manyname-dialog/beheer-products-connect-manyname-dialog.component';
|
|
2
|
+
import { ConnectBCBEigenschapRequest, ConnectManyNameRequest, ConnectEigenschapOptieRequest } from '../../../../swagger/SwaggerClient';
|
|
5
3
|
import { BeheerProductsConnectRangeinputComponent } from '../beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component';
|
|
6
4
|
import { BeheerProductsKoppelFilteroptionDailogComponent } from './../beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../../../services/
|
|
9
|
-
import * as i2 from "
|
|
10
|
-
import * as i3 from "
|
|
11
|
-
import * as i4 from "
|
|
12
|
-
import * as i5 from "@angular/
|
|
13
|
-
import * as i6 from "@angular/material/
|
|
14
|
-
import * as i7 from "
|
|
6
|
+
import * as i1 from "../../../../services/importsets.service";
|
|
7
|
+
import * as i2 from "../../../../services/products.service";
|
|
8
|
+
import * as i3 from "@angular/material/dialog";
|
|
9
|
+
import * as i4 from "../../../../swagger/SwaggerClient";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "@angular/material/button";
|
|
12
|
+
import * as i7 from "@angular/material/icon";
|
|
13
|
+
import * as i8 from "../beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component";
|
|
15
14
|
export class BeheerProductsEigenschapComponent {
|
|
16
|
-
constructor(ProductsService, dialog, ProductsApiClient) {
|
|
15
|
+
constructor(ImportSetsService, ProductsService, dialog, ProductsApiClient, ChangeDetectorRef) {
|
|
16
|
+
this.ImportSetsService = ImportSetsService;
|
|
17
17
|
this.ProductsService = ProductsService;
|
|
18
18
|
this.dialog = dialog;
|
|
19
19
|
this.ProductsApiClient = ProductsApiClient;
|
|
20
|
+
this.ChangeDetectorRef = ChangeDetectorRef;
|
|
20
21
|
}
|
|
21
22
|
ngOnInit() {
|
|
22
23
|
}
|
|
@@ -42,7 +43,7 @@ export class BeheerProductsEigenschapComponent {
|
|
|
42
43
|
request.bcbProductId = this.ProductsService.BCBProductViewModel.id;
|
|
43
44
|
request.location = this.eigenschap.location;
|
|
44
45
|
this.ProductsApiClient.connectBCBEigenschapOptieFilterOption(request).subscribe(() => {
|
|
45
|
-
this.ProductsService.LoadProduct();
|
|
46
|
+
this.ProductsService.LoadProduct(this.ChangeDetectorRef);
|
|
46
47
|
}, (error) => {
|
|
47
48
|
alert(error);
|
|
48
49
|
});
|
|
@@ -53,7 +54,7 @@ export class BeheerProductsEigenschapComponent {
|
|
|
53
54
|
request2.bcbProductEigenschapOptieId = id;
|
|
54
55
|
request2.filterId = result.filter;
|
|
55
56
|
this.ProductsApiClient.connectManyName(request2).subscribe((model) => {
|
|
56
|
-
this.ProductsService.LoadProduct();
|
|
57
|
+
this.ProductsService.LoadProduct(this.ChangeDetectorRef);
|
|
57
58
|
}, (error) => {
|
|
58
59
|
alert(error);
|
|
59
60
|
});
|
|
@@ -62,11 +63,16 @@ export class BeheerProductsEigenschapComponent {
|
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
65
|
ConnectMany(id) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
if (confirm("Weet je het zeker?")) {
|
|
67
|
+
var request = new ConnectBCBEigenschapRequest();
|
|
68
|
+
request.bcbEigenschapId = this.eigenschap.id;
|
|
69
|
+
request.bcbImportSetId = this.ImportSetsService.BCBImportSetSelected;
|
|
70
|
+
this.ProductsApiClient.connectBCBEigenschapFilter(request).subscribe(() => {
|
|
71
|
+
this.ProductsService.LoadProduct(this.ChangeDetectorRef);
|
|
72
|
+
}, (error) => {
|
|
73
|
+
alert(error);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
70
76
|
}
|
|
71
77
|
Ignore(id) {
|
|
72
78
|
if (this.ProductsService.BCBProductViewModel != null) {
|
|
@@ -76,7 +82,7 @@ export class BeheerProductsEigenschapComponent {
|
|
|
76
82
|
request.bcbProductId = this.ProductsService.BCBProductViewModel.id;
|
|
77
83
|
request.location = this.eigenschap.location;
|
|
78
84
|
this.ProductsApiClient.ignoreBCBEigenschapOptieFilterOption(request).subscribe(() => {
|
|
79
|
-
this.ProductsService.LoadProduct();
|
|
85
|
+
this.ProductsService.LoadProduct(this.ChangeDetectorRef);
|
|
80
86
|
}, (error) => {
|
|
81
87
|
alert(error);
|
|
82
88
|
});
|
|
@@ -90,25 +96,17 @@ export class BeheerProductsEigenschapComponent {
|
|
|
90
96
|
}
|
|
91
97
|
});
|
|
92
98
|
}
|
|
93
|
-
ConnectCategory(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
request.categoryId = result;
|
|
105
|
-
this.ProductsApiClient.connectBCBEigenschapOptieCategory(request).subscribe(() => {
|
|
106
|
-
this.ProductsService.LoadProduct();
|
|
107
|
-
}, (error) => {
|
|
108
|
-
alert(error);
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
});
|
|
99
|
+
ConnectCategory() {
|
|
100
|
+
if (confirm("Weet je het zeker?")) {
|
|
101
|
+
var request = new ConnectBCBEigenschapRequest();
|
|
102
|
+
request.bcbEigenschapId = this.eigenschap.id;
|
|
103
|
+
request.bcbImportSetId = this.ImportSetsService.BCBImportSetSelected;
|
|
104
|
+
this.ProductsApiClient.connectBCBEigenschapCategory(request).subscribe(() => {
|
|
105
|
+
this.ProductsService.LoadProduct(this.ChangeDetectorRef);
|
|
106
|
+
}, (error) => {
|
|
107
|
+
alert(error);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
112
110
|
}
|
|
113
111
|
Show() {
|
|
114
112
|
if (this.eigenschap?.opties?.length != null &&
|
|
@@ -122,12 +120,12 @@ export class BeheerProductsEigenschapComponent {
|
|
|
122
120
|
return false;
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
|
-
BeheerProductsEigenschapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BeheerProductsEigenschapComponent, deps: [{ token: i1.
|
|
126
|
-
BeheerProductsEigenschapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BeheerProductsEigenschapComponent, selector: "app-beheer-products-eigenschap", inputs: { eigenschap: "eigenschap" }, ngImport: i0, template: "<div class=\"container\" [ngClass]=\"{'warning': !eigenschap.connected, 'normal': eigenschap.connected}\">\r\n <div class=\"row\" (click)=\"Toggle()\">\r\n <div class=\"icon-td\">\r\n <mat-icon *ngIf=\"!eigenschap.open && Show()\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"eigenschap.open && Show()\">expand_less</mat-icon>\r\n </div>\r\n <div class=\"eigenschapcel\" colspan=\"2\">\r\n {{eigenschap?.name}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"eigenschap.open\">\r\n <div *ngFor=\"let bereik of eigenschap.bereiken\" class=\"bereik\">\r\n <app-beheer-products-eigenschap-bereik [bereik]=\"bereik\"></app-beheer-products-eigenschap-bereik>\r\n </div>\r\n <div *ngIf=\"eigenschap.bereiken.length > 0 && eigenschap.rangeInputs != null\">\r\n <div *ngIf=\"eigenschap.rangeInputs.length == 0\">\r\n <button mat-raised-button (click)=\"ConnectRange()\">\r\n Range\r\n </button>\r\n </div>\r\n <div *ngFor=\"let range of eigenschap.rangeInputs\">\r\n {{ range.rangeInputModel.name }}\r\n\r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let optie of eigenschap.opties\" [ngClass]=\"{'warning': !optie.connected}\">\r\n <div class=\"text-div\">{{ optie.name }}</div>\r\n <div>\r\n <div *ngIf=\"!optie.connected\">\r\n <button mat-raised-button (click)=\"Connect(optie.id, eigenschap.name, optie.name)\">\r\n FilterOption\r\n </button>\r\n <button mat-raised-button (click)=\"
|
|
123
|
+
BeheerProductsEigenschapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BeheerProductsEigenschapComponent, deps: [{ token: i1.ImportSetsService }, { token: i2.ProductsService }, { token: i3.MatDialog }, { token: i4.ProductsApiClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
+
BeheerProductsEigenschapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BeheerProductsEigenschapComponent, selector: "app-beheer-products-eigenschap", inputs: { eigenschap: "eigenschap" }, ngImport: i0, template: "<div class=\"container\" [ngClass]=\"{'warning': !eigenschap.connected, 'normal': eigenschap.connected}\">\r\n <div class=\"row\" (click)=\"Toggle()\">\r\n <div class=\"icon-td\">\r\n <mat-icon *ngIf=\"!eigenschap.open && Show()\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"eigenschap.open && Show()\">expand_less</mat-icon>\r\n </div>\r\n <div class=\"eigenschapcel\" colspan=\"2\">\r\n {{eigenschap?.name}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"eigenschap.open\">\r\n <div *ngFor=\"let bereik of eigenschap.bereiken\" class=\"bereik\">\r\n <app-beheer-products-eigenschap-bereik [bereik]=\"bereik\"></app-beheer-products-eigenschap-bereik>\r\n </div>\r\n <div *ngIf=\"eigenschap.bereiken.length > 0 && eigenschap.rangeInputs != null\">\r\n <div *ngIf=\"eigenschap.rangeInputs.length == 0\">\r\n <button mat-raised-button (click)=\"ConnectRange()\">\r\n Range\r\n </button>\r\n </div>\r\n <div *ngFor=\"let range of eigenschap.rangeInputs\">\r\n {{ range.rangeInputModel.name }}\r\n\r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let optie of eigenschap.opties\" [ngClass]=\"{'warning': !optie.connected}\">\r\n <div class=\"text-div\">{{ optie.name }}</div>\r\n <div>\r\n <div *ngIf=\"!optie.connected\" class=\"button-row\">\r\n <button mat-raised-button (click)=\"Connect(optie.id, eigenschap.name, optie.name)\">\r\n FilterOption\r\n </button>\r\n <button mat-raised-button (click)=\"ConnectMany(optie.id)\">\r\n FilterOptionMany\r\n </button>\r\n <button mat-raised-button (click)=\"ConnectCategory()\">\r\n Category\r\n </button>\r\n <button mat-raised-button (click)=\"Ignore(optie.id)\">\r\n Ignore\r\n </button>\r\n </div>\r\n <div *ngFor=\"let connect of optie.bcbEigenschapOptieFilterOptionViewModels\">\r\n <b>{{ connect.filterOptionViewModel.filterName }}: {{ connect.filterOptionViewModel.name }}</b> \r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n <div *ngFor=\"let connect of optie.bcbEigenschapOptieCategoryViewModels\">\r\n <b>{{ connect.categoryViewModel.name }}</b> \r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n <div *ngIf=\"optie.ignore\">\r\n <b>Ignore</b> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".row{cursor:pointer;display:flex}.displayflex{display:flex}.eigenschapcel{flex:auto}.button-row{display:flex;gap:4px}.container{margin:5px;padding:5px;border:1px solid #000}.icon-td{width:24px;height:24px}.text-div{flex:auto}.warning{background-color:#f08080}.normal{background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.BeheerProductsEigenschapBereikComponent, selector: "app-beheer-products-eigenschap-bereik", inputs: ["bereik"] }] });
|
|
127
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BeheerProductsEigenschapComponent, decorators: [{
|
|
128
126
|
type: Component,
|
|
129
|
-
args: [{ selector: 'app-beheer-products-eigenschap', template: "<div class=\"container\" [ngClass]=\"{'warning': !eigenschap.connected, 'normal': eigenschap.connected}\">\r\n <div class=\"row\" (click)=\"Toggle()\">\r\n <div class=\"icon-td\">\r\n <mat-icon *ngIf=\"!eigenschap.open && Show()\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"eigenschap.open && Show()\">expand_less</mat-icon>\r\n </div>\r\n <div class=\"eigenschapcel\" colspan=\"2\">\r\n {{eigenschap?.name}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"eigenschap.open\">\r\n <div *ngFor=\"let bereik of eigenschap.bereiken\" class=\"bereik\">\r\n <app-beheer-products-eigenschap-bereik [bereik]=\"bereik\"></app-beheer-products-eigenschap-bereik>\r\n </div>\r\n <div *ngIf=\"eigenschap.bereiken.length > 0 && eigenschap.rangeInputs != null\">\r\n <div *ngIf=\"eigenschap.rangeInputs.length == 0\">\r\n <button mat-raised-button (click)=\"ConnectRange()\">\r\n Range\r\n </button>\r\n </div>\r\n <div *ngFor=\"let range of eigenschap.rangeInputs\">\r\n {{ range.rangeInputModel.name }}\r\n\r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let optie of eigenschap.opties\" [ngClass]=\"{'warning': !optie.connected}\">\r\n <div class=\"text-div\">{{ optie.name }}</div>\r\n <div>\r\n <div *ngIf=\"!optie.connected\">\r\n <button mat-raised-button (click)=\"Connect(optie.id, eigenschap.name, optie.name)\">\r\n FilterOption\r\n </button>\r\n <button mat-raised-button (click)=\"
|
|
130
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
127
|
+
args: [{ selector: 'app-beheer-products-eigenschap', template: "<div class=\"container\" [ngClass]=\"{'warning': !eigenschap.connected, 'normal': eigenschap.connected}\">\r\n <div class=\"row\" (click)=\"Toggle()\">\r\n <div class=\"icon-td\">\r\n <mat-icon *ngIf=\"!eigenschap.open && Show()\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"eigenschap.open && Show()\">expand_less</mat-icon>\r\n </div>\r\n <div class=\"eigenschapcel\" colspan=\"2\">\r\n {{eigenschap?.name}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"eigenschap.open\">\r\n <div *ngFor=\"let bereik of eigenschap.bereiken\" class=\"bereik\">\r\n <app-beheer-products-eigenschap-bereik [bereik]=\"bereik\"></app-beheer-products-eigenschap-bereik>\r\n </div>\r\n <div *ngIf=\"eigenschap.bereiken.length > 0 && eigenschap.rangeInputs != null\">\r\n <div *ngIf=\"eigenschap.rangeInputs.length == 0\">\r\n <button mat-raised-button (click)=\"ConnectRange()\">\r\n Range\r\n </button>\r\n </div>\r\n <div *ngFor=\"let range of eigenschap.rangeInputs\">\r\n {{ range.rangeInputModel.name }}\r\n\r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let optie of eigenschap.opties\" [ngClass]=\"{'warning': !optie.connected}\">\r\n <div class=\"text-div\">{{ optie.name }}</div>\r\n <div>\r\n <div *ngIf=\"!optie.connected\" class=\"button-row\">\r\n <button mat-raised-button (click)=\"Connect(optie.id, eigenschap.name, optie.name)\">\r\n FilterOption\r\n </button>\r\n <button mat-raised-button (click)=\"ConnectMany(optie.id)\">\r\n FilterOptionMany\r\n </button>\r\n <button mat-raised-button (click)=\"ConnectCategory()\">\r\n Category\r\n </button>\r\n <button mat-raised-button (click)=\"Ignore(optie.id)\">\r\n Ignore\r\n </button>\r\n </div>\r\n <div *ngFor=\"let connect of optie.bcbEigenschapOptieFilterOptionViewModels\">\r\n <b>{{ connect.filterOptionViewModel.filterName }}: {{ connect.filterOptionViewModel.name }}</b> \r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n <div *ngFor=\"let connect of optie.bcbEigenschapOptieCategoryViewModels\">\r\n <b>{{ connect.categoryViewModel.name }}</b> \r\n <button mat-raised-button>\r\n Remove\r\n </button>\r\n </div>\r\n <div *ngIf=\"optie.ignore\">\r\n <b>Ignore</b> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".row{cursor:pointer;display:flex}.displayflex{display:flex}.eigenschapcel{flex:auto}.button-row{display:flex;gap:4px}.container{margin:5px;padding:5px;border:1px solid #000}.icon-td{width:24px;height:24px}.text-div{flex:auto}.warning{background-color:#f08080}.normal{background-color:#fff}\n"] }]
|
|
128
|
+
}], ctorParameters: function () { return [{ type: i1.ImportSetsService }, { type: i2.ProductsService }, { type: i3.MatDialog }, { type: i4.ProductsApiClient }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { eigenschap: [{
|
|
131
129
|
type: Input
|
|
132
130
|
}] } });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvZHVjdHMvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvZHVjdHMvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFxQix3Q0FBd0MsRUFBRSxzQkFBc0IsRUFBbUYsNkJBQTZCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4UCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUNySSxPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSw4RkFBOEYsQ0FBQztBQUM1SixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUM5SSxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxzR0FBc0csQ0FBQzs7Ozs7Ozs7O0FBT3ZLLE1BQU0sT0FBTyxpQ0FBaUM7SUFJNUMsWUFBbUIsZUFBZ0MsRUFBUyxNQUFpQixFQUFVLGlCQUFvQztRQUF4RyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFt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QUFHLElBQUksd0NBQXdDLEVBQUUsQ0FBQztnQkFFN0QsT0FBTyxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztnQkFDekMsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBRTVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtvQkFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxJQUFJO1lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7OEhBL0hVLGlDQUFpQztrSEFBakMsaUNBQWlDLDRHQ2Q5QywwbEZBZ0VBOzJGRGxEYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsZ0NBQWdDOzhKQU1qQyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c0FwaUNsaWVudCwgQ29ubmVjdEJDQkVpZ2Vuc2NoYXBPcHRpZUNhdGVnb3J5UmVxdWVzdCwgQ29ubmVjdE1hbnlOYW1lUmVxdWVzdCwgQ29ubmVjdE1hbnlOYW1lUmVzcG9uc2UsIENvbm5lY3RFaWdlbnNjaGFwT3B0aWVSZXNwb25zZSwgQkNCRWlnZW5zY2hhcFZpZXdNb2RlbCwgQ29ubmVjdEVpZ2Vuc2NoYXBPcHRpZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBCZWhlZXJDb25uZWN0Q2F0ZWdvcnlEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iZWhlZXItY29ubmVjdC1jYXRlZ29yeS1kaWFsb2cvYmVoZWVyLWNvbm5lY3QtY2F0ZWdvcnktZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGVlclByb2R1Y3RzQ29ubmVjdE1hbnluYW1lRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYmVoZWVyLXByb2R1Y3RzLWNvbm5lY3QtbWFueW5hbWUtZGlhbG9nL2JlaGVlci1wcm9kdWN0cy1jb25uZWN0LW1hbnluYW1lLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWhlZXJQcm9kdWN0c0Nvbm5lY3RSYW5nZWlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmVoZWVyLXByb2R1Y3RzLWNvbm5lY3QtcmFuZ2VpbnB1dC9iZWhlZXItcHJvZHVjdHMtY29ubmVjdC1yYW5nZWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGVlclByb2R1Y3RzS29wcGVsRmlsdGVyb3B0aW9uRGFpbG9nQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9iZWhlZXItcHJvZHVjdHMta29wcGVsLWZpbHRlcm9wdGlvbi1kYWlsb2cvYmVoZWVyLXByb2R1Y3RzLWtvcHBlbC1maWx0ZXJvcHRpb24tZGFpbG9nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iZWhlZXItcHJvZHVjdHMtZWlnZW5zY2hhcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1wcm9kdWN0cy1laWdlbnNjaGFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItcHJvZHVjdHMtZWlnZW5zY2hhcC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJQcm9kdWN0c0VpZ2Vuc2NoYXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBlaWdlbnNjaGFwOiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgUHJvZHVjdHNTZXJ2aWNlOiBQcm9kdWN0c1NlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSBQcm9kdWN0c0FwaUNsaWVudDogUHJvZHVjdHNBcGlDbGllbnQpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBUb2dnbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVpZ2Vuc2NoYXAub3BlbiA9ICF0aGlzLmVpZ2Vuc2NoYXAub3BlbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb25uZWN0KGlkOiBudW1iZXIsIGZpbHRlcjogc3RyaW5nLCBvcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdmFyIGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQmVoZWVyUHJvZHVjdHNLb3BwZWxGaWx0ZXJvcHRpb25EYWlsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxvY2F0aW9uOiB0aGlzLmVpZ2Vuc2NoYXAubG9jYXRpb24sXHJcbiAgICAgICAgYmNiZWlnZW5zY2hhcG9wdGllaWQ6IGlkLFxyXG4gICAgICAgIHN1Z2dlc3RlZGZpbHRlcjogZmlsdGVyLFxyXG4gICAgICAgIHN1Z2dlc3RlZG9wdGlvbjogb3B0aW9uXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5maWx0ZXJvcHRpb24gIT0gbnVsbCAmJiByZXN1bHQuZmlsdGVyb3B0aW9uID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDb25uZWN0RWlnZW5zY2hhcE9wdGllUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5iY2JFaWdlbnNjaGFwT3B0aWVJZCA9IGlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmZpbHRlck9wdGlvbklkID0gcmVzdWx0LmZpbHRlcm9wdGlvbjtcclxuICAgICAgICAgICAgcmVxdWVzdC5iY2JQcm9kdWN0SWQgPSB0aGlzLlByb2R1Y3RzU2VydmljZS5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmxvY2F0aW9uID0gdGhpcy5laWdlbnNjaGFwLmxvY2F0aW9uO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jb25uZWN0QkNCRWlnZW5zY2hhcE9wdGllRmlsdGVyT3B0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QoKTtcclxuICAgICAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdC5maWx0ZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIHJlcXVlc3QyID0gbmV3IENvbm5lY3RNYW55TmFtZVJlcXVlc3QoKTtcclxuXHJcbiAgICAgICAgICByZXF1ZXN0Mi5iY2JQcm9kdWN0RWlnZW5zY2hhcE9wdGllSWQgPSBpZDtcclxuICAgICAgICAgIHJlcXVlc3QyLmZpbHRlcklkID0gcmVzdWx0LmZpbHRlcjtcclxuXHJcbiAgICAgICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmNvbm5lY3RNYW55TmFtZShyZXF1ZXN0Mikuc3Vic2NyaWJlKChtb2RlbDogQ29ubmVjdE1hbnlOYW1lUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QoKTtcclxuICAgICAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb25uZWN0TWFueShpZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB2YXIgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihCZWhlZXJQcm9kdWN0c0Nvbm5lY3RNYW55bmFtZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgYmNicHJvZHVjdGVpZ2Vuc2NoYXBvcHRpZWlkOiBpZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJZ25vcmUoaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDb25uZWN0RWlnZW5zY2hhcE9wdGllUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5iY2JFaWdlbnNjaGFwT3B0aWVJZCA9IGlkO1xyXG4gICAgICByZXF1ZXN0LmZpbHRlck9wdGlvbklkID0gLTE7XHJcbiAgICAgIHJlcXVlc3QuYmNiUHJvZHVjdElkID0gdGhpcy5Qcm9kdWN0c1NlcnZpY2UuQkNCUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuICAgICAgcmVxdWVzdC5sb2NhdGlvbiA9IHRoaXMuZWlnZW5zY2hhcC5sb2NhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuaWdub3JlQkNCRWlnZW5zY2hhcE9wdGllRmlsdGVyT3B0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QoKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29ubmVjdFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdmFyIGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQmVoZWVyUHJvZHVjdHNDb25uZWN0UmFuZ2VpbnB1dENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgYmNiZWlnZW5zY2hhcGlkOiB0aGlzLmVpZ2Vuc2NoYXAuaWQsXHJcbiAgICAgICAgbG9jYXRpb246IHRoaXMuZWlnZW5zY2hhcC5sb2NhdGlvblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb25uZWN0Q2F0ZWdvcnkoaWQ6IG51bWJlciwgZG90eXBlOiBzdHJpbmcsIGRvbmFhbTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB2YXIgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihCZWhlZXJDb25uZWN0Q2F0ZWdvcnlEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGRvdHlwZTogZG90eXBlLFxyXG4gICAgICAgIGRvbmFhbTogZG9uYWFtXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsICYmIHJlc3VsdCA+IDApIHtcclxuICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDb25uZWN0QkNCRWlnZW5zY2hhcE9wdGllQ2F0ZWdvcnlSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgIHJlcXVlc3QuYmNiUHJvZHVjdEVpZ2Vuc2NoYXBPcHRpZUlkID0gaWQ7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRlZ29yeUlkID0gcmVzdWx0O1xyXG5cclxuICAgICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmNvbm5lY3RCQ0JFaWdlbnNjaGFwT3B0aWVDYXRlZ29yeShyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QoKTtcclxuICAgICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3coKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5laWdlbnNjaGFwPy5vcHRpZXM/Lmxlbmd0aCAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuZWlnZW5zY2hhcC5vcHRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5laWdlbnNjaGFwPy5iZXJlaWtlbj8ubGVuZ3RoICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5laWdlbnNjaGFwLmJlcmVpa2VuLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyd3YXJuaW5nJzogIWVpZ2Vuc2NoYXAuY29ubmVjdGVkLCAnbm9ybWFsJzogZWlnZW5zY2hhcC5jb25uZWN0ZWR9XCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIChjbGljayk9XCJUb2dnbGUoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImljb24tdGRcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWVpZ2Vuc2NoYXAub3BlbiAmJiBTaG93KClcIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImVpZ2Vuc2NoYXAub3BlbiAmJiBTaG93KClcIj5leHBhbmRfbGVzczwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJlaWdlbnNjaGFwY2VsXCIgY29sc3Bhbj1cIjJcIj5cclxuICAgICAge3tlaWdlbnNjaGFwPy5uYW1lfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJlaWdlbnNjaGFwLm9wZW5cIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGJlcmVpayBvZiBlaWdlbnNjaGFwLmJlcmVpa2VuXCIgY2xhc3M9XCJiZXJlaWtcIj5cclxuICAgICAgPGFwcC1iZWhlZXItcHJvZHVjdHMtZWlnZW5zY2hhcC1iZXJlaWsgW2JlcmVpa109XCJiZXJlaWtcIj48L2FwcC1iZWhlZXItcHJvZHVjdHMtZWlnZW5zY2hhcC1iZXJlaWs+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJlaWdlbnNjaGFwLmJlcmVpa2VuLmxlbmd0aCA+IDAgJiYgZWlnZW5zY2hhcC5yYW5nZUlucHV0cyAhPSBudWxsXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJlaWdlbnNjaGFwLnJhbmdlSW5wdXRzLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQ29ubmVjdFJhbmdlKClcIj5cclxuICAgICAgICAgIFJhbmdlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByYW5nZSBvZiBlaWdlbnNjaGFwLnJhbmdlSW5wdXRzXCI+XHJcbiAgICAgICAge3sgcmFuZ2UucmFuZ2VJbnB1dE1vZGVsLm5hbWUgfX1cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbj5cclxuICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aWUgb2YgZWlnZW5zY2hhcC5vcHRpZXNcIiBbbmdDbGFzc109XCJ7J3dhcm5pbmcnOiAhb3B0aWUuY29ubmVjdGVkfVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kaXZcIj57eyBvcHRpZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFvcHRpZS5jb25uZWN0ZWRcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkNvbm5lY3Qob3B0aWUuaWQsIGVpZ2Vuc2NoYXAubmFtZSwgb3B0aWUubmFtZSlcIj5cclxuICAgICAgICAgICAgRmlsdGVyT3B0aW9uXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIklnbm9yZShvcHRpZS5pZClcIj5cclxuICAgICAgICAgICAgSWdub3JlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwhLS08YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDb25uZWN0TWFueShvcHRpZS5pZClcIj5cclxuICAgICAgRmlsdGVyT3B0aW9uTWFueVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDb25uZWN0Q2F0ZWdvcnkob3B0aWUuaWQsIGVpZ2Vuc2NoYXA/Lm5hbWUsIG9wdGllLm5hbWUpXCI+XHJcbiAgICAgIENhdGVnb3J5XHJcbiAgICA8L2J1dHRvbj4tLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb25uZWN0IG9mIG9wdGllLmJjYkVpZ2Vuc2NoYXBPcHRpZUZpbHRlck9wdGlvblZpZXdNb2RlbHNcIj5cclxuICAgICAgICAgIDxiPnt7IGNvbm5lY3QuZmlsdGVyT3B0aW9uVmlld01vZGVsLmZpbHRlck5hbWUgfX06IHt7IGNvbm5lY3QuZmlsdGVyT3B0aW9uVmlld01vZGVsLm5hbWUgfX08L2I+Jm5ic3A7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICAgICAgICBSZW1vdmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbm5lY3Qgb2Ygb3B0aWUuYmNiRWlnZW5zY2hhcE9wdGllQ2F0ZWdvcnlWaWV3TW9kZWxzXCI+XHJcbiAgICAgICAgICA8Yj57eyBjb25uZWN0LmNhdGVnb3J5Vmlld01vZGVsLm5hbWUgfX08L2I+Jm5ic3A7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICAgICAgICBSZW1vdmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpZS5pZ25vcmVcIj5cclxuICAgICAgICAgIDxiPklnbm9yZTwvYj4mbmJzcDtcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvZHVjdHMvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvZHVjdHMvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAvYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSTVFLE9BQU8sRUFBcUIsMkJBQTJCLEVBQUUsc0JBQXNCLEVBQW1GLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHM08sT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sb0ZBQW9GLENBQUM7QUFDOUksT0FBTyxFQUFFLCtDQUErQyxFQUFFLE1BQU0sc0dBQXNHLENBQUM7Ozs7Ozs7Ozs7QUFPdkssTUFBTSxPQUFPLGlDQUFpQztJQUk1QyxZQUNTLGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxNQUFpQixFQUNoQixpQkFBb0MsRUFDcEMsaUJBQW9DO1FBSnJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlC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K0JBQ0UsZ0NBQWdDOzhOQU1qQyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbXBvcnRTZXRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ltcG9ydHNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9kdWN0c0FwaUNsaWVudCwgQ29ubmVjdEJDQkVpZ2Vuc2NoYXBSZXF1ZXN0LCBDb25uZWN0TWFueU5hbWVSZXF1ZXN0LCBDb25uZWN0TWFueU5hbWVSZXNwb25zZSwgQ29ubmVjdEVpZ2Vuc2NoYXBPcHRpZVJlc3BvbnNlLCBCQ0JFaWdlbnNjaGFwVmlld01vZGVsLCBDb25uZWN0RWlnZW5zY2hhcE9wdGllUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IEJlaGVlckNvbm5lY3RDYXRlZ29yeURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JlaGVlci1jb25uZWN0LWNhdGVnb3J5LWRpYWxvZy9iZWhlZXItY29ubmVjdC1jYXRlZ29yeS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVoZWVyUHJvZHVjdHNDb25uZWN0TWFueW5hbWVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9iZWhlZXItcHJvZHVjdHMtY29ubmVjdC1tYW55bmFtZS1kaWFsb2cvYmVoZWVyLXByb2R1Y3RzLWNvbm5lY3QtbWFueW5hbWUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGVlclByb2R1Y3RzQ29ubmVjdFJhbmdlaW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9iZWhlZXItcHJvZHVjdHMtY29ubmVjdC1yYW5nZWlucHV0L2JlaGVlci1wcm9kdWN0cy1jb25uZWN0LXJhbmdlaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVoZWVyUHJvZHVjdHNLb3BwZWxGaWx0ZXJvcHRpb25EYWlsb2dDb21wb25lbnQgfSBmcm9tICcuLy4uL2JlaGVlci1wcm9kdWN0cy1rb3BwZWwtZmlsdGVyb3B0aW9uLWRhaWxvZy9iZWhlZXItcHJvZHVjdHMta29wcGVsLWZpbHRlcm9wdGlvbi1kYWlsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1wcm9kdWN0cy1laWdlbnNjaGFwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLXByb2R1Y3RzLWVpZ2Vuc2NoYXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1wcm9kdWN0cy1laWdlbnNjaGFwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclByb2R1Y3RzRWlnZW5zY2hhcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGVpZ2Vuc2NoYXA6IEJDQkVpZ2Vuc2NoYXBWaWV3TW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIEltcG9ydFNldHNTZXJ2aWNlOiBJbXBvcnRTZXRzU2VydmljZSxcclxuICAgIHB1YmxpYyBQcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgUHJvZHVjdHNBcGlDbGllbnQ6IFByb2R1Y3RzQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBUb2dnbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVpZ2Vuc2NoYXAub3BlbiA9ICF0aGlzLmVpZ2Vuc2NoYXAub3BlbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb25uZWN0KGlkOiBudW1iZXIsIGZpbHRlcjogc3RyaW5nLCBvcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdmFyIGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQmVoZWVyUHJvZHVjdHNLb3BwZWxGaWx0ZXJvcHRpb25EYWlsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxvY2F0aW9uOiB0aGlzLmVpZ2Vuc2NoYXAubG9jYXRpb24sXHJcbiAgICAgICAgYmNiZWlnZW5zY2hhcG9wdGllaWQ6IGlkLFxyXG4gICAgICAgIHN1Z2dlc3RlZGZpbHRlcjogZmlsdGVyLFxyXG4gICAgICAgIHN1Z2dlc3RlZG9wdGlvbjogb3B0aW9uXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5maWx0ZXJvcHRpb24gIT0gbnVsbCAmJiByZXN1bHQuZmlsdGVyb3B0aW9uID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDb25uZWN0RWlnZW5zY2hhcE9wdGllUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5iY2JFaWdlbnNjaGFwT3B0aWVJZCA9IGlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmZpbHRlck9wdGlvbklkID0gcmVzdWx0LmZpbHRlcm9wdGlvbjtcclxuICAgICAgICAgICAgcmVxdWVzdC5iY2JQcm9kdWN0SWQgPSB0aGlzLlByb2R1Y3RzU2VydmljZS5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmxvY2F0aW9uID0gdGhpcy5laWdlbnNjaGFwLmxvY2F0aW9uO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jb25uZWN0QkNCRWlnZW5zY2hhcE9wdGllRmlsdGVyT3B0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QodGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgICAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChyZXN1bHQuZmlsdGVyICE9IG51bGwpIHtcclxuICAgICAgICAgIHZhciByZXF1ZXN0MiA9IG5ldyBDb25uZWN0TWFueU5hbWVSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgICAgcmVxdWVzdDIuYmNiUHJvZHVjdEVpZ2Vuc2NoYXBPcHRpZUlkID0gaWQ7XHJcbiAgICAgICAgICByZXF1ZXN0Mi5maWx0ZXJJZCA9IHJlc3VsdC5maWx0ZXI7XHJcblxyXG4gICAgICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jb25uZWN0TWFueU5hbWUocmVxdWVzdDIpLnN1YnNjcmliZSgobW9kZWw6IENvbm5lY3RNYW55TmFtZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkxvYWRQcm9kdWN0KHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENvbm5lY3RNYW55KGlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChjb25maXJtKFwiV2VldCBqZSBoZXQgemVrZXI/XCIpKSB7XHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IENvbm5lY3RCQ0JFaWdlbnNjaGFwUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5iY2JFaWdlbnNjaGFwSWQgPSB0aGlzLmVpZ2Vuc2NoYXAuaWQ7XHJcbiAgICAgIHJlcXVlc3QuYmNiSW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG5cclxuICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jb25uZWN0QkNCRWlnZW5zY2hhcEZpbHRlcihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkxvYWRQcm9kdWN0KHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBJZ25vcmUoaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuUHJvZHVjdHNTZXJ2aWNlLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBDb25uZWN0RWlnZW5zY2hhcE9wdGllUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5iY2JFaWdlbnNjaGFwT3B0aWVJZCA9IGlkO1xyXG4gICAgICByZXF1ZXN0LmZpbHRlck9wdGlvbklkID0gLTE7XHJcbiAgICAgIHJlcXVlc3QuYmNiUHJvZHVjdElkID0gdGhpcy5Qcm9kdWN0c1NlcnZpY2UuQkNCUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuICAgICAgcmVxdWVzdC5sb2NhdGlvbiA9IHRoaXMuZWlnZW5zY2hhcC5sb2NhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuaWdub3JlQkNCRWlnZW5zY2hhcE9wdGllRmlsdGVyT3B0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1NlcnZpY2UuTG9hZFByb2R1Y3QodGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIENvbm5lY3RSYW5nZSgpOiB2b2lkIHtcclxuICAgIHZhciBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEJlaGVlclByb2R1Y3RzQ29ubmVjdFJhbmdlaW5wdXRDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGJjYmVpZ2Vuc2NoYXBpZDogdGhpcy5laWdlbnNjaGFwLmlkLFxyXG4gICAgICAgIGxvY2F0aW9uOiB0aGlzLmVpZ2Vuc2NoYXAubG9jYXRpb25cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29ubmVjdENhdGVnb3J5KCk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmZpcm0oXCJXZWV0IGplIGhldCB6ZWtlcj9cIikpIHtcclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgQ29ubmVjdEJDQkVpZ2Vuc2NoYXBSZXF1ZXN0KCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmJjYkVpZ2Vuc2NoYXBJZCA9IHRoaXMuZWlnZW5zY2hhcC5pZDtcclxuICAgICAgcmVxdWVzdC5iY2JJbXBvcnRTZXRJZCA9IHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmNvbm5lY3RCQ0JFaWdlbnNjaGFwQ2F0ZWdvcnkocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLlByb2R1Y3RzU2VydmljZS5Mb2FkUHJvZHVjdCh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvdygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmVpZ2Vuc2NoYXA/Lm9wdGllcz8ubGVuZ3RoICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5laWdlbnNjaGFwLm9wdGllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVpZ2Vuc2NoYXA/LmJlcmVpa2VuPy5sZW5ndGggIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLmVpZ2Vuc2NoYXAuYmVyZWlrZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBbbmdDbGFzc109XCJ7J3dhcm5pbmcnOiAhZWlnZW5zY2hhcC5jb25uZWN0ZWQsICdub3JtYWwnOiBlaWdlbnNjaGFwLmNvbm5lY3RlZH1cIj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgKGNsaWNrKT1cIlRvZ2dsZSgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi10ZFwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCIhZWlnZW5zY2hhcC5vcGVuICYmIFNob3coKVwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZWlnZW5zY2hhcC5vcGVuICYmIFNob3coKVwiPmV4cGFuZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImVpZ2Vuc2NoYXBjZWxcIiBjb2xzcGFuPVwiMlwiPlxyXG4gICAgICB7e2VpZ2Vuc2NoYXA/Lm5hbWV9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImVpZ2Vuc2NoYXAub3BlblwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYmVyZWlrIG9mIGVpZ2Vuc2NoYXAuYmVyZWlrZW5cIiBjbGFzcz1cImJlcmVpa1wiPlxyXG4gICAgICA8YXBwLWJlaGVlci1wcm9kdWN0cy1laWdlbnNjaGFwLWJlcmVpayBbYmVyZWlrXT1cImJlcmVpa1wiPjwvYXBwLWJlaGVlci1wcm9kdWN0cy1laWdlbnNjaGFwLWJlcmVpaz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImVpZ2Vuc2NoYXAuYmVyZWlrZW4ubGVuZ3RoID4gMCAmJiBlaWdlbnNjaGFwLnJhbmdlSW5wdXRzICE9IG51bGxcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImVpZ2Vuc2NoYXAucmFuZ2VJbnB1dHMubGVuZ3RoID09IDBcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDb25uZWN0UmFuZ2UoKVwiPlxyXG4gICAgICAgICAgUmFuZ2VcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJhbmdlIG9mIGVpZ2Vuc2NoYXAucmFuZ2VJbnB1dHNcIj5cclxuICAgICAgICB7eyByYW5nZS5yYW5nZUlucHV0TW9kZWwubmFtZSB9fVxyXG5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICAgICAgUmVtb3ZlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpZSBvZiBlaWdlbnNjaGFwLm9wdGllc1wiIFtuZ0NsYXNzXT1cInsnd2FybmluZyc6ICFvcHRpZS5jb25uZWN0ZWR9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRpdlwiPnt7IG9wdGllLm5hbWUgfX08L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGllLmNvbm5lY3RlZFwiIGNsYXNzPVwiYnV0dG9uLXJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQ29ubmVjdChvcHRpZS5pZCwgZWlnZW5zY2hhcC5uYW1lLCBvcHRpZS5uYW1lKVwiPlxyXG4gICAgICAgICAgICBGaWx0ZXJPcHRpb25cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQ29ubmVjdE1hbnkob3B0aWUuaWQpXCI+XHJcbiAgICAgICAgICAgIEZpbHRlck9wdGlvbk1hbnlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQ29ubmVjdENhdGVnb3J5KClcIj5cclxuICAgICAgICAgICAgQ2F0ZWdvcnlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiSWdub3JlKG9wdGllLmlkKVwiPlxyXG4gICAgICAgICAgICBJZ25vcmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbm5lY3Qgb2Ygb3B0aWUuYmNiRWlnZW5zY2hhcE9wdGllRmlsdGVyT3B0aW9uVmlld01vZGVsc1wiPlxyXG4gICAgICAgICAgPGI+e3sgY29ubmVjdC5maWx0ZXJPcHRpb25WaWV3TW9kZWwuZmlsdGVyTmFtZSB9fToge3sgY29ubmVjdC5maWx0ZXJPcHRpb25WaWV3TW9kZWwubmFtZSB9fTwvYj4mbmJzcDtcclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29ubmVjdCBvZiBvcHRpZS5iY2JFaWdlbnNjaGFwT3B0aWVDYXRlZ29yeVZpZXdNb2RlbHNcIj5cclxuICAgICAgICAgIDxiPnt7IGNvbm5lY3QuY2F0ZWdvcnlWaWV3TW9kZWwubmFtZSB9fTwvYj4mbmJzcDtcclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGllLmlnbm9yZVwiPlxyXG4gICAgICAgICAgPGI+SWdub3JlPC9iPiZuYnNwO1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -142,9 +142,10 @@ export class ProductsService {
|
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
LoadProduct() {
|
|
145
|
+
LoadProduct(changeDetectorRef) {
|
|
146
146
|
if (this.ProductViewModel != null) {
|
|
147
147
|
this.LoadingProducts = true;
|
|
148
|
+
changeDetectorRef.detectChanges();
|
|
148
149
|
var request = new GetProductRequest();
|
|
149
150
|
request.id = this.ProductViewModel.id;
|
|
150
151
|
this.ProductsApiClient.getProductViewModel(request).subscribe((model) => {
|
|
@@ -166,6 +167,7 @@ export class ProductsService {
|
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
this.LoadingProducts = false;
|
|
170
|
+
changeDetectorRef.detectChanges();
|
|
169
171
|
}, (error) => {
|
|
170
172
|
if (error.status == 400)
|
|
171
173
|
console.log(error.json());
|
|
@@ -174,6 +176,7 @@ export class ProductsService {
|
|
|
174
176
|
console.log(error);
|
|
175
177
|
}
|
|
176
178
|
this.LoadingProducts = false;
|
|
179
|
+
changeDetectorRef.detectChanges();
|
|
177
180
|
});
|
|
178
181
|
}
|
|
179
182
|
}
|
|
@@ -225,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
225
228
|
type: Injectable,
|
|
226
229
|
args: [{ providedIn: 'root' }]
|
|
227
230
|
}], ctorParameters: function () { return [{ type: i1.ProductsApiClient }, { type: i2.ImportSetsService }]; } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQThELHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQStELE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHL1UsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsaUJBQW9DLEVBQVUsaUJBQW9DO1FBQWxGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVjlGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBSWxDLHdCQUFtQixHQUF5QixTQUFTLENBQUM7UUFDdEQscUJBQWdCLEdBQXNCLFNBQVMsQ0FBQztRQU1yRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMzQyxJ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QUFDLEVBQUUsRUFBRTtnQ0FDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQzFDO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzRHQTFRVSxlQUFlO2dIQUFmLGVBQWUsY0FERixNQUFNOzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEltcG9ydFNldHNTZXJ2aWNlIH0gZnJvbSAnLi9pbXBvcnRzZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGVhblVwUmVzcG9uc2VNb2RlbCwgUHJvZHVjdHNBcGlDbGllbnQsIFByb2R1Y3RzVmlld01vZGVsLCBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCwgQkNCUHJvZHVjdFZpZXdNb2RlbCwgU2F2ZVByb2R1Y3RWaWV3TW9kZWwsIEJDQkltcG9ydFNldHNWaWV3TW9kZWwsIEltcG9ydEFwaUNsaWVudCwgUHJvZHVjdFZpZXdNb2RlbCwgR2V0UHJvZHVjdFJlcXVlc3QsIFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCwgQkNCRUJPVmlld01vZGVsLCBCQ0JFaWdlbnNjaGFwVmlld01vZGVsLCBCQ0JPcGJvdXdWaWV3TW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgTG9hZGluZ1Byb2R1Y3RzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0c1ZpZXdNb2RlbDogUHJvZHVjdHNWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBCQ0JQcm9kdWN0Vmlld01vZGVsPzogQkNCUHJvZHVjdFZpZXdNb2RlbCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgUHJvZHVjdFZpZXdNb2RlbD86IFByb2R1Y3RWaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0U2VsZWN0ZWQ6IG51bWJlcjtcclxuICBwdWJsaWMgQkNCUHJvZHVjdFNlbGVjdGVkOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUHJvZHVjdHNBcGlDbGllbnQ6IFByb2R1Y3RzQXBpQ2xpZW50LCBwcml2YXRlIEltcG9ydFNldHNTZXJ2aWNlOiBJbXBvcnRTZXRzU2VydmljZSkge1xyXG4gICAgdGhpcy5JbXBvcnRTZXRzU2VydmljZS5Qcm9kdWN0c1NlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5Mb2FkaW5nUHJvZHVjdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QkNCUHJvZHVjdHNTZWxlY3RlZCgpOiBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPiB7XHJcbiAgICB2YXIgYXJyYXl0ZW1wID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbD8ucHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgaWYgKHRoaXMuUHJvZHVjdFNlbGVjdGVkICE9IG51bGwgJiYgYXJyYXl0ZW1wICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheXRlbXAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYXJyYXl0ZW1wW2ldLmlkID09IHRoaXMuUHJvZHVjdFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICB2YXIgYXJyYXl0ZW1wMiA9IGFycmF5dGVtcFtpXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuICAgICAgICAgIGlmIChhcnJheXRlbXAyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5dGVtcDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlbG9hZChjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlUHJvZHVjdFZpZXdNb2RlbChwcm9kdWN0OiBQcm9kdWN0Vmlld01vZGVsLCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHZhciBtb2RlbCA9IG5ldyBTYXZlUHJvZHVjdFZpZXdNb2RlbCgpO1xyXG4gICAgbW9kZWwuaWQgPSBwcm9kdWN0LmlkO1xyXG4gICAgbW9kZWwubmFtZSA9IHByb2R1Y3QubmFtZTtcclxuICAgIG1vZGVsLnBvc2l0aW9uID0gcHJvZHVjdC5wb3NpdGlvbjtcclxuICAgIG1vZGVsLmltcG9ydFNldElkID0gcGFyc2VJbnQocHJvZHVjdC5pbXBvcnRTZXRJZC50b1N0cmluZygpKTtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcbiAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5zYXZlUHJvZHVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkUHJvZHVjdHMoY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldEltcG9ydChwcm9kdWN0aWQ6IG51bWJlciwgYmNicHJvZHVjdGlkOiBudW1iZXIsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdmFyIG1vZGVsID0gbmV3IFJlc2V0SW1wb3J0UmVxdWVzdE1vZGVsKCk7XHJcbiAgICBtb2RlbC5wcm9kdWN0SWQgPSBwcm9kdWN0aWQ7XHJcbiAgICBtb2RlbC5iY2JQcm9kdWN0SWQgPSBiY2Jwcm9kdWN0aWQ7XHJcblxyXG4gICAgaWYgKHByb2R1Y3RpZCA9PSAtMSAmJiBiY2Jwcm9kdWN0aWQgPT0gLTEpIHtcclxuICAgICAgbW9kZWwuYmNiSW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LnJlc2V0SW1wb3J0KG1vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFuVXAoKSB7XHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jbGVhblVwKCkuc3Vic2NyaWJlKChtb2RlbDogQ2xlYW5VcFJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgYWxlcnQoXCJCQ0JFQk86IFwiICsgbW9kZWwuZGVsZXRlQkNCRUJPcyArIFwiIEJDQkVpZ2Vuc2NoYXA6IFwiICsgbW9kZWwuZGVsZXRlQkNCRWlnZW5zY2hhcHBlbiArIFwiIEJDQk9wYm91dzogXCIgKyBtb2RlbC5kZWxldGVCQ0JPcGJvdXdlbik7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5pbXBvcnRTZXRJZCA9IHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmdldFByb2R1Y3RzVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IFByb2R1Y3RzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgdmFyIGFycmF5ID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbC5wcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUHJvZHVjdFNlbGVjdGVkID0gYXJyYXlbMF0uaWQ7XHJcblxyXG4gICAgICAgICAgICB2YXIgYXJyYXkyID0gYXJyYXlbMF0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJyYXkyICE9IG51bGwgJiYgYXJyYXkyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RTZWxlY3RlZCA9IGFycmF5MlswXS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHZhciBhcnJheWlubmVyID0gYXJyYXlbaV0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlbaV0uaWQgPT0gdGhpcy5Qcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheWlubmVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhcnJheWlubmVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgPSBhcnJheWlubmVyW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFByb2R1Y3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgR2V0UHJvZHVjdFJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5pZCA9IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuZ2V0UHJvZHVjdFZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBQcm9kdWN0Vmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHZhciBvbGQgPSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWw7XHJcblxyXG4gICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXlpbm5lci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSBudWxsICYmIG9sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCwgb2xkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKG5ld3Byb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwpIHtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q/LmJjYlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiUHJvZHVjdEVpZ2Vuc2NoYXBWaWV3TW9kZWxzKTtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMsIG9sZHByb2R1Y3Q/LmJjYlByb2R1Y3RPcGJvdXdWaWV3TW9kZWxzKTtcclxuICAgIGlmIChuZXdwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCAmJiBvbGRwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICBuZXdwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbC5vcGVuID0gb2xkcHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwub3BlbjtcclxuXHJcbiAgICAgIHRoaXMuTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwsIG9sZHByb2R1Y3QuYmNiZWJvVmlld01vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdDogQkNCRUJPVmlld01vZGVsLCBvbGRwcm9kdWN0OiBCQ0JFQk9WaWV3TW9kZWwpIHtcclxuICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0Py5iY2JFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiRWlnZW5zY2hhcFZpZXdNb2RlbHMpO1xyXG4gICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbEVpZ2Vuc2NoYXAobmV3cHJvZHVjdDogQkNCRWlnZW5zY2hhcFZpZXdNb2RlbFtdIHwgdW5kZWZpbmVkLCBvbGRwcm9kdWN0OiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0OiBCQ0JPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCwgb2xkcHJvZHVjdDogQkNCT3Bib3V3Vmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcblxyXG4gICAgICAgICAgICB2YXIgZWJvc25ldyA9IG5ld3Byb2R1Y3Rbal0uZWJvcztcclxuICAgICAgICAgICAgdmFyIGVib3NvbGQgPSBvbGRwcm9kdWN0W3BdLmVib3M7XHJcbiAgICAgICAgICAgIGlmIChlYm9zbmV3ICE9IG51bGwgJiYgZWJvc29sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBlYm9zbmV3Lmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lcmdlQkNCRUJPKGVib3NuZXdbb10sIGVib3NvbGRbb10pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQThELHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQStELE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHL1UsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsaUJBQW9DLEVBQVUsaUJBQW9DO1FBQWxGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVi9GLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBSWpDLHdCQUFtQixHQUF5QixTQUFTLENBQUM7UUFDdEQscUJBQWdCLEdBQXNCLFNBQVMsQ0FBQztRQU1yRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMzQyxJ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SUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7NEJBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dDQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDMUM7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7NEdBN1FVLGVBQWU7Z0hBQWYsZUFBZSxjQURGLE1BQU07MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW1wb3J0U2V0c1NlcnZpY2UgfSBmcm9tICcuL2ltcG9ydHNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IENsZWFuVXBSZXNwb25zZU1vZGVsLCBQcm9kdWN0c0FwaUNsaWVudCwgUHJvZHVjdHNWaWV3TW9kZWwsIFJlc2V0SW1wb3J0UmVxdWVzdE1vZGVsLCBCQ0JQcm9kdWN0Vmlld01vZGVsLCBTYXZlUHJvZHVjdFZpZXdNb2RlbCwgQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbCwgSW1wb3J0QXBpQ2xpZW50LCBQcm9kdWN0Vmlld01vZGVsLCBHZXRQcm9kdWN0UmVxdWVzdCwgUHJvZHVjdHNWaWV3TW9kZWxSZXF1ZXN0LCBCQ0JFQk9WaWV3TW9kZWwsIEJDQkVpZ2Vuc2NoYXBWaWV3TW9kZWwsIEJDQk9wYm91d1ZpZXdNb2RlbCB9IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIExvYWRpbmdQcm9kdWN0czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgUHJvZHVjdHNWaWV3TW9kZWw6IFByb2R1Y3RzVmlld01vZGVsO1xyXG5cclxuICBwdWJsaWMgQkNCUHJvZHVjdFZpZXdNb2RlbD86IEJDQlByb2R1Y3RWaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIFByb2R1Y3RWaWV3TW9kZWw/OiBQcm9kdWN0Vmlld01vZGVsID0gdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgUHJvZHVjdFNlbGVjdGVkOiBudW1iZXI7XHJcbiAgcHVibGljIEJDQlByb2R1Y3RTZWxlY3RlZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFByb2R1Y3RzQXBpQ2xpZW50OiBQcm9kdWN0c0FwaUNsaWVudCwgcHJpdmF0ZSBJbXBvcnRTZXRzU2VydmljZTogSW1wb3J0U2V0c1NlcnZpY2UpIHtcclxuICAgIHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuUHJvZHVjdHNTZXJ2aWNlID0gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ1Byb2R1Y3RzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEJDQlByb2R1Y3RzU2VsZWN0ZWQoKTogQXJyYXk8QkNCUHJvZHVjdFZpZXdNb2RlbD4ge1xyXG4gICAgdmFyIGFycmF5dGVtcCA9IHRoaXMuUHJvZHVjdHNWaWV3TW9kZWw/LnByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgIGlmICh0aGlzLlByb2R1Y3RTZWxlY3RlZCAhPSBudWxsICYmIGFycmF5dGVtcCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXl0ZW1wLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFycmF5dGVtcFtpXS5pZCA9PSB0aGlzLlByb2R1Y3RTZWxlY3RlZCkge1xyXG4gICAgICAgICAgdmFyIGFycmF5dGVtcDIgPSBhcnJheXRlbXBbaV0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcbiAgICAgICAgICBpZiAoYXJyYXl0ZW1wMiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnJheXRlbXAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQXJyYXk8QkNCUHJvZHVjdFZpZXdNb2RlbD4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWxvYWQoY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZVByb2R1Y3RWaWV3TW9kZWwocHJvZHVjdDogUHJvZHVjdFZpZXdNb2RlbCwgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB2YXIgbW9kZWwgPSBuZXcgU2F2ZVByb2R1Y3RWaWV3TW9kZWwoKTtcclxuICAgIG1vZGVsLmlkID0gcHJvZHVjdC5pZDtcclxuICAgIG1vZGVsLm5hbWUgPSBwcm9kdWN0Lm5hbWU7XHJcbiAgICBtb2RlbC5wb3NpdGlvbiA9IHByb2R1Y3QucG9zaXRpb247XHJcbiAgICBtb2RlbC5pbXBvcnRTZXRJZCA9IHBhcnNlSW50KHByb2R1Y3QuaW1wb3J0U2V0SWQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuc2F2ZVByb2R1Y3QobW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzZXRJbXBvcnQocHJvZHVjdGlkOiBudW1iZXIsIGJjYnByb2R1Y3RpZDogbnVtYmVyLCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHZhciBtb2RlbCA9IG5ldyBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCgpO1xyXG4gICAgbW9kZWwucHJvZHVjdElkID0gcHJvZHVjdGlkO1xyXG4gICAgbW9kZWwuYmNiUHJvZHVjdElkID0gYmNicHJvZHVjdGlkO1xyXG5cclxuICAgIGlmIChwcm9kdWN0aWQgPT0gLTEgJiYgYmNicHJvZHVjdGlkID09IC0xKSB7XHJcbiAgICAgIG1vZGVsLmJjYkltcG9ydFNldElkID0gdGhpcy5JbXBvcnRTZXRzU2VydmljZS5CQ0JJbXBvcnRTZXRTZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcbiAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5yZXNldEltcG9ydChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkUHJvZHVjdHMoY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDbGVhblVwKCkge1xyXG4gICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuY2xlYW5VcCgpLnN1YnNjcmliZSgobW9kZWw6IENsZWFuVXBSZXNwb25zZU1vZGVsKSA9PiB7XHJcbiAgICAgIGFsZXJ0KFwiQkNCRUJPOiBcIiArIG1vZGVsLmRlbGV0ZUJDQkVCT3MgKyBcIiBCQ0JFaWdlbnNjaGFwOiBcIiArIG1vZGVsLmRlbGV0ZUJDQkVpZ2Vuc2NoYXBwZW4gKyBcIiBCQ0JPcGJvdXc6IFwiICsgbW9kZWwuZGVsZXRlQkNCT3Bib3V3ZW4pO1xyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIExvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBQcm9kdWN0c1ZpZXdNb2RlbFJlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJlcXVlc3QuaW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG5cclxuICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5nZXRQcm9kdWN0c1ZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBQcm9kdWN0c1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuUHJvZHVjdHNWaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIHZhciBhcnJheSA9IHRoaXMuUHJvZHVjdHNWaWV3TW9kZWwucHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAoYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLlByb2R1Y3RTZWxlY3RlZCA9IGFycmF5WzBdLmlkO1xyXG5cclxuICAgICAgICAgICAgdmFyIGFycmF5MiA9IGFycmF5WzBdLmJjYlByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycmF5MiAhPSBudWxsICYmIGFycmF5Mi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5CQ0JQcm9kdWN0U2VsZWN0ZWQgPSBhcnJheTJbMF0uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCB8fCB0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICB2YXIgYXJyYXlpbm5lciA9IGFycmF5W2ldLmJjYlByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5W2ldLmlkID09IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlByb2R1Y3RWaWV3TW9kZWwgPSBhcnJheVtpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlpbm5lciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXlpbm5lci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJheWlubmVyW2pdLmlkID09IHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsID0gYXJyYXlpbm5lcltqXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRQcm9kdWN0KGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgR2V0UHJvZHVjdFJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5pZCA9IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuZ2V0UHJvZHVjdFZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBQcm9kdWN0Vmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHZhciBvbGQgPSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWw7XHJcblxyXG4gICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXlpbm5lci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSBudWxsICYmIG9sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCwgb2xkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBNZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWwobmV3cHJvZHVjdDogQkNCUHJvZHVjdFZpZXdNb2RlbCwgb2xkcHJvZHVjdDogQkNCUHJvZHVjdFZpZXdNb2RlbCkge1xyXG4gICAgLy90aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbEVpZ2Vuc2NoYXAobmV3cHJvZHVjdD8uYmNiUHJvZHVjdEVpZ2Vuc2NoYXBWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JQcm9kdWN0RWlnZW5zY2hhcFZpZXdNb2RlbHMpO1xyXG4gICAgLy90aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0Py5iY2JQcm9kdWN0T3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMpO1xyXG4gICAgaWYgKG5ld3Byb2R1Y3Q/LmJjYmVib1ZpZXdNb2RlbCAhPSBudWxsICYmIG9sZHByb2R1Y3Q/LmJjYmVib1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIG5ld3Byb2R1Y3QuYmNiZWJvVmlld01vZGVsLm9wZW4gPSBvbGRwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbC5vcGVuO1xyXG5cclxuICAgICAgdGhpcy5NZXJnZUJDQkVCTyhuZXdwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbCwgb2xkcHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBNZXJnZUJDQkVCTyhuZXdwcm9kdWN0OiBCQ0JFQk9WaWV3TW9kZWwsIG9sZHByb2R1Y3Q6IEJDQkVCT1ZpZXdNb2RlbCkge1xyXG4gICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q/LmJjYkVpZ2Vuc2NoYXBWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JFaWdlbnNjaGFwVmlld01vZGVscyk7XHJcbiAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0Py5iY2JPcGJvdXdWaWV3TW9kZWxzLCBvbGRwcm9kdWN0Py5iY2JPcGJvdXdWaWV3TW9kZWxzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0OiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQsIG9sZHByb2R1Y3Q6IEJDQkVpZ2Vuc2NoYXBWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKG5ld3Byb2R1Y3QgIT0gbnVsbCAmJiBvbGRwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdwcm9kdWN0Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBvbGRwcm9kdWN0Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICBpZiAobmV3cHJvZHVjdFtqXS5pZCA9PSBvbGRwcm9kdWN0W3BdLmlkKSB7XHJcbiAgICAgICAgICAgIG5ld3Byb2R1Y3Rbal0ub3BlbiA9IG9sZHByb2R1Y3RbcF0ub3BlbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsT3Bib3V3KG5ld3Byb2R1Y3Q6IEJDQk9wYm91d1ZpZXdNb2RlbFtdIHwgdW5kZWZpbmVkLCBvbGRwcm9kdWN0OiBCQ0JPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKG5ld3Byb2R1Y3QgIT0gbnVsbCAmJiBvbGRwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdwcm9kdWN0Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBvbGRwcm9kdWN0Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICBpZiAobmV3cHJvZHVjdFtqXS5pZCA9PSBvbGRwcm9kdWN0W3BdLmlkKSB7XHJcbiAgICAgICAgICAgIG5ld3Byb2R1Y3Rbal0ub3BlbiA9IG9sZHByb2R1Y3RbcF0ub3BlbjtcclxuXHJcbiAgICAgICAgICAgIHZhciBlYm9zbmV3ID0gbmV3cHJvZHVjdFtqXS5lYm9zO1xyXG4gICAgICAgICAgICB2YXIgZWJvc29sZCA9IG9sZHByb2R1Y3RbcF0uZWJvcztcclxuICAgICAgICAgICAgaWYgKGVib3NuZXcgIT0gbnVsbCAmJiBlYm9zb2xkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGVib3NuZXcubGVuZ3RoOyBvKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JFQk8oZWJvc25ld1tvXSwgZWJvc29sZFtvXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|