tnx-shared 5.3.329 → 5.3.331
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/bundles/tnx-shared.umd.js +170 -113
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/autocomplete-picker/autocomplete-picker.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-data/entity-picker-tree-data.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker.component.d.ts.map +1 -1
- package/esm2015/components/autocomplete-picker/autocomplete-picker.component.js +17 -15
- package/esm2015/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.js +7 -7
- package/esm2015/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-data/entity-picker-tree-data.component.js +7 -7
- package/esm2015/components/entity-picker/entity-picker.component.js +3 -1
- package/esm2015/services/canbo-hoso.service.js +41 -18
- package/fesm2015/tnx-shared.js +69 -43
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/canbo-hoso.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -3,6 +3,7 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
|
3
3
|
import { Injectable, Injector } from '@angular/core';
|
|
4
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
5
|
import { EnumControlPickerType } from '../classes/constants';
|
|
6
|
+
import { isArray } from '../classes/environment-schema';
|
|
6
7
|
import { AutoCompletePickerControlSchema, ColumnSchemaBase, DataType, EntityPickerColumn, ModelSchema, Operator } from '../classes/form-schema';
|
|
7
8
|
import { CoCauToChucService } from '../components/cocautochuc/services/cocautochuc.service';
|
|
8
9
|
import { EnumCanBo } from '../enums/common';
|
|
@@ -381,6 +382,17 @@ export class CanBoHoSoService extends BaseService {
|
|
|
381
382
|
else if (((_a = control.columns) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
382
383
|
columns.push(...control.columns);
|
|
383
384
|
}
|
|
385
|
+
if (control.dataType == EnumControlPickerType.DOITAC && !columns.some(item => item.code == 'idDoiTac')) {
|
|
386
|
+
columns.push(new EntityPickerColumn({
|
|
387
|
+
label: 'Đối tác',
|
|
388
|
+
code: 'idDoiTac',
|
|
389
|
+
baseService: this._hoSoDoiTacService,
|
|
390
|
+
multiple: true,
|
|
391
|
+
fullTextSearch: true,
|
|
392
|
+
isArrayField: true,
|
|
393
|
+
width: '200px',
|
|
394
|
+
}));
|
|
395
|
+
}
|
|
384
396
|
const result = new AutoCompletePickerControlSchema(Object.assign(Object.assign({ field: 'idCanBo', label: 'Cán bộ', title: 'Chọn cán bộ', multiple: false, baseService: this, plusUrl: 'WithChucDanhChucVu', displayField: 'hoVaTen', fieldPlus: 'code', fieldSearchText: ['email', 'code'], funcGetLabel: (item) => {
|
|
385
397
|
let result = item.hoVaTen;
|
|
386
398
|
if (item.code) {
|
|
@@ -390,9 +402,34 @@ export class CanBoHoSoService extends BaseService {
|
|
|
390
402
|
result += `- ${item.tenDonVi}`;
|
|
391
403
|
}
|
|
392
404
|
return result;
|
|
393
|
-
}, required: true, afterGetDataDropdown: (dataSource, element) => {
|
|
405
|
+
}, required: true, afterGetDataDropdown: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
406
|
+
var _b, _c;
|
|
407
|
+
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
408
|
+
return;
|
|
409
|
+
const { selectedValue } = element;
|
|
410
|
+
if (!selectedValue) {
|
|
411
|
+
const lstIdDoiTac = this._commonService.distinct(dataSource.filter(item => !!item.idDoiTac).flatMap(item => item.idDoiTac.split(',')));
|
|
412
|
+
if (lstIdDoiTac.length) {
|
|
413
|
+
const lstDoiTac = (_c = (_b = (yield this._hoSoDoiTacService.getAllWithIgnore([this.newFilter('id', Operator.in, lstIdDoiTac.filter(id => !!id))], 'id,ten'))) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : [];
|
|
414
|
+
if (lstDoiTac.length) {
|
|
415
|
+
dataSource.forEach(item => {
|
|
416
|
+
item.tenDoiTac = lstDoiTac.filter(x => item.idDoiTac.includes(x.id)).map(x => x.ten).join(', ');
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
dataSource.forEach((x) => {
|
|
423
|
+
var _a;
|
|
424
|
+
if (typeof selectedValue == 'object' && x.id == (selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.id)) {
|
|
425
|
+
x.tenDoiTac = selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.stridDoiTac;
|
|
426
|
+
}
|
|
427
|
+
else if (isArray(selectedValue) && selectedValue.includes(x.id))
|
|
428
|
+
(x.tenDoiTac = (_a = selectedValue.find(y => y.id == x.id)) === null || _a === void 0 ? void 0 : _a.stridDoiTac);
|
|
429
|
+
});
|
|
430
|
+
}
|
|
394
431
|
this.getTenDonVi(dataSource);
|
|
395
|
-
}, afterGetDataPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
432
|
+
}), afterGetDataPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
396
433
|
yield this.getDataPlus(dataSource);
|
|
397
434
|
}), afterGetDataUnPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
398
435
|
yield this.getDataPlus(dataSource);
|
|
@@ -413,17 +450,6 @@ export class CanBoHoSoService extends BaseService {
|
|
|
413
450
|
}
|
|
414
451
|
return filters;
|
|
415
452
|
} }, control), { columns: columns }));
|
|
416
|
-
if (control.dataType == EnumControlPickerType.DOITAC && !this.lstEntityPickerColumn.some(item => item.code == 'idDoiTac')) {
|
|
417
|
-
this.lstEntityPickerColumn.push(new EntityPickerColumn({
|
|
418
|
-
label: 'Đối tác',
|
|
419
|
-
code: 'idDoiTac',
|
|
420
|
-
baseService: this._hoSoDoiTacService,
|
|
421
|
-
multiple: true,
|
|
422
|
-
fullTextSearch: true,
|
|
423
|
-
isArrayField: true,
|
|
424
|
-
width: '200px',
|
|
425
|
-
}));
|
|
426
|
-
}
|
|
427
453
|
if (result.fieldPlus) {
|
|
428
454
|
if (result.fieldPlus
|
|
429
455
|
.split(',')
|
|
@@ -432,14 +458,11 @@ export class CanBoHoSoService extends BaseService {
|
|
|
432
458
|
result.fieldPlus += ',idNgachVienChuc';
|
|
433
459
|
}
|
|
434
460
|
}
|
|
435
|
-
|
|
461
|
+
if (!result.isOverrideColumns)
|
|
436
462
|
result.fieldPlus = 'idNgachVienChuc,ngaySinh,ngaySinh2,chucDanhs,idHocHam,idHocVi,dienThoaiDiDong,code';
|
|
437
|
-
}
|
|
438
463
|
return result;
|
|
439
464
|
}
|
|
440
465
|
getTenDonVi(dataSource) {
|
|
441
|
-
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
442
|
-
return;
|
|
443
466
|
for (const item of dataSource) {
|
|
444
467
|
// Bổ sung một số thông tin để hiển thị label trên autocomplete picker dạng dropdown
|
|
445
468
|
if (item.donViChucVus && item.donViChucVus.length > 0) {
|
|
@@ -689,4 +712,4 @@ CanBoHoSoService.ctorParameters = () => [
|
|
|
689
712
|
{ type: HoSoDoiTacService },
|
|
690
713
|
{ type: CrudService }
|
|
691
714
|
];
|
|
692
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFD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O0lBRUQsc0JBQXNCLENBQUMsUUFBUTtRQUMzQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLHlCQUF5QixDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7OztZQXR2QkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFsQlEsVUFBVTtZQUNFLFFBQVE7WUFZcEIsbUJBQW1CO1lBQ25CLFdBQVc7WUFMWCw2QkFBNkI7WUFKN0Isa0JBQWtCO1lBTWxCLGlCQUFpQjtZQURqQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSwgQ29sdW1uU2NoZW1hQmFzZSwgRGF0YVR5cGUsIEVudGl0eVBpY2tlckNvbHVtbiwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW51bUNhbkJvIH0gZnJvbSAnLi4vZW51bXMvY29tbW9uJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4vY2FuYm8taG9zby1jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9Tb0RvaVRhY1NlcnZpY2UgfSBmcm9tICcuL2hvc29kb2l0YWMuc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4vbWFzdGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FuQm9Ib1NvU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgICBlbnZpcm9ubWVudDogYW55O1xuICAgIHZlcnNpb246IGFueTtcbiAgICBsc3RFbnRpdHlQaWNrZXJDb2x1bW46IEVudGl0eVBpY2tlckNvbHVtbltdO1xuICAgIGRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0ID0ge1xuICAgICAgICB2MTogdGhpcy5nZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5WMSgpXG4gICAgfTtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlOiBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY29DYXVUb0NodWNTZXJ2aWNlOiBDb0NhdVRvQ2h1Y1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2hvU29Eb2lUYWNTZXJ2aWNlOiBIb1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9DYW5Cb19Ib1NvYCk7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xuICAgICAgICB0aGlzLmVuZFBvaW50ID0gdGhpcy5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5lbnZpcm9ubWVudC5jYXVIaW5oTmdoaWVwVnU/LnZlcnNpb25Db2x1bW5QaWNrZXJDYW5CbztcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0W2B2JHt0aGlzLnZlcnNpb259YF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmdlbmVyYXRlTGlzdEVudGl0eUNvbHVtbkRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpSGllblRhaUNhbkJvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlIaWVuVGFpLyR7aWRDYW5Cb31gKTtcbiAgICB9XG5cbiAgICBnZXRDYW5Cb0NhcFRyZW4odXNlcklkTGFzdHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9DYXBUcmVuYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogdXNlcklkTGFzdHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdFRyZWVEb25WaVF1YW5MeUJ5VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldExpc3RUcmVlRG9uVmlRdWFuTHlCeVVzZXJgKTtcbiAgICB9XG5cbiAgICBnZXRNb2RlbFNjaGVtYXMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ03DoycsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTcOjJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRIb2NWaWVuJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNodWNWdVN0cicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uU2NoZW1hQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkSG9jVmllbicsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVNlbGVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxODBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDaHVjVnVTdHInLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0RGF0YUV4cG9ydDJDKGdyaWRJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0U2lnbmFsUihcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydDJDYCxcbiAgICAgICAgICAgIGdyaWRJbmZvXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaW5Tb1lldUx5TGljaChpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5Tb1lldUx5TGljaD9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvaUhvYW4oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9pSG9hbj9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvTmhpZW0oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9OaGllbT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0YW9UYWlLaG9hbihpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UYW9UYWlLaG9hbi8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCB7fSk7XG4gICAgfVxuXG4gICAgZ2V0Q2FuQm9JbmZvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvSW5mby8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldERldGFpbFdpdGhDaHVjRGFuaENodWNWdShpZENhbkJvOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGV0YWlsV2l0aENodWNEYW5oQ2h1Y1Z1LyR7aWRDYW5Cb31gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwIG5oYXQgdHJhbmcgdGhhaSBjYW5ib19ob3NvIHRoZW8gaWQgY2FuQm9cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWRDYW5Cb1xuICAgICAqIEBwYXJhbSB7YW55fSBpZFRyYW5nVGhhaVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIHVwZGF0ZVRyYW5nVGhhaUNhbkJvSG9TbyhpZENhbkJvOiBzdHJpbmcsIGlkVHJhbmdUaGFpOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVUcmFuZ1RoYWlDYW5Cb0hvU28/aWRDYW5Cbz0ke2lkQ2FuQm99JiZpZFRyYW5nVGhhaT0ke2lkVHJhbmdUaGFpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwge30pO1xuICAgIH1cblxuICAgIEdldFRob25nVGluQ2FuQm9JZChpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRUaG9uZ1RpbkNhbkJvSWQvJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBjaGVja0NhbkJvSW5QaG9uZ0RvaU5nb2FpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tDYW5Cb0luUGhvbmdEb2lOZ29haWApO1xuICAgIH1cblxuICAgIEdldERhbmhTYWNoQ2FuQm9UaGVvRG9uVmkobHN0SWRPcmdSZXEsIGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGFuaFNhY2hDYW5Cb1RoZW9Eb25WaS8ke2xzdElkT3JnUmVxfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdldERhdGFFeHBvcnRLZXRRdWFEYW5oR2lhKGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydEtldFF1YURhbmhHaWFgO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBM4bqleSBkYW5oIHPDoWNoIGPDoW4gYuG7mSB2w6AgY+G6pXAgZMaw4bubaSBob+G6t2MgbMOgIG5ow6JuIHZpw6puIG5nxrDhu51pIGTDuW5nIHF14bqjbiBsw70gdHLhu7FjIHRp4bq/cFxuICAgICAqIE7hur91IHRyb25nIGPDuW5nIDEgxJHGoW4gduG7iyB0aMOsIG5nxrDhu51pIGPDsyBjaOG7qWMgduG7pSBj4bqlcCB0csaw4bufbmcgc+G6vSBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqblxuICAgICAqIEPDsm4gbmfGsOG7nWkgY8OzIGNo4bupYyB24bulIGPhuqVwIHBow7MgdGjDrCBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqbiB0cuG7qyBj4bqlcCB0csaw4bufbmcsIC4uLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIGdldENhbkJvQ2FwRHVvaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvQ2FwRHVvaWApO1xuICAgIH1cblxuICAgIGNoZWNrSXNDYW5Cb1Bob25nVGNjYigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NoZWNrSXNDYW5Cb1Bob25nVGNjYmApO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpRHVvY1BoZXBRdWFuTHkoaWREb25WaSkge1xuICAgICAgICBsZXQgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaUR1b2NQaGVwUXVhbkx5YDtcbiAgICAgICAgaWYgKGlkRG9uVmkpIHtcbiAgICAgICAgICAgIHVybCArPSBgP2lkRG9uVmk9JHtpZERvblZpfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldFBoYW1WaURvblZpUXVhbkx5KGlzR2V0VHJlZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0UGhhbVZpRG9uVmlRdWFuTHk/aXNHZXRUcmVlPSR7aXNHZXRUcmVlfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG4gICAgZ2V0SWRzRG9uVmlRdWFuTHkoYWxsQ2hpbGQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlRdWFuTHk/YWxsQ2hpbGQ9JHthbGxDaGlsZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SWRzQ2FuQm9DdW5nRG9uVmkoKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVJbmZvID0gdGhpcy5fdXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgbGV0IGlkc0NhbkJvID0gW107XG4gICAgICAgIGlmIChwcm9maWxlSW5mbz8uaWRDYW5Cbykge1xuICAgICAgICAgICAgY29uc3QgY29tbW9uID0gW3RoaXMubmV3RmlsdGVyKCdjb25IaWV1THVjJywgT3BlcmF0b3IuZXF1YWwsIHRydWUpXTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgICAgLi4uY29tbW9uLFxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENhbkJvJywgT3BlcmF0b3IuZXF1YWwsIHByb2ZpbGVJbmZvLmlkQ2FuQm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxldCBpZHNEb25WaUNhbkJvTG9naW4gPSBbXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChmaWx0ZXJzKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWREb25WaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGlkc0RvblZpQ2FuQm9Mb2dpbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlkc0RvblZpID0gW107XG4gICAgICAgICAgICBjb25zdCBjb0NhdVRvQ2h1Y0ZpbHRlcnMgPSBuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IFtdIH0pO1xuICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luLmZvckVhY2goKGlkRG9uVmkpID0+IHtcbiAgICAgICAgICAgICAgICBjb0NhdVRvQ2h1Y0ZpbHRlcnMuZmlsdGVycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZER1b25nRGFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBgOyR7aWREb25WaX07YFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChbY29DYXVUb0NodWNGaWx0ZXJzXSwgJ2lkJylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0RvblZpID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpZHNEb25WaS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV3ZmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgICAuLi5jb21tb24sXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkRG9uVmknLCBPcGVyYXRvci5pbiwgaWRzRG9uVmkpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChuZXdmaWx0ZXJzLCAnaWRDYW5CbycpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNDYW5CbyA9IHJzLmRhdGEubWFwKCh4KSA9PiB4LmlkQ2FuQm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaWRzQ2FuQm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdlbmVyYXRlQ29sdW1uRG9uVmkoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNhcDJzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RvblZpVGhlb0NhcCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS2hvYSB2aeG7h24vIMSRxqFuIHbhu4snKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2FwM3MnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZG9uVmlUaGVvQ2FwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdC4buZIG3DtG4vIHbEg24gcGjDsm5nIGtob2EnKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRJbmZvQ2FuQm9XaXRoRG9uVmlDaHVjVnUobHN0SWRDYW5Cbzogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgbHN0SWRDYW5CbyldO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhQ3VzdG9tUm91dGUoXG4gICAgICAgICAgICBgRmlsdGVyQnlPcmcvJHt0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWRFbXB0eSgpfWAsXG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIDEwMDAwMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldFRob25nVGluRG9uVmlDYW5CbyhpdGVtQ2FuQm86IGFueSwgbHN0Q2FuQm9Eb25WaTogYW55W10pIHtcbiAgICAgICAgY29uc3QgaG9Tb0RvblZpID0gbHN0Q2FuQm9Eb25WaS5maW5kKCh4KSA9PiB4LmlkID09IGl0ZW1DYW5Cby5pZENhbkJvKTtcbiAgICAgICAgaWYgKGhvU29Eb25WaSkge1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2FwMnMgPSBob1NvRG9uVmkuZG9uVmlDYXAycztcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNhcDNzID0gaG9Tb0RvblZpLmRvblZpQ2FwM3M7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDaHVjVnVzID0gaG9Tb0RvblZpLmRvblZpQ2h1Y1Z1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERvblZpRnVsbHNCeUNhbkJvQXBpKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREb25WaUZ1bGxzQnlDYW5Cb0FwaT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SW5mb0FmdGVyR2V0RGF0YShkYXRhU291cmNlKSB7XG4gICAgICAgIGNvbnN0IGd1aWRFbXB0eSA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCk7XG4gICAgICAgIGNvbnN0IGlkc0NhbkJvID0gdGhpcy5fY29tbW9uU2VydmljZS5kaXN0aW5jdEFycmF5KFxuICAgICAgICAgICAgZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWRDYW5CbyAhPSBndWlkRW1wdHkpXG4gICAgICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5pZENhbkJvKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsc3RDYW5CbyA9IChcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsKFxuICAgICAgICAgICAgICAgIFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgaWRzQ2FuQm8pXSxcbiAgICAgICAgICAgICAgICAnaWQsY29kZSxob1ZhVGVuLG5nYXlTaW5oLGdpb2lUaW5oJ1xuICAgICAgICAgICAgKVxuICAgICAgICApLmRhdGE7XG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWRDYW5CbyAhPSBndWlkRW1wdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5CbyA9IGxzdENhbkJvLmZpbmQoKHgpID0+IHguaWQgPT0gZWxlbWVudC5pZENhbkJvKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYUNhbkJvID0gY2FuQm8uY29kZTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5ob1ZhVGVuID0gY2FuQm8uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50ZW5DYW5CbyA9IGNhbkJvLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmdheVNpbmggPSBjYW5Cby5uZ2F5U2luaDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5naW9pVGluaCA9IGNhbkJvLmdpb2lUaW5oO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWRVc2VyQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkVXNlckJ5RG9uVmlgLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBsc3RJZERvblZpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJZENhbkJvQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkQ2FuQm9CeURvblZpYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogbHN0SWREb25WaSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQodXNlcklkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQvJHt1c2VySWR9YDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIEdldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5TGlzdFVzZXJJZChsc3RVc2VySWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeUxpc3RVc2VySWRgO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGxzdFVzZXJJZCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmkoZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBbGxCeUZpbHRlci9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdlbmVyYXRlUGlja2VyQ29udHJvbFNjaGVtYShjb250cm9sOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLCBlbnVtQ2FuQm86IGFueSA9IEVudW1DYW5Cby5UUk9OR19ET05fVkkpIHtcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBbLi4udGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW5dO1xuICAgICAgICBpZihjb250cm9sLmlzT3ZlcnJpZGVDb2x1bW5zKXtcbiAgICAgICAgICAgIGNvbHVtbnMgPSBbLi4uY29udHJvbC5jb2x1bW5zXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb250cm9sLmNvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaCguLi5jb250cm9sLmNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hKHtcbiAgICAgICAgICAgIGZpZWxkOiAnaWRDYW5CbycsXG4gICAgICAgICAgICBsYWJlbDogJ0PDoW4gYuG7mScsXG4gICAgICAgICAgICB0aXRsZTogJ0No4buNbiBjw6FuIGLhu5knLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMsXG4gICAgICAgICAgICBwbHVzVXJsOiAnV2l0aENodWNEYW5oQ2h1Y1Z1JyxcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgZmllbGRQbHVzOiAnY29kZScsXG4gICAgICAgICAgICBmaWVsZFNlYXJjaFRleHQ6IFsnZW1haWwnLCAnY29kZSddLFxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBpdGVtLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBgJHtpdGVtLmNvZGV9IC0gJHtyZXN1bHR9IGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRlbkRvblZpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgLSAke2l0ZW0udGVuRG9uVml9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duOiAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhUGlja2VkOiBhc3luYyAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5pc0NhY2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc0NhY2hpbmcnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnVtQ2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ2FuQm8uTkdPQUlfRE9OX1ZJOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc05nb2FpRG9uVmknLCBPcGVyYXRvci5lcXVhbCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNhbkJvLlRST05HX0RPTl9WSTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaXNOZ29haURvblZpJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5jb250cm9sLFxuICAgICAgICAgICAgY29sdW1uczogY29sdW1ucywgICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjb250cm9sLmRhdGFUeXBlID09IEVudW1Db250cm9sUGlja2VyVHlwZS5ET0lUQUMgJiYgIXRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uLnNvbWUoaXRlbSA9PiBpdGVtLmNvZGUgPT0gJ2lkRG9pVGFjJykpIHtcbiAgICAgICAgICAgIHRoaXMubHN0RW50aXR5UGlja2VyQ29sdW1uLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaWREb2lUYWMnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdC5maWVsZFBsdXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHEpID0+IHEudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZignaWROZ2FjaFZpZW5DaHVjJykgPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXMgKz0gJyxpZE5nYWNoVmllbkNodWMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1cyA9ICdpZE5nYWNoVmllbkNodWMsbmdheVNpbmgsbmdheVNpbmgyLGNodWNEYW5ocyxpZEhvY0hhbSxpZEhvY1ZpLGRpZW5UaG9haURpRG9uZyxjb2RlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZTogYW55W10pIHtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIELhu5Ugc3VuZyBt4buZdCBz4buRIHRow7RuZyB0aW4gxJHhu4MgaGnhu4NuIHRo4buLIGxhYmVsIHRyw6puIGF1dG9jb21wbGV0ZSBwaWNrZXIgZOG6oW5nIGRyb3Bkb3duXG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXMgJiYgaXRlbS5kb25WaUNodWNWdXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChxKSA9PiBxLmlzRG9uVmlDaGluaFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtRG9uVmlDaGluaCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtRG9uVmlDaGluaCA9IGl0ZW0uZG9uVmlDaHVjVnVzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtLnRlbkRvblZpID0gaXRlbURvblZpQ2hpbmguY2h1Y1Z1XG4gICAgICAgICAgICAgICAgICAgID8gYCR7aXRlbURvblZpQ2hpbmguY2h1Y1Z1fSAke2l0ZW1Eb25WaUNoaW5oLmRvblZpfWBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtRG9uVmlDaGluaC5kb25WaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldERhdGFQbHVzKGRhdGFTb3VyY2U6IGFueSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2h1Y0RhbmhzKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSBpdGVtLmNodWNEYW5ocy50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgPSAnJztcbiAgICAgICAgICAgIGlmIChpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjRGFuaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHJDaHVjRGFuaHMgKz0gaS5jaHVjRGFuaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzID0gJyc7XG4gICAgICAgICAgICBpZiAoaXRlbS5kb25WaUNodWNWdXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtLmRvblZpQ2h1Y1Z1cykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaS5jaHVjVnUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuY2h1Y1Z1fSAtICR7aS5kb25WaX08L3A+YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyRG9uVmlDaHVjVnVzICs9IGA8cD4ke2kuZG9uVml9PC9wPmA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0ubmdheVNpbmggJiYgaXRlbS5uZ2F5U2luaDIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLm5nYXlTaW5oID0gbmV3IERhdGUoaXRlbS5uZ2F5U2luaDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5ob2NIYW1Ib2NWaVxuICAgICAgICAgICAgICAgID0gaXRlbS5pZEhvY0hhbSAmJiBpdGVtLmlkSG9jVmlcbiAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmlkSG9jSGFtfS4gJHtpdGVtLmlkSG9jVml9YFxuICAgICAgICAgICAgICAgICAgICA6IGl0ZW0uaWRIb2NIYW0gfHwgaXRlbS5pZEhvY1ZpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FuQm9Ub0dpYW5nVmllbihtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vVXBkYXRlQ2FuQm9Ub0dpYW5nVmllbmAsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZUdpYW5nVmllbkRvaVRhYyhtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vQ3JlYXRlR2lhbmdWaWVuRG9pVGFjYCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG9uVmlQaGFuQ2FwQnlJZHMobW9kZWwsIGlzVXNlciA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0RG9uVmlQaGFuQ2FwQnlJZHMvJHtpc1VzZXJ9YCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHVwZGF0ZUdpYW5nVmllbk5vaUJvKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQdXQoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZUdpYW5nVmllbk5vaUJvLyR7bW9kZWwuaWR9YCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXBkYXRlR2lhbmdWaWVuRG9pVGFjKG1vZGVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQdXQoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZUdpYW5nVmllbkRvaVRhYy8ke21vZGVsLmlkfWAsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEx5TGljaEtob2FIb2NDYW5CbyhpZCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEx5TGljaEtob2FIb2NDYW5Cby8ke2lkfWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBhc3luYyBHZXREb25WaUNodWNWdShpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RG9uVmlDaHVjVnUvJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlTGlzdEVudGl0eUNvbHVtbkRlZmF1bHQoKSB7XG4gICAgICAgIGNvbnN0IF9tYXN0ZXJEYXRhU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChNYXN0ZXJEYXRhU2VydmljZSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ03DoycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzgwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jhu41jIGjDoG0sIGjhu41jIHbhu4snLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdob2NIYW1Ib2NWaScsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICduZ2F5U2luaCcsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IERhdGFUeXBlLmRhdGUsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTIwcHgnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdHaeG7m2kgdMOtbmgnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdnaW9pVGluaCcsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IF9tYXN0ZXJEYXRhU2VydmljZSxcbiAgICAgICAgICAgICAgICBncm91cENvZGU6ICdHSU9JX1RJTkgnLFxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4JyxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIGRhbmgnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdzdHJDaHVjRGFuaHMnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUwcHgnLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaOG7qWMgduG7pSAtIMSQxqFuIHbhu4snLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdzdHJEb25WaUNodWNWdXMnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnaHRtbCcsXG4gICAgICAgICAgICAgICAgbm90SW5GaWVsZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMjBweCcsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgLy8gdGVtcGxhdGVGaWx0ZXI6IHRlbXBsYXRlLmZpbHRlckRvblZpUmVmLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWVsZEZpbHRlcjogJ2lkRG9uVmlzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgY29kZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuZXF1YWwsXG4gICAgICAgICAgICAgICAgaXNPdmVycmlkZUZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE3MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkOG7kWkgdMOhYycsXG4gICAgICAgICAgICAgICAgY29kZTogJ2lkRG9pVGFjJyxcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0FycmF5RmllbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2hvU29Eb2lUYWNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRob25nS2VDYW5CbyhwbHVzVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS8ke3RoaXMuYXBpR2V0RGF0YX0vJHtwbHVzVXJsfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlTGlzdEVudGl0eUNvbHVtblYxKCkge1xuICAgICAgICBjb25zdCBfbWFzdGVyRGF0YVNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICduZ2F5U2luaCcsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBEYXRhVHlwZS5kYXRlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTIwcHgnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogMSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdHaeG7m2kgdMOtbmgnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdnaW9pVGluaCcsXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IF9tYXN0ZXJEYXRhU2VydmljZSxcbiAgICAgICAgICAgICAgICBncm91cENvZGU6ICdHSU9JX1RJTkgnLFxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBpc1NlYXJjaGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc5MHB4JyxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UgLSDEkMahbiB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyRG9uVmlDaHVjVnVzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRlbXBsYXRlRmlsdGVyOiB0ZW1wbGF0ZS5maWx0ZXJEb25WaVJlZixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdpZERvblZpcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNzBweCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGdldFF1YW5MeUNhcFRyZW5CeVVzZXJJZChpZFVzZXI6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2FuQm9RdWFuTHlCeVVzZXJJZC8ke2lkVXNlcn1gKTtcbiAgICB9XG5cbiAgICBnZXREYW5oU2FjaFVzZXJDYXBUcmVuKGlkc0RvblZpKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGFuaFNhY2hVc2VyQ2FwVHJlbmA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgaWRzRG9uVmkpO1xuICAgIH1cblxuXG59XG5cbiJdfQ==
|
|
715
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYm8taG9zby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2NhbmJvLWhvc28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFD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SUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsS0FBSztnQkFDWCwyQ0FBMkM7Z0JBQzNDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixXQUFXLEVBQUUsVUFBVTthQUMxQixDQUFDO1lBQ0YsSUFBSSxrQkFBa0IsQ0FBQztnQkFDbkIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUN4QixnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixLQUFLLEVBQUUsT0FBTzthQUNqQixDQUFDO1NBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFRO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUseUJBQXlCLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7O1lBMXdCSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQW5CUSxVQUFVO1lBQ0UsUUFBUTtZQWFwQixtQkFBbUI7WUFDbkIsV0FBVztZQUxYLDZCQUE2QjtZQUo3QixrQkFBa0I7WUFNbEIsaUJBQWlCO1lBRGpCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBFbnVtQ29udHJvbFBpY2tlclR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vY2xhc3Nlcy9lbnZpcm9ubWVudC1zY2hlbWEnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSwgQ29sdW1uU2NoZW1hQmFzZSwgRGF0YVR5cGUsIEVudGl0eVBpY2tlckNvbHVtbiwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XG5pbXBvcnQgeyBDb0NhdVRvQ2h1Y1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW51bUNhbkJvIH0gZnJvbSAnLi4vZW51bXMvY29tbW9uJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4vY2FuYm8taG9zby1jb2NhdXRvY2h1Yy5zZXJ2aWNlJztcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9Tb0RvaVRhY1NlcnZpY2UgfSBmcm9tICcuL2hvc29kb2l0YWMuc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4vbWFzdGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FuQm9Ib1NvU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgICBlbnZpcm9ubWVudDogYW55O1xuICAgIHZlcnNpb246IGFueTtcbiAgICBsc3RFbnRpdHlQaWNrZXJDb2x1bW46IEVudGl0eVBpY2tlckNvbHVtbltdO1xuICAgIGRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0ID0ge1xuICAgICAgICB2MTogdGhpcy5nZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5WMSgpXG4gICAgfTtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlOiBDYW5Cb19Ib1NvX0NvQ2F1VG9DaHVjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY29DYXVUb0NodWNTZXJ2aWNlOiBDb0NhdVRvQ2h1Y1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2hvU29Eb2lUYWNTZXJ2aWNlOiBIb1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9DYW5Cb19Ib1NvYCk7XG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xuICAgICAgICB0aGlzLmVuZFBvaW50ID0gdGhpcy5lbnZpcm9ubWVudC5hcGlEb21haW4uY2FuYm9FbmRwb2ludDtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5lbnZpcm9ubWVudC5jYXVIaW5oTmdoaWVwVnU/LnZlcnNpb25Db2x1bW5QaWNrZXJDYW5CbztcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmRlZmF1bHRFbnRpdHlDb2x1bW5EaWN0W2B2JHt0aGlzLnZlcnNpb259YF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmxzdEVudGl0eVBpY2tlckNvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW4gPSB0aGlzLmdlbmVyYXRlTGlzdEVudGl0eUNvbHVtbkRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpSGllblRhaUNhbkJvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlIaWVuVGFpLyR7aWRDYW5Cb31gKTtcbiAgICB9XG5cbiAgICBnZXRDYW5Cb0NhcFRyZW4odXNlcklkTGFzdHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q2FuQm9DYXBUcmVuYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogdXNlcklkTGFzdHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdFRyZWVEb25WaVF1YW5MeUJ5VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldExpc3RUcmVlRG9uVmlRdWFuTHlCeVVzZXJgKTtcbiAgICB9XG5cbiAgICBnZXRNb2RlbFNjaGVtYXMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgbmFtZTogJ03DoycsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTcOjJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaWRIb2NWaWVuJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0jhu40gdsOgIHTDqm4nLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdI4buNIHbDoCB0w6puJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25nYXlTaW5oJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnTmfDoHkgc2luaCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05nw6B5IHNpbmgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU+G7kSDEkWnhu4duIHRob+G6oWknLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICdFbWFpbCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNodWNWdVN0cicsXG4gICAgICAgICAgICAgICAgbmFtZTogJ8SQxqFuIHbhu4sgLSBDaOG7qWMgduG7pScsXG4gICAgICAgICAgICAgICAgZnVsbE5hbWU6ICfEkMahbiB24buLIC0gQ2jhu6ljIHbhu6UnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnxJDGoW4gduG7iyAtIENo4bupYyB24bulJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uU2NoZW1hQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUwcHgnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lkSG9jVmllbicsXG4gICAgICAgICAgICAgICAgaW5jbHVkZVNlbGVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyMDBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMTBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZGllblRob2FpRGlEb25nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzExMHB4J1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxODBweCdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlDaHVjVnVTdHInLFxuICAgICAgICAgICAgICAgIGFsbG93RmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlU2VsZWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0RGF0YUV4cG9ydDJDKGdyaWRJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0U2lnbmFsUihcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydDJDYCxcbiAgICAgICAgICAgIGdyaWRJbmZvXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaW5Tb1lldUx5TGljaChpZENhbkJvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vSW5Tb1lldUx5TGljaD9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvaUhvYW4oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9pSG9hbj9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbkx5TGljaEJvTmhpZW0oaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0luTHlMaWNoQm9OaGllbT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KHVybCwgaWRDYW5Cbywge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScsXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0YW9UYWlLaG9hbihpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9UYW9UYWlLaG9hbi8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCB7fSk7XG4gICAgfVxuXG4gICAgZ2V0Q2FuQm9JbmZvKGlkQ2FuQm86IHN0cmluZykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvSW5mby8ke2lkQ2FuQm99YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldERldGFpbFdpdGhDaHVjRGFuaENodWNWdShpZENhbkJvOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChcbiAgICAgICAgICAgIGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGV0YWlsV2l0aENodWNEYW5oQ2h1Y1Z1LyR7aWRDYW5Cb31gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwIG5oYXQgdHJhbmcgdGhhaSBjYW5ib19ob3NvIHRoZW8gaWQgY2FuQm9cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWRDYW5Cb1xuICAgICAqIEBwYXJhbSB7YW55fSBpZFRyYW5nVGhhaVxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIHVwZGF0ZVRyYW5nVGhhaUNhbkJvSG9TbyhpZENhbkJvOiBzdHJpbmcsIGlkVHJhbmdUaGFpOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVUcmFuZ1RoYWlDYW5Cb0hvU28/aWRDYW5Cbz0ke2lkQ2FuQm99JiZpZFRyYW5nVGhhaT0ke2lkVHJhbmdUaGFpfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwge30pO1xuICAgIH1cblxuICAgIEdldFRob25nVGluQ2FuQm9JZChpZENhbkJvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRUaG9uZ1RpbkNhbkJvSWQvJHtpZENhbkJvfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG5cbiAgICBjaGVja0NhbkJvSW5QaG9uZ0RvaU5nb2FpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KGAke3RoaXMuc2VydmljZVVyaX0vQ2hlY2tDYW5Cb0luUGhvbmdEb2lOZ29haWApO1xuICAgIH1cblxuICAgIEdldERhbmhTYWNoQ2FuQm9UaGVvRG9uVmkobHN0SWRPcmdSZXEsIGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGFuaFNhY2hDYW5Cb1RoZW9Eb25WaS8ke2xzdElkT3JnUmVxfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdldERhdGFFeHBvcnRLZXRRdWFEYW5oR2lhKGdyaWRJbmZvKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0RGF0YUV4cG9ydEtldFF1YURhbmhHaWFgO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGdyaWRJbmZvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBM4bqleSBkYW5oIHPDoWNoIGPDoW4gYuG7mSB2w6AgY+G6pXAgZMaw4bubaSBob+G6t2MgbMOgIG5ow6JuIHZpw6puIG5nxrDhu51pIGTDuW5nIHF14bqjbiBsw70gdHLhu7FjIHRp4bq/cFxuICAgICAqIE7hur91IHRyb25nIGPDuW5nIDEgxJHGoW4gduG7iyB0aMOsIG5nxrDhu51pIGPDsyBjaOG7qWMgduG7pSBj4bqlcCB0csaw4bufbmcgc+G6vSBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqblxuICAgICAqIEPDsm4gbmfGsOG7nWkgY8OzIGNo4bupYyB24bulIGPhuqVwIHBow7MgdGjDrCBjw7MgY+G6pXAgZMaw4bubaSBsw6AgdG/DoG4gYuG7mSBuaMOibiB2acOqbiB0cuG7qyBj4bqlcCB0csaw4bufbmcsIC4uLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8UmVzcG9uc2VSZXN1bHQ+fVxuICAgICAqL1xuICAgIGdldENhbkJvQ2FwRHVvaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0dldENhbkJvQ2FwRHVvaWApO1xuICAgIH1cblxuICAgIGNoZWNrSXNDYW5Cb1Bob25nVGNjYigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NoZWNrSXNDYW5Cb1Bob25nVGNjYmApO1xuICAgIH1cblxuICAgIGdldElkc0RvblZpRHVvY1BoZXBRdWFuTHkoaWREb25WaSkge1xuICAgICAgICBsZXQgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRJZHNEb25WaUR1b2NQaGVwUXVhbkx5YDtcbiAgICAgICAgaWYgKGlkRG9uVmkpIHtcbiAgICAgICAgICAgIHVybCArPSBgP2lkRG9uVmk9JHtpZERvblZpfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGdldFBoYW1WaURvblZpUXVhbkx5KGlzR2V0VHJlZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0UGhhbVZpRG9uVmlRdWFuTHk/aXNHZXRUcmVlPSR7aXNHZXRUcmVlfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKTtcbiAgICB9XG4gICAgZ2V0SWRzRG9uVmlRdWFuTHkoYWxsQ2hpbGQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0SWRzRG9uVmlRdWFuTHk/YWxsQ2hpbGQ9JHthbGxDaGlsZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SWRzQ2FuQm9DdW5nRG9uVmkoKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVJbmZvID0gdGhpcy5fdXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgbGV0IGlkc0NhbkJvID0gW107XG4gICAgICAgIGlmIChwcm9maWxlSW5mbz8uaWRDYW5Cbykge1xuICAgICAgICAgICAgY29uc3QgY29tbW9uID0gW3RoaXMubmV3RmlsdGVyKCdjb25IaWV1THVjJywgT3BlcmF0b3IuZXF1YWwsIHRydWUpXTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgICAgLi4uY29tbW9uLFxuICAgICAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpZENhbkJvJywgT3BlcmF0b3IuZXF1YWwsIHByb2ZpbGVJbmZvLmlkQ2FuQm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxldCBpZHNEb25WaUNhbkJvTG9naW4gPSBbXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChmaWx0ZXJzKVxuICAgICAgICAgICAgICAgIC50aGVuKChycykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWREb25WaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGlkc0RvblZpQ2FuQm9Mb2dpbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlkc0RvblZpID0gW107XG4gICAgICAgICAgICBjb25zdCBjb0NhdVRvQ2h1Y0ZpbHRlcnMgPSBuZXcgRmlsdGVyKHsgbG9naWM6ICdvcicsIGZpbHRlcnM6IFtdIH0pO1xuICAgICAgICAgICAgaWRzRG9uVmlDYW5Cb0xvZ2luLmZvckVhY2goKGlkRG9uVmkpID0+IHtcbiAgICAgICAgICAgICAgICBjb0NhdVRvQ2h1Y0ZpbHRlcnMuZmlsdGVycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZER1b25nRGFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBgOyR7aWREb25WaX07YFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChbY29DYXVUb0NodWNGaWx0ZXJzXSwgJ2lkJylcbiAgICAgICAgICAgICAgICAudGhlbigocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkc0RvblZpID0gcnMuZGF0YS5tYXAoKHgpID0+IHguaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpZHNEb25WaS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV3ZmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgICAuLi5jb21tb24sXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2lkRG9uVmknLCBPcGVyYXRvci5pbiwgaWRzRG9uVmkpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbkJvX0hvU29fQ29DYXVUb0NodWNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldEFsbChuZXdmaWx0ZXJzLCAnaWRDYW5CbycpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNDYW5CbyA9IHJzLmRhdGEubWFwKCh4KSA9PiB4LmlkQ2FuQm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaWRzQ2FuQm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGdlbmVyYXRlQ29sdW1uRG9uVmkoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUNhcDJzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2RvblZpVGhlb0NhcCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS2hvYSB2aeG7h24vIMSRxqFuIHbhu4snKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2RvblZpQ2FwM3MnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZG9uVmlUaGVvQ2FwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdC4buZIG3DtG4vIHbEg24gcGjDsm5nIGtob2EnKSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRJbmZvQ2FuQm9XaXRoRG9uVmlDaHVjVnUobHN0SWRDYW5Cbzogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgbHN0SWRDYW5CbyldO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhQ3VzdG9tUm91dGUoXG4gICAgICAgICAgICBgRmlsdGVyQnlPcmcvJHt0aGlzLl9jb21tb25TZXJ2aWNlLmd1aWRFbXB0eSgpfWAsXG4gICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIDEwMDAwMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldFRob25nVGluRG9uVmlDYW5CbyhpdGVtQ2FuQm86IGFueSwgbHN0Q2FuQm9Eb25WaTogYW55W10pIHtcbiAgICAgICAgY29uc3QgaG9Tb0RvblZpID0gbHN0Q2FuQm9Eb25WaS5maW5kKCh4KSA9PiB4LmlkID09IGl0ZW1DYW5Cby5pZENhbkJvKTtcbiAgICAgICAgaWYgKGhvU29Eb25WaSkge1xuICAgICAgICAgICAgaXRlbUNhbkJvLmRvblZpQ2FwMnMgPSBob1NvRG9uVmkuZG9uVmlDYXAycztcbiAgICAgICAgICAgIGl0ZW1DYW5Cby5kb25WaUNhcDNzID0gaG9Tb0RvblZpLmRvblZpQ2FwM3M7XG4gICAgICAgICAgICBpdGVtQ2FuQm8uZG9uVmlDaHVjVnVzID0gaG9Tb0RvblZpLmRvblZpQ2h1Y1Z1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERvblZpRnVsbHNCeUNhbkJvQXBpKGlkQ2FuQm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXREb25WaUZ1bGxzQnlDYW5Cb0FwaT9pZENhbkJvPSR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SW5mb0FmdGVyR2V0RGF0YShkYXRhU291cmNlKSB7XG4gICAgICAgIGNvbnN0IGd1aWRFbXB0eSA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZEVtcHR5KCk7XG4gICAgICAgIGNvbnN0IGlkc0NhbkJvID0gdGhpcy5fY29tbW9uU2VydmljZS5kaXN0aW5jdEFycmF5KFxuICAgICAgICAgICAgZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWRDYW5CbyAhPSBndWlkRW1wdHkpXG4gICAgICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5pZENhbkJvKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsc3RDYW5CbyA9IChcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsKFxuICAgICAgICAgICAgICAgIFt0aGlzLm5ld0ZpbHRlcignaWQnLCBPcGVyYXRvci5pbiwgaWRzQ2FuQm8pXSxcbiAgICAgICAgICAgICAgICAnaWQsY29kZSxob1ZhVGVuLG5nYXlTaW5oLGdpb2lUaW5oJ1xuICAgICAgICAgICAgKVxuICAgICAgICApLmRhdGE7XG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWRDYW5CbyAhPSBndWlkRW1wdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5CbyA9IGxzdENhbkJvLmZpbmQoKHgpID0+IHguaWQgPT0gZWxlbWVudC5pZENhbkJvKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYUNhbkJvID0gY2FuQm8uY29kZTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5ob1ZhVGVuID0gY2FuQm8uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50ZW5DYW5CbyA9IGNhbkJvLmhvVmFUZW47XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmdheVNpbmggPSBjYW5Cby5uZ2F5U2luaDtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5naW9pVGluaCA9IGNhbkJvLmdpb2lUaW5oO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWRVc2VyQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkVXNlckJ5RG9uVmlgLCB7XG4gICAgICAgICAgICBsaXN0R3VpZFZhbHVlOiBsc3RJZERvblZpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJZENhbkJvQnlEb25WaShsc3RJZERvblZpOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L2dldElkQ2FuQm9CeURvblZpYCwge1xuICAgICAgICAgICAgbGlzdEd1aWRWYWx1ZTogbHN0SWREb25WaSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQodXNlcklkKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2V0Q29DYXVUb0NodWNSb290RG9uVmlfQnlVc2VySWQvJHt1c2VySWR9YDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVmYXVsdEdldCh1cmwpO1xuICAgIH1cblxuICAgIGFzeW5jIEdldENvQ2F1VG9DaHVjUm9vdERvblZpX0J5TGlzdFVzZXJJZChsc3RVc2VySWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaV9CeUxpc3RVc2VySWRgO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGxzdFVzZXJJZCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29DYXVUb0NodWNSb290RG9uVmkoZ3JpZEluZm8pIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRBbGxCeUZpbHRlci9HZXRDb0NhdVRvQ2h1Y1Jvb3REb25WaWA7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZ3JpZEluZm8pO1xuICAgIH1cblxuICAgIGdlbmVyYXRlUGlja2VyQ29udHJvbFNjaGVtYShjb250cm9sOiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hLCBlbnVtQ2FuQm86IGFueSA9IEVudW1DYW5Cby5UUk9OR19ET05fVkkpIHtcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBbLi4udGhpcy5sc3RFbnRpdHlQaWNrZXJDb2x1bW5dO1xuICAgICAgICBpZiAoY29udHJvbC5pc092ZXJyaWRlQ29sdW1ucykge1xuICAgICAgICAgICAgY29sdW1ucyA9IFsuLi5jb250cm9sLmNvbHVtbnNdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2wuY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKC4uLmNvbnRyb2wuY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wuZGF0YVR5cGUgPT0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLkRPSVRBQyAmJiAhY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5jb2RlID09ICdpZERvaVRhYycpKSB7XG4gICAgICAgICAgICBjb2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiAnaWREb2lUYWMnLFxuICAgICAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEoe1xuICAgICAgICAgICAgZmllbGQ6ICdpZENhbkJvJyxcbiAgICAgICAgICAgIGxhYmVsOiAnQ8OhbiBi4buZJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQ2jhu41uIGPDoW4gYuG7mScsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcyxcbiAgICAgICAgICAgIHBsdXNVcmw6ICdXaXRoQ2h1Y0RhbmhDaHVjVnUnLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnaG9WYVRlbicsXG4gICAgICAgICAgICBmaWVsZFBsdXM6ICdjb2RlJyxcbiAgICAgICAgICAgIGZpZWxkU2VhcmNoVGV4dDogWydlbWFpbCcsICdjb2RlJ10sXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGl0ZW0uaG9WYVRlbjtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGAke2l0ZW0uY29kZX0gLSAke3Jlc3VsdH0gYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGVuRG9uVmkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAtICR7aXRlbS50ZW5Eb25WaX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhRHJvcGRvd246IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhU291cmNlPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkVmFsdWUgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxzdElkRG9pVGFjID0gdGhpcy5fY29tbW9uU2VydmljZS5kaXN0aW5jdChkYXRhU291cmNlLmZpbHRlcihpdGVtID0+ICEhaXRlbS5pZERvaVRhYykuZmxhdE1hcChpdGVtID0+IGl0ZW0uaWREb2lUYWMuc3BsaXQoJywnKSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobHN0SWREb2lUYWMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsc3REb2lUYWMgPSAoYXdhaXQgdGhpcy5faG9Tb0RvaVRhY1NlcnZpY2UuZ2V0QWxsV2l0aElnbm9yZShbdGhpcy5uZXdGaWx0ZXIoJ2lkJywgT3BlcmF0b3IuaW4sIGxzdElkRG9pVGFjLmZpbHRlcihpZCA9PiAhIWlkKSldLCAnaWQsdGVuJykpPy5kYXRhID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxzdERvaVRhYy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGVuRG9pVGFjID0gbHN0RG9pVGFjLmZpbHRlcih4ID0+IGl0ZW0uaWREb2lUYWMuaW5jbHVkZXMoeC5pZCkpLm1hcCh4ID0+IHgudGVuKS5qb2luKCcsICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRWYWx1ZSA9PSAnb2JqZWN0JyAmJiB4LmlkID09IHNlbGVjdGVkVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC50ZW5Eb2lUYWMgPSBzZWxlY3RlZFZhbHVlPy5zdHJpZERvaVRhY1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHNlbGVjdGVkVmFsdWUpICYmIHNlbGVjdGVkVmFsdWUuaW5jbHVkZXMoeC5pZCkpIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRlbkRvaVRhYyA9IHNlbGVjdGVkVmFsdWUuZmluZCh5ID0+IHkuaWQgPT0geC5pZCk/LnN0cmlkRG9pVGFjXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGVuRG9uVmkoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhUGlja2VkOiBhc3luYyAoZGF0YVNvdXJjZSwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0RGF0YVBsdXMoZGF0YVNvdXJjZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ6IGFzeW5jIChkYXRhU291cmNlLCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXREYXRhUGx1cyhkYXRhU291cmNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWZhdWx0RmlsdGVyczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5pc0NhY2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc0NhY2hpbmcnLCBPcGVyYXRvci5lcXVhbCwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnVtQ2FuQm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ2FuQm8uTkdPQUlfRE9OX1ZJOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMubmV3RmlsdGVyKCdpc05nb2FpRG9uVmknLCBPcGVyYXRvci5lcXVhbCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNhbkJvLlRST05HX0RPTl9WSTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLm5ld0ZpbHRlcignaXNOZ29haURvblZpJywgT3BlcmF0b3IuZXF1YWwsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5jb250cm9sLFxuICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5maWVsZFBsdXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByZXN1bHQuZmllbGRQbHVzXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHEpID0+IHEudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZignaWROZ2FjaFZpZW5DaHVjJykgPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5maWVsZFBsdXMgKz0gJyxpZE5nYWNoVmllbkNodWMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzdWx0LmlzT3ZlcnJpZGVDb2x1bW5zKVxuICAgICAgICAgICAgcmVzdWx0LmZpZWxkUGx1cyA9ICdpZE5nYWNoVmllbkNodWMsbmdheVNpbmgsbmdheVNpbmgyLGNodWNEYW5ocyxpZEhvY0hhbSxpZEhvY1ZpLGRpZW5UaG9haURpRG9uZyxjb2RlJztcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRlbkRvblZpKGRhdGFTb3VyY2U6IGFueVtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhU291cmNlKSB7XG4gICAgICAgICAgICAvLyBC4buVIHN1bmcgbeG7mXQgc+G7kSB0aMO0bmcgdGluIMSR4buDIGhp4buDbiB0aOG7iyBsYWJlbCB0csOqbiBhdXRvY29tcGxldGUgcGlja2VyIGThuqFuZyBkcm9wZG93blxuICAgICAgICAgICAgaWYgKGl0ZW0uZG9uVmlDaHVjVnVzICYmIGl0ZW0uZG9uVmlDaHVjVnVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbURvblZpQ2hpbmggPSBpdGVtLmRvblZpQ2h1Y1Z1cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocSkgPT4gcS5pc0RvblZpQ2hpbmhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghaXRlbURvblZpQ2hpbmgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbURvblZpQ2hpbmggPSBpdGVtLmRvblZpQ2h1Y1Z1c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlbS50ZW5Eb25WaSA9IGl0ZW1Eb25WaUNoaW5oLmNodWNWdVxuICAgICAgICAgICAgICAgICAgICA/IGAke2l0ZW1Eb25WaUNoaW5oLmNodWNWdX0gJHtpdGVtRG9uVmlDaGluaC5kb25WaX1gXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbURvblZpQ2hpbmguZG9uVmk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXREYXRhUGx1cyhkYXRhU291cmNlOiBhbnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNodWNEYW5ocykge1xuICAgICAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzID0gaXRlbS5jaHVjRGFuaHMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzID0gJyc7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaHVjRGFuaHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbS5jaHVjRGFuaHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY2h1Y0RhbmgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyQ2h1Y0RhbmhzICs9IGkuY2h1Y0Rhbmg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyA9ICcnO1xuICAgICAgICAgICAgaWYgKGl0ZW0uZG9uVmlDaHVjVnVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbS5kb25WaUNodWNWdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkuY2h1Y1Z1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyArPSBgPHA+JHtpLmNodWNWdX0gLSAke2kuZG9uVml9PC9wPmA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN0ckRvblZpQ2h1Y1Z1cyArPSBgPHA+JHtpLmRvblZpfTwvcD5gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpdGVtLm5nYXlTaW5oICYmIGl0ZW0ubmdheVNpbmgyKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5uZ2F5U2luaCA9IG5ldyBEYXRlKGl0ZW0ubmdheVNpbmgyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uaG9jSGFtSG9jVmlcbiAgICAgICAgICAgICAgICA9IGl0ZW0uaWRIb2NIYW0gJiYgaXRlbS5pZEhvY1ZpXG4gICAgICAgICAgICAgICAgICAgID8gYCR7aXRlbS5pZEhvY0hhbX0uICR7aXRlbS5pZEhvY1ZpfWBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtLmlkSG9jSGFtIHx8IGl0ZW0uaWRIb2NWaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNhbkJvVG9HaWFuZ1ZpZW4obW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L1VwZGF0ZUNhbkJvVG9HaWFuZ1ZpZW5gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVHaWFuZ1ZpZW5Eb2lUYWMobW9kZWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QoXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcml9L0NyZWF0ZUdpYW5nVmllbkRvaVRhY2AsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldERvblZpUGhhbkNhcEJ5SWRzKG1vZGVsLCBpc1VzZXIgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpUGhhbkNhcEJ5SWRzLyR7aXNVc2VyfWAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHaWFuZ1ZpZW5Ob2lCbyhtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UHV0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVHaWFuZ1ZpZW5Ob2lCby8ke21vZGVsLmlkfWAsXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwZGF0ZUdpYW5nVmllbkRvaVRhYyhtb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UHV0KFxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGRhdGVHaWFuZ1ZpZW5Eb2lUYWMvJHttb2RlbC5pZH1gLFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRMeUxpY2hLaG9hSG9jQ2FuQm8oaWQpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRMeUxpY2hLaG9hSG9jQ2FuQm8vJHtpZH1gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgYXN5bmMgR2V0RG9uVmlDaHVjVnUoaWRDYW5Cbykge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERvblZpQ2h1Y1Z1LyR7aWRDYW5Cb31gO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5EZWZhdWx0KCkge1xuICAgICAgICBjb25zdCBfbWFzdGVyRGF0YVNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoTWFzdGVyRGF0YVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNw6MnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdjb2RlJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc4MHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdI4buNYyBow6BtLCBo4buNYyB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnaG9jSGFtSG9jVmknLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNTBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBEYXRhVHlwZS5kYXRlLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyBkYW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyQ2h1Y0RhbmhzJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1MHB4JyxcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6ljIHbhu6UgLSDEkMahbiB24buLJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnc3RyRG9uVmlDaHVjVnVzJyxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnLFxuICAgICAgICAgICAgICAgIG5vdEluRmllbGRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjIwcHgnLFxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRlbXBsYXRlRmlsdGVyOiB0ZW1wbGF0ZS5maWx0ZXJEb25WaVJlZixcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdpZERvblZpcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRW1haWwnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLmVxdWFsLFxuICAgICAgICAgICAgICAgIGlzT3ZlcnJpZGVGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNzBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnxJDhu5FpIHTDoWMnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdpZERvaVRhYycsXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNBcnJheUZpZWxkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9ob1NvRG9pVGFjU2VydmljZSxcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaG9uZ0tlQ2FuQm8ocGx1c1VybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vJHt0aGlzLmFwaUdldERhdGF9LyR7cGx1c1VybH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3RFbnRpdHlDb2x1bW5WMSgpIHtcbiAgICAgICAgY29uc3QgX21hc3RlckRhdGFTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KE1hc3RlckRhdGFTZXJ2aWNlKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTcOjJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLFxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnODBweCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSOG7jSB2w6AgdMOqbicsXG4gICAgICAgICAgICAgICAgY29kZTogJ2hvVmFUZW4nLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbixcbiAgICAgICAgICAgICAgICBmdWxsVGV4dFNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEVudGl0eVBpY2tlckNvbHVtbih7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8OgeSBzaW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnbmdheVNpbmgnLFxuICAgICAgICAgICAgICAgIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IDEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBFbnRpdHlQaWNrZXJDb2x1bW4oe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnR2nhu5tpIHTDrW5oJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZ2lvaVRpbmgnLFxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiBfbWFzdGVyRGF0YVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ3JvdXBDb2RlOiAnR0lPSV9USU5IJyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaXNTZWFyY2hhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnOTBweCcsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAxLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0No4bupYyB24bulIC0gxJDGoW4gduG7iycsXG4gICAgICAgICAgICAgICAgY29kZTogJ3N0ckRvblZpQ2h1Y1Z1cycsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdodG1sJyxcbiAgICAgICAgICAgICAgICBub3RJbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzIyMHB4JyxcbiAgICAgICAgICAgICAgICBzb3J0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyB0ZW1wbGF0ZUZpbHRlcjogdGVtcGxhdGUuZmlsdGVyRG9uVmlSZWYsXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpZWxkRmlsdGVyOiAnaWREb25WaXMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRW50aXR5UGlja2VyQ29sdW1uKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0VtYWlsJyxcbiAgICAgICAgICAgICAgICBjb2RlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5lcXVhbCxcbiAgICAgICAgICAgICAgICBpc092ZXJyaWRlRmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTcwcHgnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXRRdWFuTHlDYXBUcmVuQnlVc2VySWQoaWRVc2VyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEdldChgJHt0aGlzLnNlcnZpY2VVcml9L0NhbkJvUXVhbkx5QnlVc2VySWQvJHtpZFVzZXJ9YCk7XG4gICAgfVxuXG4gICAgZ2V0RGFuaFNhY2hVc2VyQ2FwVHJlbihpZHNEb25WaSkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldERhbmhTYWNoVXNlckNhcFRyZW5gO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGlkc0RvblZpKTtcbiAgICB9XG5cblxufVxuXG4iXX0=
|
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -17655,6 +17655,17 @@ class CanBoHoSoService extends BaseService {
|
|
|
17655
17655
|
else if (((_a = control.columns) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
17656
17656
|
columns.push(...control.columns);
|
|
17657
17657
|
}
|
|
17658
|
+
if (control.dataType == EnumControlPickerType.DOITAC && !columns.some(item => item.code == 'idDoiTac')) {
|
|
17659
|
+
columns.push(new EntityPickerColumn({
|
|
17660
|
+
label: 'Đối tác',
|
|
17661
|
+
code: 'idDoiTac',
|
|
17662
|
+
baseService: this._hoSoDoiTacService,
|
|
17663
|
+
multiple: true,
|
|
17664
|
+
fullTextSearch: true,
|
|
17665
|
+
isArrayField: true,
|
|
17666
|
+
width: '200px',
|
|
17667
|
+
}));
|
|
17668
|
+
}
|
|
17658
17669
|
const result = new AutoCompletePickerControlSchema(Object.assign(Object.assign({ field: 'idCanBo', label: 'Cán bộ', title: 'Chọn cán bộ', multiple: false, baseService: this, plusUrl: 'WithChucDanhChucVu', displayField: 'hoVaTen', fieldPlus: 'code', fieldSearchText: ['email', 'code'], funcGetLabel: (item) => {
|
|
17659
17670
|
let result = item.hoVaTen;
|
|
17660
17671
|
if (item.code) {
|
|
@@ -17664,9 +17675,34 @@ class CanBoHoSoService extends BaseService {
|
|
|
17664
17675
|
result += `- ${item.tenDonVi}`;
|
|
17665
17676
|
}
|
|
17666
17677
|
return result;
|
|
17667
|
-
}, required: true, afterGetDataDropdown: (dataSource, element) => {
|
|
17678
|
+
}, required: true, afterGetDataDropdown: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
17679
|
+
var _b, _c;
|
|
17680
|
+
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
17681
|
+
return;
|
|
17682
|
+
const { selectedValue } = element;
|
|
17683
|
+
if (!selectedValue) {
|
|
17684
|
+
const lstIdDoiTac = this._commonService.distinct(dataSource.filter(item => !!item.idDoiTac).flatMap(item => item.idDoiTac.split(',')));
|
|
17685
|
+
if (lstIdDoiTac.length) {
|
|
17686
|
+
const lstDoiTac = (_c = (_b = (yield this._hoSoDoiTacService.getAllWithIgnore([this.newFilter('id', Operator.in, lstIdDoiTac.filter(id => !!id))], 'id,ten'))) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : [];
|
|
17687
|
+
if (lstDoiTac.length) {
|
|
17688
|
+
dataSource.forEach(item => {
|
|
17689
|
+
item.tenDoiTac = lstDoiTac.filter(x => item.idDoiTac.includes(x.id)).map(x => x.ten).join(', ');
|
|
17690
|
+
});
|
|
17691
|
+
}
|
|
17692
|
+
}
|
|
17693
|
+
}
|
|
17694
|
+
else {
|
|
17695
|
+
dataSource.forEach((x) => {
|
|
17696
|
+
var _a;
|
|
17697
|
+
if (typeof selectedValue == 'object' && x.id == (selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.id)) {
|
|
17698
|
+
x.tenDoiTac = selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.stridDoiTac;
|
|
17699
|
+
}
|
|
17700
|
+
else if (isArray(selectedValue) && selectedValue.includes(x.id))
|
|
17701
|
+
(x.tenDoiTac = (_a = selectedValue.find(y => y.id == x.id)) === null || _a === void 0 ? void 0 : _a.stridDoiTac);
|
|
17702
|
+
});
|
|
17703
|
+
}
|
|
17668
17704
|
this.getTenDonVi(dataSource);
|
|
17669
|
-
}, afterGetDataPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
17705
|
+
}), afterGetDataPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
17670
17706
|
yield this.getDataPlus(dataSource);
|
|
17671
17707
|
}), afterGetDataUnPicked: (dataSource, element) => __awaiter(this, void 0, void 0, function* () {
|
|
17672
17708
|
yield this.getDataPlus(dataSource);
|
|
@@ -17687,17 +17723,6 @@ class CanBoHoSoService extends BaseService {
|
|
|
17687
17723
|
}
|
|
17688
17724
|
return filters;
|
|
17689
17725
|
} }, control), { columns: columns }));
|
|
17690
|
-
if (control.dataType == EnumControlPickerType.DOITAC && !this.lstEntityPickerColumn.some(item => item.code == 'idDoiTac')) {
|
|
17691
|
-
this.lstEntityPickerColumn.push(new EntityPickerColumn({
|
|
17692
|
-
label: 'Đối tác',
|
|
17693
|
-
code: 'idDoiTac',
|
|
17694
|
-
baseService: this._hoSoDoiTacService,
|
|
17695
|
-
multiple: true,
|
|
17696
|
-
fullTextSearch: true,
|
|
17697
|
-
isArrayField: true,
|
|
17698
|
-
width: '200px',
|
|
17699
|
-
}));
|
|
17700
|
-
}
|
|
17701
17726
|
if (result.fieldPlus) {
|
|
17702
17727
|
if (result.fieldPlus
|
|
17703
17728
|
.split(',')
|
|
@@ -17706,14 +17731,11 @@ class CanBoHoSoService extends BaseService {
|
|
|
17706
17731
|
result.fieldPlus += ',idNgachVienChuc';
|
|
17707
17732
|
}
|
|
17708
17733
|
}
|
|
17709
|
-
|
|
17734
|
+
if (!result.isOverrideColumns)
|
|
17710
17735
|
result.fieldPlus = 'idNgachVienChuc,ngaySinh,ngaySinh2,chucDanhs,idHocHam,idHocVi,dienThoaiDiDong,code';
|
|
17711
|
-
}
|
|
17712
17736
|
return result;
|
|
17713
17737
|
}
|
|
17714
17738
|
getTenDonVi(dataSource) {
|
|
17715
|
-
if (!(dataSource === null || dataSource === void 0 ? void 0 : dataSource.length))
|
|
17716
|
-
return;
|
|
17717
17739
|
for (const item of dataSource) {
|
|
17718
17740
|
// Bổ sung một số thông tin để hiển thị label trên autocomplete picker dạng dropdown
|
|
17719
17741
|
if (item.donViChucVus && item.donViChucVus.length > 0) {
|
|
@@ -38629,12 +38651,12 @@ class EntityPickerDataComponent extends DataListBase {
|
|
|
38629
38651
|
if (this.control.filterWhileProcess) {
|
|
38630
38652
|
yield appendDefaultFilter(gridInfo.filters, this.control.filterWhileProcess);
|
|
38631
38653
|
}
|
|
38632
|
-
if (this.setting.columnSetting.sortField) {
|
|
38633
|
-
|
|
38634
|
-
|
|
38635
|
-
|
|
38636
|
-
|
|
38637
|
-
}
|
|
38654
|
+
// if (this.setting.columnSetting.sortField) {
|
|
38655
|
+
// gridInfo.sorts.push(<Sort>{
|
|
38656
|
+
// field: this.setting.columnSetting.sortField,
|
|
38657
|
+
// dir: this.setting.columnSetting.sortDir ? 1 : -1
|
|
38658
|
+
// });
|
|
38659
|
+
// }
|
|
38638
38660
|
if (this.searchData && Array.isArray(this.searchData.lstData)) {
|
|
38639
38661
|
gridInfo.filters.push(this.newFilter(this.searchData.fieldFilter, Operator.in, this.searchData.lstData));
|
|
38640
38662
|
}
|
|
@@ -39236,9 +39258,9 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39236
39258
|
displayField: this.control.displayField,
|
|
39237
39259
|
valueField: this.control.valueField,
|
|
39238
39260
|
fieldPlus: this.control.fieldPlus,
|
|
39239
|
-
funcGetLabel: this.control.funcGetLabel,
|
|
39240
|
-
plusUrl: this.control.plusUrl,
|
|
39241
39261
|
sorts: this.control.sorts,
|
|
39262
|
+
funcGetLabel: this.control.funcGetLabel,
|
|
39263
|
+
plusUrl: this.control.plusUrl
|
|
39242
39264
|
});
|
|
39243
39265
|
if (pageSize) {
|
|
39244
39266
|
result.pageSize = pageSize;
|
|
@@ -39279,7 +39301,7 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39279
39301
|
}
|
|
39280
39302
|
}
|
|
39281
39303
|
const dataSource = yield this.control.baseService.getDataDropdownByFilter(filters, this.getDropdownOptions());
|
|
39282
|
-
this.fireEventAfterGetDataDropDown(dataSource);
|
|
39304
|
+
yield this.fireEventAfterGetDataDropDown(dataSource);
|
|
39283
39305
|
this.reStructureDataSource(dataSource);
|
|
39284
39306
|
this.results = this.dataSource;
|
|
39285
39307
|
// Return để một số nơi khác dùng, k remove
|
|
@@ -39287,9 +39309,11 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39287
39309
|
});
|
|
39288
39310
|
}
|
|
39289
39311
|
fireEventAfterGetDataDropDown(dataSource) {
|
|
39290
|
-
|
|
39291
|
-
this.control.afterGetDataDropdown
|
|
39292
|
-
|
|
39312
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39313
|
+
if (this.control.afterGetDataDropdown) {
|
|
39314
|
+
yield this.control.afterGetDataDropdown(dataSource, this);
|
|
39315
|
+
}
|
|
39316
|
+
});
|
|
39293
39317
|
}
|
|
39294
39318
|
resetControl() {
|
|
39295
39319
|
// if (this._value != null) {
|
|
@@ -39471,7 +39495,7 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39471
39495
|
dataSource = yield this.control.baseService.getDataDropdownByFilter([
|
|
39472
39496
|
this.newFilter(this.control.valueField, Operator.in, this.value)
|
|
39473
39497
|
], this.getDropdownOptions(this.value.length));
|
|
39474
|
-
this.fireEventAfterGetDataDropDown(dataSource);
|
|
39498
|
+
yield this.fireEventAfterGetDataDropDown(dataSource);
|
|
39475
39499
|
}
|
|
39476
39500
|
this.reStructureDataSource(dataSource);
|
|
39477
39501
|
this.selectedValueObject = this.dataSource;
|
|
@@ -39482,7 +39506,7 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39482
39506
|
dataSource = yield this.control.baseService.getDataDropdownByFilter([
|
|
39483
39507
|
this.newFilter(this.control.valueField, Operator.equal, this.value)
|
|
39484
39508
|
], this.getDropdownOptions(1));
|
|
39485
|
-
this.fireEventAfterGetDataDropDown(dataSource);
|
|
39509
|
+
yield this.fireEventAfterGetDataDropDown(dataSource);
|
|
39486
39510
|
}
|
|
39487
39511
|
this.reStructureDataSource(dataSource);
|
|
39488
39512
|
if (this.dataSource.length > 0) {
|
|
@@ -39538,13 +39562,13 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39538
39562
|
const filters = [];
|
|
39539
39563
|
filters.push(this.newFilter(this.control.valueField, Operator.in, obj));
|
|
39540
39564
|
yield appendDefaultFilter(filters, this.control.defaultFilters);
|
|
39541
|
-
this.control.baseService.getDataDropdownByFilter(filters, this.getDropdownOptions(obj.length)).then(res => {
|
|
39542
|
-
this.fireEventAfterGetDataDropDown(res);
|
|
39565
|
+
this.control.baseService.getDataDropdownByFilter(filters, this.getDropdownOptions(obj.length)).then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
39566
|
+
yield this.fireEventAfterGetDataDropDown(res);
|
|
39543
39567
|
this.reStructureDataSource(res);
|
|
39544
39568
|
this.results = this.dataSource;
|
|
39545
39569
|
this.selectedValueObject = this.dataSource;
|
|
39546
39570
|
resolve(this.selectedValueObject);
|
|
39547
|
-
});
|
|
39571
|
+
}));
|
|
39548
39572
|
}
|
|
39549
39573
|
else {
|
|
39550
39574
|
this.results = [];
|
|
@@ -39554,9 +39578,9 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39554
39578
|
}
|
|
39555
39579
|
else {
|
|
39556
39580
|
if (obj != null) {
|
|
39557
|
-
this.control.baseService.getDataDropdownByFilter([this.newFilter(this.control.valueField, Operator.equal, obj)], this.getDropdownOptions(1)).then(res => {
|
|
39581
|
+
this.control.baseService.getDataDropdownByFilter([this.newFilter(this.control.valueField, Operator.equal, obj)], this.getDropdownOptions(1)).then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
39558
39582
|
if ((res === null || res === void 0 ? void 0 : res.length) > 0) {
|
|
39559
|
-
this.fireEventAfterGetDataDropDown(res);
|
|
39583
|
+
yield this.fireEventAfterGetDataDropDown(res);
|
|
39560
39584
|
this.reStructureDataSource(res);
|
|
39561
39585
|
this.results = this.dataSource;
|
|
39562
39586
|
this.selectedValueObject = this.dataSource[0];
|
|
@@ -39565,7 +39589,7 @@ class AutoCompletePickerComponent extends ComponentBase {
|
|
|
39565
39589
|
this.control.callBack.select(this.selectedValue);
|
|
39566
39590
|
}
|
|
39567
39591
|
}
|
|
39568
|
-
});
|
|
39592
|
+
}));
|
|
39569
39593
|
}
|
|
39570
39594
|
else {
|
|
39571
39595
|
this.results = [];
|
|
@@ -41283,12 +41307,12 @@ class EntityPickerTreeDataComponent extends TreeListBase {
|
|
|
41283
41307
|
if (this.control.filterWhileProcess) {
|
|
41284
41308
|
yield appendDefaultFilter(gridInfo.filters, this.control.filterWhileProcess);
|
|
41285
41309
|
}
|
|
41286
|
-
if (this.setting.columnSetting.sortField) {
|
|
41287
|
-
|
|
41288
|
-
|
|
41289
|
-
|
|
41290
|
-
|
|
41291
|
-
}
|
|
41310
|
+
// if (this.setting.columnSetting.sortField) {
|
|
41311
|
+
// gridInfo.sorts.push(<Sort>{
|
|
41312
|
+
// field: this.setting.columnSetting.sortField,
|
|
41313
|
+
// dir: this.setting.columnSetting.sortDir ? 1 : -1
|
|
41314
|
+
// });
|
|
41315
|
+
// }
|
|
41292
41316
|
});
|
|
41293
41317
|
}
|
|
41294
41318
|
beforeRenderDataSource(data) {
|
|
@@ -41676,6 +41700,8 @@ class EntityPickerComponent extends DataListBase {
|
|
|
41676
41700
|
this.setting.fieldSearchText = this.control.fieldSearchText;
|
|
41677
41701
|
this.setting.showEditLink = !this.readOnly && this.control.showEditLink;
|
|
41678
41702
|
this.setting.hiddenPageSetting = this.control.hiddenPageSetting;
|
|
41703
|
+
this.setting.columnSetting.sortField = this.control.sortField;
|
|
41704
|
+
this.setting.columnSetting.sortDir = this.control.sortDir;
|
|
41679
41705
|
this.plusUrl = this.control.plusUrl;
|
|
41680
41706
|
// Todo: HieuND
|
|
41681
41707
|
this.control.columns.forEach(column => {
|