basesite-shared-grid-lib 15.10.51 → 15.10.52
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/basesite-shared-grid-lib-15.10.52.tgz +0 -0
- package/esm2020/lib/grid-library.component.mjs +23 -3
- package/fesm2015/basesite-shared-grid-lib.mjs +22 -2
- package/fesm2015/basesite-shared-grid-lib.mjs.map +1 -1
- package/fesm2020/basesite-shared-grid-lib.mjs +22 -2
- package/fesm2020/basesite-shared-grid-lib.mjs.map +1 -1
- package/lib/grid-library.component.d.ts +1 -0
- package/package.json +1 -1
- package/basesite-shared-grid-lib-15.10.51.tgz +0 -0
|
Binary file
|
|
@@ -34,6 +34,7 @@ export class GridLibraryComponent {
|
|
|
34
34
|
this.initialColumnDef = [];
|
|
35
35
|
this.rowDataHidden = [];
|
|
36
36
|
this.exportColumnsList = [];
|
|
37
|
+
this.gridColumns = [];
|
|
37
38
|
this.tooltipShowDelay = 0;
|
|
38
39
|
this.tooltipHideDelay = 2000;
|
|
39
40
|
this.rowModelType = 'clientSide';
|
|
@@ -122,7 +123,12 @@ export class GridLibraryComponent {
|
|
|
122
123
|
this.initialColumnDef = response.result;
|
|
123
124
|
let coldef = this._mapColumnDef(response.result, this.userRoles).filter((column) => column);
|
|
124
125
|
this.exportColumnsList = response.result;
|
|
125
|
-
|
|
126
|
+
//changes done by raghav
|
|
127
|
+
//this.columnDefs = coldef;
|
|
128
|
+
if (this.gridId == 1 && !this.canCreateDac(this.userRoles, "createDac"))
|
|
129
|
+
this.gridColumns = coldef;
|
|
130
|
+
else
|
|
131
|
+
this.columnDefs = coldef;
|
|
126
132
|
// this.agGrid.gridOptions?.api?.setColumnDefs(coldef);
|
|
127
133
|
this.getGridState();
|
|
128
134
|
}
|
|
@@ -277,7 +283,8 @@ export class GridLibraryComponent {
|
|
|
277
283
|
if (roles?.length > 0 && field === 'createDac') {
|
|
278
284
|
const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));
|
|
279
285
|
const isDesignManager = this.userRoles.includes(this._Design_Manager);
|
|
280
|
-
return
|
|
286
|
+
return isAEGroup || isDesignManager ? true : false;
|
|
287
|
+
//return !(isAEGroup || isDesignManager);
|
|
281
288
|
}
|
|
282
289
|
return false;
|
|
283
290
|
}
|
|
@@ -337,6 +344,19 @@ export class GridLibraryComponent {
|
|
|
337
344
|
}
|
|
338
345
|
}
|
|
339
346
|
setGridState() {
|
|
347
|
+
if (this.gridId == 1 && !this.canCreateDac(this.userRoles, "createDac")) {
|
|
348
|
+
var arrIndex = this.gridColumns.findIndex((x) => x.field == "createDac");
|
|
349
|
+
var dacStatusIndex = this.gridColumns.findIndex((x) => x.field == "dacStatus");
|
|
350
|
+
if (arrIndex > -1)
|
|
351
|
+
this.gridColumns.splice(arrIndex, 1);
|
|
352
|
+
if (dacStatusIndex > -1)
|
|
353
|
+
this.gridColumns.splice(dacStatusIndex, 1);
|
|
354
|
+
this.columnDefs = this.gridColumns;
|
|
355
|
+
}
|
|
356
|
+
this.columnDefs = this.gridColumns;
|
|
357
|
+
if (this.gridId == 1 && this.canCreateDac(this.userRoles, "createDac")) {
|
|
358
|
+
this.columnDefs[arrIndex].hide = false;
|
|
359
|
+
}
|
|
340
360
|
if (this.gridColumnState) {
|
|
341
361
|
this.gridAPI.applyColumnState({ state: this.gridColumnState.columnSizing?.columnSizingModel, applyOrder: true });
|
|
342
362
|
if (this.gridColumnState.sort) {
|
|
@@ -631,4 +651,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
631
651
|
}], selectionChanged: [{
|
|
632
652
|
type: Output
|
|
633
653
|
}] } });
|
|
634
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBOEMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTdDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUkvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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VTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQge1xyXG4gIENvbERlZixcclxuICBHZXRDb250ZXh0TWVudUl0ZW1zUGFyYW1zLFxyXG4gIEdldFJvd0lkRnVuYyxcclxuICBHZXRSb3dJZFBhcmFtcyxcclxuICBHcmlkQXBpLFxyXG4gIEdyaWRSZWFkeUV2ZW50LFxyXG4gIE1lbnVJdGVtRGVmLFxyXG4gIFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXMsXHJcbiAgUm93TW9kZWxUeXBlLFxyXG4gIFJvd05vZGUsXHJcbiAgVmFsdWVGb3JtYXR0ZXJQYXJhbXMsXHJcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBHcmlkTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2dyaWQtbGlicmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBCdXR0b25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub29sdGlwIH0gZnJvbSAnLi9yZW5kZXJlci90b29sdGlwLXJlbmRlcmVyL2N1c3RvbS10b29sdGlwLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgRHJvcGRvd25SZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvZHJvcGRvd24tcmVuZGVyZXIvZHJvcC1kb3duLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgQ29sdW1uVmFsdWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvY29sdW1uLXZhbHVlLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2tlblNoYXJpbmdTZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi1zaGFyaW5nLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmFzZXNpdGUtc2hhcmVkLWdyaWQtbGliJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAjYWdHcmlkXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0Ojk4LjJ2aFwiXHJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtIHNoYXJlZC1ncmlkLWxpYlwiXHJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXHJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcclxuICAgICAgW2FuaW1hdGVSb3dzXT1cInRydWVcIlxyXG4gICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgW3BhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJdPVwicGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclwiXHJcbiAgICAgIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cInBhZ2luYXRpb25BdXRvUGFnZVNpemVcIlxyXG4gICAgICBbdG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCJcclxuICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiXHJcbiAgICAgIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcclxuICAgICAgW2NhY2hlQmxvY2tTaXplXT1cImNhY2hlQmxvY2tTaXplXCJcclxuICAgICAgW21heENvbmN1cnJlbnREYXRhc291cmNlUmVxdWVzdHNdPVwiMVwiXHJcbiAgICAgIFtibG9ja0xvYWREZWJvdW5jZU1pbGxpc109XCIxMDBcIlxyXG4gICAgICAoY29sdW1uVmlzaWJsZSk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5QaW5uZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uUmVzaXplZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5Nb3ZlZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgIFtyb3dNdWx0aVNlbGVjdFdpdGhDbGlja109XCJyb3dNdWx0aVNlbGVjdFdpdGhDbGlja1wiXHJcbiAgICAgIFtnZXRDb250ZXh0TWVudUl0ZW1zXT1cImdldENvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cIm9uRmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpcnN0RGF0YVJlbmRlcmVkKT1cIm9uRmlyc3REYXRhUmVuZGVyZWQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcclxuICAgICAgI2FnR3JpZEhpZGRlblxyXG4gICAgICBzdHlsZT1cImhlaWdodDoxMDB2aDsgd2lkdGg6MTAwJTtkaXNwbGF5Om5vbmVcIlxyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXHJcbiAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFIaWRkZW5cIlxyXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgIFthbmltYXRlUm93c109XCJmYWxzZVwiXHJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ211bHRpcGxlJ1wiXHJcbiAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHlFeGNlbCgkZXZlbnQpXCJcclxuICAgICAgW3N1cHByZXNzU2Nyb2xsT25OZXdEYXRhXT1cInRydWVcIlxyXG4gICAgICBbY2FjaGVRdWlja0ZpbHRlcl09XCJmYWxzZVwiXHJcbiAgICA+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICBgLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkTGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIC8vaW5wdXQgcGFyYW1zXHJcbiAgQElucHV0KCkgY29sdW1uRGVmczogYW55O1xyXG4gIEBJbnB1dCgpIHJvd0RhdGE6IGFueTtcclxuICAvL0BJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAyMDtcclxuICBASW5wdXQoKSBwYWdpbmF0aW9uQXV0b1BhZ2VTaXplID0gdHJ1ZTtcclxuICBASW5wdXQoKSByb3dTZWxlY3Rpb246IGFueSA9ICdtdWx0aXBsZSc7XHJcbiAgQElucHV0KCkgZ3JpZElkOiBhbnk7XHJcbiAgQElucHV0KCkgbG9nZ2VkSW5Vc2VyOiBhbnk7XHJcbiAgQElucHV0KCkgc2l0ZUlkOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlU2VydmVyU2lkZVBhZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlcnZlckRhdGFVcmwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZW52aXJvbm1lbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FjaGVCbG9ja1NpemU6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmbG9hdGluZ0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJSb2xlczogYW55W10gPSBbXTtcclxuICAvL2V2ZW50IGVtaXR0ZXJzXHJcbiAgQE91dHB1dCgpIGJ0bkNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaXJzdERhdGFSZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy92aWV3Q2hpbGRzXHJcbiAgLy9AVmlld0NoaWxkKCdhZ0dyaWQnKSBhZ0dyaWQhOiBBZ0dyaWRBbmd1bGFyO1xyXG5cclxuICAvL3BhcmFtdGVyc1xyXG4gIGluaXRpYWxDb2x1bW5EZWY6IGFueSA9IFtdO1xyXG4gIHJvd0RhdGFIaWRkZW46IGFueSA9IFtdO1xyXG4gIGdyaWRDb2x1bW5TdGF0ZTogYW55O1xyXG4gIGV4cG9ydENvbHVtbnNMaXN0OiBhbnkgPSBbXTtcclxuICBwdWJsaWMgdG9vbHRpcFNob3dEZWxheSA9IDA7XHJcbiAgcHVibGljIHRvb2x0aXBIaWRlRGVsYXkgPSAyMDAwO1xyXG4gIHB1YmxpYyByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcclxuICAvL3B1YmxpYyBncmlkUGFnZVNpemU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBleGNlbEFQSSE6IEdyaWRBcGk7XHJcbiAgcHJpdmF0ZSBncmlkQVBJITpHcmlkQXBpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0Rlc2lnbl9NYW5hZ2VyID0gJ0Rlc2lnbiBNYW5hZ2VyJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9JbnRlZ3JhdGlvbl9MZWFkID0gJ0ludGVncmF0aW9uIExlYWQnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX1Rvb2xfT3duZXIgPSAnVG9vbCBPd25lcic7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfQXJlYV9Db29yZGluYXRvciA9ICdBcmVhIENvb3JkaW5hdG9yJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9UaVBtID0gJ1RJIFBNJ1xyXG4gIC8vdW5zdWJzY3JpYmUgc3ViamVjdFxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IENvbHVtblZhbHVlRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBfdG9rZW5TaGFyaW5nU2VydmljZTogVG9rZW5TaGFyaW5nU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgb25Tb3J0Q2hhbmdlZEV2ZW50KGU6YW55KSB7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQSS5nZXRTdGF0ZSgpO1xyXG4gICAgdGhpcy5vblNhdmVHcmlkQ29sdW1uU3RhdGUoZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgc29ydGFibGU6IHRydWUsXHJcbiAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICB0b29sdGlwQ29tcG9uZW50OiBDdXN0b21Ub29sdGlwLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fdG9rZW5TaGFyaW5nU2VydmljZS51cGRhdGVUb2tlbih0aGlzLnRva2VuKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5jYWNoZUJsb2NrU2l6ZSA9IHRoaXMuY2FjaGVCbG9ja1NpemUgPSAwID8gMTAwIDogdGhpcy5jYWNoZUJsb2NrU2l6ZTtcclxuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0QmFzZVVybCh0aGlzLmVudmlyb25tZW50KTtcclxuICAgIC8vdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgIHRoaXMuZ2V0Q29sRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndXNlclJvbGVzJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5pbml0aWFsQ29sdW1uRGVmPy5sZW5ndGggPiAwICYmIHRoaXMudXNlclJvbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5fbWFwQ29sdW1uRGVmKHRoaXMuaW5pdGlhbENvbHVtbkRlZiwgdGhpcy51c2VyUm9sZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcjogKFxyXG4gICAgcGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zXHJcbiAgKSA9PiBzdHJpbmcgPSAocGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zKSA9PiB7XHJcbiAgICByZXR1cm4gJ1snICsgcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgKyAnXSc7XHJcbiAgfTtcclxuXHJcbiAgZ2V0Q29sRGVmKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0Q29sRGVmKHRoaXMuZ3JpZElkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbENvbHVtbkRlZiA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgbGV0IGNvbGRlZjogQ29sRGVmW10gPSB0aGlzLl9tYXBDb2x1bW5EZWYocmVzcG9uc2UucmVzdWx0LCB0aGlzLnVzZXJSb2xlcykuZmlsdGVyKChjb2x1bW46IGFueSkgPT4gY29sdW1uKTtcclxuICAgICAgICAgICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gY29sZGVmO1xyXG4gICAgICAgICAgIC8vIHRoaXMuYWdHcmlkLmdyaWRPcHRpb25zPy5hcGk/LnNldENvbHVtbkRlZnMoY29sZGVmKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb2xEZWYgUmVhZCBFcnJvcj0+JywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZygnUGxlYXNlIHBhc3MgdmFsaWQgR3JpZElkIGFuZCBsb2dnZWRJbiB1c2VyIElkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDb2x1bW5WaXNpYmxpdHlTdGF0dXMoY29sdW1uIDogYW55LHVzZXJSb2xlczphbnkpe1xyXG4gICAgbGV0IGlzRGFjSGlkZGVuIDtcclxuICAgIGlmIChjb2x1bW4uaXNCdXR0b24gPT09IGZhbHNlKSB7XHJcbiAgICAgIGlzRGFjSGlkZGVuPSB0aGlzLmNhblZpZXdEYWNTdGF0dXModXNlclJvbGVzLCBjb2x1bW4uZmllbGQpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlzRGFjSGlkZGVuID0gdGhpcy5jYW5DcmVhdGVEYWModXNlclJvbGVzLCBjb2x1bW4uZmllbGQpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBjb2x1bW5TdGF0ZTphbnk9IHRoaXMuZ3JpZEFQSS5nZXRDb2x1bW5EZWZzKCk/LmZpbmQoKGNvbDphbnkpPT4gY29sLmZpZWxkPT1jb2x1bW4uZmllbGQpO1xyXG4gICAgaWYoY29sdW1uU3RhdGUgJiYgY29sdW1uU3RhdGUuaGlkZSl7XHJcbiAgICAgIHJldHVybiAgY29sdW1uU3RhdGUuaGlkZSB8fCBpc0RhY0hpZGRlbjtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgcmV0dXJuICAhY29sdW1uLnZpc2libGUgfHwgaXNEYWNIaWRkZW47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX21hcENvbHVtbkRlZihjb2x1bW5zOiBhbnksIHVzZXJSb2xlczogYW55KSB7XHJcbiAgICByZXR1cm4gY29sdW1ucz8ubWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmlzQnV0dG9uID09PSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGhlYWRlckNoZWNrYm94U2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNoZWNrYm94U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93RGlzYWJsZWRDaGVja2JveGVzOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1NSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBEcm9wZG93blJlbmRlcmVyLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgICBkcm9wRG93bkRhdGE6IHJlcy5kcm9wRG93bkRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBlLm5vZGUuc2V0U2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aWR0aDogNDAsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gaWYgKCFoaWRlRGFjU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhpZGU6dGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcyx1c2VyUm9sZXMpLFxyXG4gICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgIGZsb2F0aW5nRmlsdGVyOiB0aGlzLmZsb2F0aW5nRmlsdGVyLFxyXG4gICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcykgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZS5jb2xWYWx1ZUZvcm1hdHRlcihcclxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiByZXMuZmlsdGVyYWJsZSxcclxuICAgICAgICAgICAgICBmaWx0ZXI6XHJcbiAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZSA9PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgICA/ICdhZ1RleHRDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogcmVzLmNvbHVtblR5cGUgPT0gJ251bWJlcidcclxuICAgICAgICAgICAgICAgICAgPyAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogJ2FnRGF0ZUNvbHVtbkZpbHRlcicsXHJcbiAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJhdG9yOiAoXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IGFueSxcclxuICAgICAgICAgICAgICAgICAgY2VsbFZhbHVlOiBhbnlcclxuICAgICAgICAgICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBjZWxsVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0ZUFzU3RyaW5nID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbERhdGUgPSBuZXcgRGF0ZShkYXRlQXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsRGF0ZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNlbGxEYXRlID4gZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFsncmVzZXQnXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgLy8gfSBcclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGlmICghaGlkZUJ0bikge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgaGlkZTogdGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcyx1c2VyUm9sZXMpLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgIGljb246IHJlcy5pY29uLFxyXG4gICAgICAgICAgICAgIGJ1dHRvbk5hbWU6IHJlcy5idXR0b25OYW1lLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2YWx1ZUdldHRlcjogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgICAgcGlubmVkOiByZXMucGluUG9zaXRpb24sXHJcbiAgICAgICAgICAgIGxvY2tQaW5uZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuQ3JlYXRlRGFjKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnY3JlYXRlRGFjJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNEZXNpZ25NYW5hZ2VyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fRGVzaWduX01hbmFnZXIpO1xyXG4gICAgICByZXR1cm4gIShpc0FFR3JvdXAgfHwgaXNEZXNpZ25NYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYW5WaWV3RGFjU3RhdHVzKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnZGFjU3RhdHVzJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNJbnRlZ3JhdGlvblRlYW1Hcm91cCA9IHRoaXMudXNlclJvbGVzLnNvbWUoKHJvbGUpID0+IHJvbGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ludGVncmF0aW9uIHRlYW0nKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25MZWFkID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fSW50ZWdyYXRpb25fTGVhZCk7XHJcbiAgICAgIGNvbnN0IGlzVG9vbE93bmVyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fVG9vbF9Pd25lcik7XHJcbiAgICAgIGNvbnN0IGlzQXJlYUNvb3JkaW5hdG9yID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fQXJlYV9Db29yZGluYXRvcik7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgY29uc3QgaXNUaVBtID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fVGlQbSk7XHJcbiAgICAgIHJldHVybiAhKGlzQUVHcm91cCB8fCBpc0ludGVncmF0aW9uVGVhbUdyb3VwIHx8IGlzSW50ZWdyYXRpb25MZWFkIHx8IGlzVG9vbE93bmVyIHx8IGlzQXJlYUNvb3JkaW5hdG9yIHx8IGlzRGVzaWduTWFuYWdlciB8fCBpc1RpUG0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNldEV4dGVybmFsRmlsdGVycyhvcHRpb25zOiBhbnkpIHtcclxuICAgIHZhciBzZXJ2ZXJVcmwgPSAnJztcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZXJ2ZXJEYXRhVXJsLmluZGV4T2YoJ2ZpbHRlcicpID49IDAgJiZcclxuICAgICAgb3B0aW9ucy5pbmRleE9mKCdmaWx0ZXInKSA+PSAwXHJcbiAgICApIHtcclxuICAgICAgbGV0IHNsdWcgPSB0aGlzLnNlcnZlckRhdGFVcmwuc3BsaXQoJz8kZmlsdGVyPScpO1xyXG4gICAgICBpZiAoc2x1ZyAmJiBzbHVnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyArICcgYW5kICcgKyBzbHVnWzFdO1xyXG4gICAgICAgIHNlcnZlclVybCA9IHNsdWdbMF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXJ2ZXJEYXRhVXJsLmluZGV4T2YoJz8nKSA+PSAwKSB7XHJcbiAgICAgIHNlcnZlclVybCA9IHRoaXMuc2VydmVyRGF0YVVybDtcclxuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMucmVwbGFjZSgnPycsICcmJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7c2VydmVyVXJsfSR7b3B0aW9uc31gO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCkge1xyXG4gICAgLy90aGlzLmdyaWRQYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmdyaWRBUEk9cGFyYW1zLmFwaTtcclxuICAgIGlmICh0aGlzLmVuYWJsZVNlcnZlclNpZGVQYWdpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAvL2NhbGwgYXBpXHJcbiAgICAgIGxldCByZXFIZWFkZXJzID0ge1xyXG4gICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdGhpcy50b2tlbixcclxuICAgICAgfTtcclxuICAgICAgcGFyYW1zLmFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZShcclxuICAgICAgICBuZXcgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIoe1xyXG4gICAgICAgICAgaXNDYXNlU2Vuc2l0aXZlU3RyaW5nRmlsdGVyOiBmYWxzZSxcclxuICAgICAgICAgIGNhbGxBcGk6IChvcHRpb25zKSA9PlxyXG4gICAgICAgICAgICBmZXRjaChgJHt0aGlzLnNldEV4dGVybmFsRmlsdGVycyhvcHRpb25zKX1gLCB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVxSGVhZGVycyxcclxuICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSksXHJcbiAgICAgICAgICBhZnRlckxvYWREYXRhOiAob3B0aW9ucywgcm93RGF0YSwgdG90YWxDb3VudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJvd0RhdGEgfHwgcm93RGF0YS5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZEFQSS5zaG93Tm9Sb3dzT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZEFQSS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRHcmlkU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUpIHsgICAgICBcclxuICAgICAgdGhpcy5ncmlkQVBJLmFwcGx5Q29sdW1uU3RhdGUoe3N0YXRlOnRoaXMuZ3JpZENvbHVtblN0YXRlLmNvbHVtblNpemluZz8uY29sdW1uU2l6aW5nTW9kZWwsYXBwbHlPcmRlcjp0cnVlfSk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZS5zb3J0KSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLmFwcGx5Q29sdW1uU3RhdGUoe3N0YXRlOnRoaXMuZ3JpZENvbHVtblN0YXRlLnNvcnQuc29ydE1vZGVsfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuZmlsdGVyKSB7XHJcbiAgICAgICAgdmFyIGZpbHRlck1vZGVsOmFueT10aGlzLmdyaWRDb2x1bW5TdGF0ZS5maWx0ZXIuZmlsdGVyTW9kZWw7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLnNldEZpbHRlck1vZGVsKGZpbHRlck1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uVmlzaWJpbGl0eSkge1xyXG4gICAgICAgIHZhciBoaWRkZW5Db2x1bW5zOmFueT10aGlzLmdyaWRDb2x1bW5TdGF0ZS5jb2x1bW5WaXNpYmlsaXR5LmhpZGRlbkNvbElkcztcclxuICAgICAgICB0aGlzLmdyaWRBUEkuc2V0Q29sdW1uc1Zpc2libGUoaGlkZGVuQ29sdW1ucyxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0gIGVsc2Uge1xyXG4gICAgICB2YXIgY29sdW1ucyA9IHRoaXMuZ3JpZEFQSS5nZXRDb2x1bW5zKCk7XHJcbiAgICAgIGlmIChjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDE1KSB7XHJcbiAgICAgICAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmdldENvbHVtbnMoKSEuZm9yRWFjaCgoY29sdW1uOmFueSkgPT4ge1xyXG4gICAgICAgICAgICBhbGxDb2x1bW5JZHMucHVzaChjb2x1bW4uZ2V0SWQoKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFQSSEuYXV0b1NpemVDb2x1bW5zKGFsbENvbHVtbklkcywgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R3JpZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0R3JpZFN0YXRlKHRoaXMuZ3JpZElkLCB0aGlzLmxvZ2dlZEluVXNlciwgdGhpcy5zaXRlSWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9PSAxICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdCAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBncmlkIHN0YXRlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ0bkNsaWNrKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2J0biBjbGljaz0+JywgZSk7XHJcbiAgICB0aGlzLmJ0bkNsaWNrSGFuZGxlci5lbWl0KGUucm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9fZGVib3VuY2VHcmlkU2F2ZUhpdDphbnkgPSBudWxsO1xyXG4gIG9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGxldCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQST8uZ2V0U3RhdGUoKTtcclxuICAgIGxldCBjb2x1bW5EYXRhID0ge1xyXG4gICAgICBncmlkQ29uZmlnOiBKU09OLnN0cmluZ2lmeShjb2x1bW5TdGF0ZSksXHJcbiAgICAgIHVpR3JpZElkOiB0aGlzLmdyaWRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLmxvZ2dlZEluVXNlcixcclxuICAgICAgc2l0ZUlkOiB0aGlzLnNpdGVJZFxyXG4gICAgfTtcclxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sdW1uUGlubmVkJyB8fCAoZXZlbnQudHlwZT09PSdmaWx0ZXJDaGFuZ2VkJyB8fCBldmVudC50eXBlPT09J3NvcnRDaGFuZ2VkJykgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5SZXNpemVkJyB8fCBldmVudC50eXBlPT09J2NvbHVtbk1vdmVkJyB8fCBldmVudC50eXBlPT09J2NvbHVtblZpc2libGUnKSB7XHJcbiAgICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gY29sdW1uU3RhdGU7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZUNvbHVtbkNvbmZpZyhjb2x1bW5EYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vdGhpcy5zZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAwKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgc2F2aW5nIGNvbHVtbiBjb25maWd1cmF0aW9uOicsIHJlcy5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQgPSBudWxsO1xyXG4gIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFJvd0J5SWQ6IEdldFJvd0lkRnVuYyA9IChwYXJhbXM6IEdldFJvd0lkUGFyYW1zKSA9PiB7XHJcbiAgICB2YXIgZGF0YSA9IHBhcmFtcy5kYXRhO1xyXG4gICAgcmV0dXJuIGRhdGEuaWQgPz8gMDtcclxuICB9O1xyXG5cclxuICAvLyBDdXN0b20gcmlnaHQgY2xpY2sgQ29udGV4dCBNZW51IHRvIHN1cHBvcnQgY3VzdG9tIGV4Y2VsIGV4cG9ydHNcclxuICBwdWJsaWMgZ2V0Q29udGV4dE1lbnVJdGVtcyA9IChcclxuICAgIHBhcmFtczogR2V0Q29udGV4dE1lbnVJdGVtc1BhcmFtc1xyXG4gICk6IChzdHJpbmcgfCBNZW51SXRlbURlZilbXSA9PiB7XHJcbiAgICBsZXQgcmVzOiAoc3RyaW5nIHwgTWVudUl0ZW1EZWYpW10gPSBbXHJcbiAgICAgICdjdXQnLFxyXG4gICAgICAnY29weScsXHJcbiAgICAgICdjb3B5V2l0aEhlYWRlcnMnLFxyXG4gICAgICAnY29weVdpdGhHcm91cEhlYWRlcnMnLFxyXG4gICAgICAncGFzdGUnLFxyXG4gICAgICB7XHJcbiAgICAgICAgbmFtZTogJ0V4cG9ydCcsXHJcbiAgICAgICAgc3ViTWVudTogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnQ1NWIEV4cG9ydCcsXHJcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSgnY3N2Jyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnRXhjZWwgRXhwb3J0JyxcclxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKCd4bHN4Jyk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICAvL2N1c3RvbSBleHBvcnQgbWV0aG9kXHJcbiAgcHVibGljIGV4cG9ydEZpbGUodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdldERhdGFGb3JFeGNlbEV4cG9ydCh0eXBlKTtcclxuICB9XHJcbiAgLy9HZW5lcmF0ZSBvbmx5IHRob3NlIGNvbHVtbnMgZm9yIGV4cG9ydCB3aGljaCBhcmUgdmlzaWJsZSBhbmQgYXJlIG5vdCBvZiBvdGhlciB0eXBlcyB0aGF0IGFyZSBub3QgcmVxdWlyZWQgZm9yIGV4cG9ydFxyXG4gIGdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCk6IHN0cmluZ1tdIHtcclxuICAgIGxldCBjb2x1bW5zVG9CZURpc3BsYXllZEZvckV4Y2VsOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuZXhwb3J0Q29sdW1uc0xpc3QuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbHVtbi52aXNpYmxlID09IHRydWUgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnY2hlY2tib3gnICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJ2Ryb3Bkb3duJyAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICcnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWwucHVzaChjb2x1bW4uZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2x1bW5zVG9CZURpc3BsYXllZEZvckV4Y2VsO1xyXG4gIH1cclxuXHJcbiAgLy9HZXQgZGF0YSBmcm9tIHNlcnZlciB3aXRob3V0IHBhZ2luZyBzbyB0aGF0IHdob2xlIGRhdGEgY2FuIGJlIGV4cG9ydGVkIHRvIGV4Y2VsXHJcbiAgLy8gYW5kIGFsc28gY2hlY2sgZm9yIHNlcnZlciBzaWRlIGFuZCBjbGllbnQgc2lkZSByZW5kZXJpbmcgb2YgZGF0YSBmb3IgZXhwb3J0LlxyXG4gIGdldERhdGFGb3JFeGNlbEV4cG9ydCh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3JpZEFQSS5zaG93TG9hZGluZ092ZXJsYXkoKTtcclxuICAgIGlmICh0aGlzLmVuYWJsZVNlcnZlclNpZGVQYWdpbmcpIHtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZVxyXG4gICAgICAgIC5nZXREYXRhRm9yRXhwb3J0KHRoaXMuc2VydmVyRGF0YVVybClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFQSS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5zZXRSb3dEYXRhKHJlc3BvbnNlLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09ICdjc3YnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5leHBvcnREYXRhQXNDc3Yoe1xyXG4gICAgICAgICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuZXhwb3J0RGF0YUFzRXhjZWwoe1xyXG4gICAgICAgICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgZmV0Y2hpbmcgZGF0YSBmb3IgZXhjZWwvY3N2IGV4cG9ydCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgIGlmICh0eXBlID09ICdjc3YnKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLmV4cG9ydERhdGFBc0Nzdih7XHJcbiAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLmV4cG9ydERhdGFBc0V4Y2VsKHtcclxuICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2VkKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlckNoYW5nZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShlKTtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KGUpOyAgICBcclxuICB9XHJcblxyXG4gIG9uRmlyc3REYXRhUmVuZGVyZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLmZpcnN0RGF0YVJlbmRlcmVkLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeUV4Y2VsKHBhcmFtczogYW55KSB7XHJcbiAgICB0aGlzLmV4Y2VsQVBJID0gcGFyYW1zLmFwaTtcclxuICB9XHJcblxyXG4gIC8vZGVzdHJveSBhbGwgYXNzb2NpYXRlZCBzdWJzY3JpcHRpb25zIG9uIGNvbXBvbmVudCBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBK0MvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTlDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUkvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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QjtrQkFuRGhDLFNBQVM7K0JBQ0UsOEJBQThCLFlBQzlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENUOzhLQUtRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBDb2xEZWYsXHJcbiAgR2V0Q29udGV4dE1lbnVJdGVtc1BhcmFtcyxcclxuICBHZXRSb3dJZEZ1bmMsXHJcbiAgR2V0Um93SWRQYXJhbXMsXHJcbiAgR3JpZEFwaSxcclxuICBHcmlkUmVhZHlFdmVudCxcclxuICBNZW51SXRlbURlZixcclxuICBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zLFxyXG4gIFJvd01vZGVsVHlwZSxcclxuICBSb3dOb2RlLFxyXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgR3JpZExpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLWxpYnJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgQnV0dG9uUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3JlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci9idXR0b24tcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVG9vbHRpcCB9IGZyb20gJy4vcmVuZGVyZXIvdG9vbHRpcC1yZW5kZXJlci9jdXN0b20tdG9vbHRpcC1yZW5kZXJlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duUmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyL2Ryb3Bkb3duLXJlbmRlcmVyL2Ryb3AtZG93bi1yZW5kZXJlcic7XHJcbmltcG9ydCB7IENvbHVtblZhbHVlRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL2NvbHVtbi12YWx1ZS1mb3JtYXR0ZXInO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9rZW5TaGFyaW5nU2VydmljZSB9IGZyb20gJy4vdG9rZW4tc2hhcmluZy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcclxuICAgICAgI2FnR3JpZFxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDo5OC4ydmhcIlxyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbSBzaGFyZWQtZ3JpZC1saWJcIlxyXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICBbcm93U2VsZWN0aW9uXT1cInJvd1NlbGVjdGlvblwiXHJcbiAgICAgIFthbmltYXRlUm93c109XCJ0cnVlXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgW3BhZ2luYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyXT1cInBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJcIlxyXG4gICAgICBbcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXCJcclxuICAgICAgW3Rvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXHJcbiAgICAgIFt0b29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIlxyXG4gICAgICBbcm93TW9kZWxUeXBlXT1cInJvd01vZGVsVHlwZVwiXHJcbiAgICAgIFtjYWNoZUJsb2NrU2l6ZV09XCJjYWNoZUJsb2NrU2l6ZVwiXHJcbiAgICAgIFttYXhDb25jdXJyZW50RGF0YXNvdXJjZVJlcXVlc3RzXT1cIjFcIlxyXG4gICAgICBbYmxvY2tMb2FkRGVib3VuY2VNaWxsaXNdPVwiMTAwXCJcclxuICAgICAgKGNvbHVtblZpc2libGUpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uUGlubmVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtblJlc2l6ZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uTW92ZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZEV2ZW50KCRldmVudClcIlxyXG4gICAgICBbcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tdPVwicm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tcIlxyXG4gICAgICBbZ2V0Q29udGV4dE1lbnVJdGVtc109XCJnZXRDb250ZXh0TWVudUl0ZW1zXCJcclxuICAgICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJvbkZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChmaXJzdERhdGFSZW5kZXJlZCk9XCJvbkZpcnN0RGF0YVJlbmRlcmVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyXHJcbiAgICAgICNhZ0dyaWRIaWRkZW5cclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6MTAwdmg7IHdpZHRoOjEwMCU7ZGlzcGxheTpub25lXCJcclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW1cIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhSGlkZGVuXCJcclxuICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXHJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxyXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93U2VsZWN0aW9uXT1cIidtdWx0aXBsZSdcIlxyXG4gICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5RXhjZWwoJGV2ZW50KVwiXHJcbiAgICAgIFtzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YV09XCJ0cnVlXCJcclxuICAgICAgW2NhY2hlUXVpY2tGaWx0ZXJdPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZExpYnJhcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAvL2lucHV0IHBhcmFtc1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IGFueTtcclxuICBASW5wdXQoKSByb3dEYXRhOiBhbnk7XHJcbiAgLy9ASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gMjA7XHJcbiAgQElucHV0KCkgcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcm93U2VsZWN0aW9uOiBhbnkgPSAnbXVsdGlwbGUnO1xyXG4gIEBJbnB1dCgpIGdyaWRJZDogYW55O1xyXG4gIEBJbnB1dCgpIGxvZ2dlZEluVXNlcjogYW55O1xyXG4gIEBJbnB1dCgpIHNpdGVJZDogYW55O1xyXG4gIEBJbnB1dCgpIGVuYWJsZVNlcnZlclNpZGVQYWdpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXJ2ZXJEYXRhVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVudmlyb25tZW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNhY2hlQmxvY2tTaXplOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHJvd011bHRpU2VsZWN0V2l0aENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmxvYXRpbmdGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VyUm9sZXM6IGFueVtdID0gW107XHJcbiAgLy9ldmVudCBlbWl0dGVyc1xyXG4gIEBPdXRwdXQoKSBidG5DbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlyc3REYXRhUmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vdmlld0NoaWxkc1xyXG4gIC8vQFZpZXdDaGlsZCgnYWdHcmlkJykgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcclxuXHJcbiAgLy9wYXJhbXRlcnNcclxuICBpbml0aWFsQ29sdW1uRGVmOiBhbnkgPSBbXTtcclxuICByb3dEYXRhSGlkZGVuOiBhbnkgPSBbXTtcclxuICBncmlkQ29sdW1uU3RhdGU6IGFueTtcclxuICBleHBvcnRDb2x1bW5zTGlzdDogYW55ID0gW107XHJcbiAgZ3JpZENvbHVtbnM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyB0b29sdGlwU2hvd0RlbGF5ID0gMDtcclxuICBwdWJsaWMgdG9vbHRpcEhpZGVEZWxheSA9IDIwMDA7XHJcbiAgcHVibGljIHJvd01vZGVsVHlwZTogUm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gIC8vcHVibGljIGdyaWRQYWdlU2l6ZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGV4Y2VsQVBJITogR3JpZEFwaTtcclxuICBwcml2YXRlIGdyaWRBUEkhOiBHcmlkQXBpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0Rlc2lnbl9NYW5hZ2VyID0gJ0Rlc2lnbiBNYW5hZ2VyJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9JbnRlZ3JhdGlvbl9MZWFkID0gJ0ludGVncmF0aW9uIExlYWQnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX1Rvb2xfT3duZXIgPSAnVG9vbCBPd25lcic7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfQXJlYV9Db29yZGluYXRvciA9ICdBcmVhIENvb3JkaW5hdG9yJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9UaVBtID0gJ1RJIFBNJ1xyXG4gIC8vdW5zdWJzY3JpYmUgc3ViamVjdFxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IENvbHVtblZhbHVlRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBfdG9rZW5TaGFyaW5nU2VydmljZTogVG9rZW5TaGFyaW5nU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG9uU29ydENoYW5nZWRFdmVudChlOiBhbnkpIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gdGhpcy5ncmlkQVBJLmdldFN0YXRlKCk7XHJcbiAgICB0aGlzLm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgIHRvb2x0aXBDb21wb25lbnQ6IEN1c3RvbVRvb2x0aXAsXHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl90b2tlblNoYXJpbmdTZXJ2aWNlLnVwZGF0ZVRva2VuKHRoaXMudG9rZW4pO1xyXG5cclxuICAgIGlmICh0aGlzLmVuYWJsZVNlcnZlclNpZGVQYWdpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcclxuICAgICAgdGhpcy5yb3dEYXRhID0gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmdyaWRQYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmNhY2hlQmxvY2tTaXplID0gdGhpcy5jYWNoZUJsb2NrU2l6ZSA9IDAgPyAxMDAgOiB0aGlzLmNhY2hlQmxvY2tTaXplO1xyXG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRCYXNlVXJsKHRoaXMuZW52aXJvbm1lbnQpO1xyXG4gICAgLy90aGlzLmdldEdyaWRTdGF0ZSgpO1xyXG4gICAgdGhpcy5nZXRDb2xEZWYoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1c2VyUm9sZXMnXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxDb2x1bW5EZWY/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VyUm9sZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSB0aGlzLl9tYXBDb2x1bW5EZWYodGhpcy5pbml0aWFsQ29sdW1uRGVmLCB0aGlzLnVzZXJSb2xlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyOiAoXHJcbiAgICBwYXJhbXM6IFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXNcclxuICApID0+IHN0cmluZyA9IChwYXJhbXM6IFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXMpID0+IHtcclxuICAgIHJldHVybiAnWycgKyBwYXJhbXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoKSArICddJztcclxuICB9O1xyXG5cclxuICBnZXRDb2xEZWYoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkSWQgJiYgdGhpcy5sb2dnZWRJblVzZXIpIHtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZVxyXG4gICAgICAgIC5nZXRDb2xEZWYodGhpcy5ncmlkSWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsQ29sdW1uRGVmID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgICBsZXQgY29sZGVmOiBDb2xEZWZbXSA9IHRoaXMuX21hcENvbHVtbkRlZihyZXNwb25zZS5yZXN1bHQsIHRoaXMudXNlclJvbGVzKS5maWx0ZXIoKGNvbHVtbjogYW55KSA9PiBjb2x1bW4pO1xyXG4gICAgICAgICAgICB0aGlzLmV4cG9ydENvbHVtbnNMaXN0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG5cclxuICAgICAgICAgICAgLy9jaGFuZ2VzIGRvbmUgYnkgcmFnaGF2XHJcbiAgICAgICAgICAgIC8vdGhpcy5jb2x1bW5EZWZzID0gY29sZGVmO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkSWQgPT0gMSAmJiAhdGhpcy5jYW5DcmVhdGVEYWModGhpcy51c2VyUm9sZXMsIFwiY3JlYXRlRGFjXCIpKVxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSBjb2xkZWY7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSBjb2xkZWY7XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLmFnR3JpZC5ncmlkT3B0aW9ucz8uYXBpPy5zZXRDb2x1bW5EZWZzKGNvbGRlZik7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ29sRGVmIFJlYWQgRXJyb3I9PicsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ1BsZWFzZSBwYXNzIHZhbGlkIEdyaWRJZCBhbmQgbG9nZ2VkSW4gdXNlciBJZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKGNvbHVtbjogYW55LCB1c2VyUm9sZXM6IGFueSkge1xyXG4gICAgbGV0IGlzRGFjSGlkZGVuO1xyXG4gICAgaWYgKGNvbHVtbi5pc0J1dHRvbiA9PT0gZmFsc2UpIHtcclxuICAgICAgaXNEYWNIaWRkZW4gPSB0aGlzLmNhblZpZXdEYWNTdGF0dXModXNlclJvbGVzLCBjb2x1bW4uZmllbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNEYWNIaWRkZW4gPSB0aGlzLmNhbkNyZWF0ZURhYyh1c2VyUm9sZXMsIGNvbHVtbi5maWVsZCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29sdW1uU3RhdGU6IGFueSA9IHRoaXMuZ3JpZEFQSS5nZXRDb2x1bW5EZWZzKCk/LmZpbmQoKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gY29sdW1uLmZpZWxkKTtcclxuICAgIGlmIChjb2x1bW5TdGF0ZSAmJiBjb2x1bW5TdGF0ZS5oaWRlKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5TdGF0ZS5oaWRlIHx8IGlzRGFjSGlkZGVuO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAhY29sdW1uLnZpc2libGUgfHwgaXNEYWNIaWRkZW47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX21hcENvbHVtbkRlZihjb2x1bW5zOiBhbnksIHVzZXJSb2xlczogYW55KSB7XHJcbiAgICByZXR1cm4gY29sdW1ucz8ubWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmlzQnV0dG9uID09PSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGhlYWRlckNoZWNrYm94U2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNoZWNrYm94U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93RGlzYWJsZWRDaGVja2JveGVzOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1NSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBEcm9wZG93blJlbmRlcmVyLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgICBkcm9wRG93bkRhdGE6IHJlcy5kcm9wRG93bkRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBlLm5vZGUuc2V0U2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aWR0aDogNDAsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gaWYgKCFoaWRlRGFjU3RhdHVzKSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgaGlkZTogdGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcywgdXNlclJvbGVzKSxcclxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBmbG9hdGluZ0ZpbHRlcjogdGhpcy5mbG9hdGluZ0ZpbHRlcixcclxuICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZS5jb2xWYWx1ZUZvcm1hdHRlcihcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIHJlcy5jb2x1bW5UeXBlXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgZmlsdGVyYWJsZTogcmVzLmZpbHRlcmFibGUsXHJcbiAgICAgICAgICAgIGZpbHRlcjpcclxuICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZSA9PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgPyAnYWdUZXh0Q29sdW1uRmlsdGVyJ1xyXG4gICAgICAgICAgICAgICAgOiByZXMuY29sdW1uVHlwZSA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgICAgICAgICA/ICdhZ051bWJlckNvbHVtbkZpbHRlcidcclxuICAgICAgICAgICAgICAgICAgOiAnYWdEYXRlQ29sdW1uRmlsdGVyJyxcclxuICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgY29tcGFyYXRvcjogKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodDogYW55LFxyXG4gICAgICAgICAgICAgICAgY2VsbFZhbHVlOiBhbnlcclxuICAgICAgICAgICAgICApID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGNlbGxWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZUFzU3RyaW5nID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxEYXRlID0gbmV3IERhdGUoZGF0ZUFzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGNlbGxEYXRlIDwgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjZWxsRGF0ZSA+IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBidXR0b25zOiBbJ3Jlc2V0J10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgLy8gfSBcclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGlmICghaGlkZUJ0bikge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgaGlkZTogdGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcywgdXNlclJvbGVzKSxcclxuICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25CdG5DbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICBpY29uOiByZXMuaWNvbixcclxuICAgICAgICAgICAgYnV0dG9uTmFtZTogcmVzLmJ1dHRvbk5hbWUsXHJcbiAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHZhbHVlR2V0dGVyOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBtaW5XaWR0aDogMjAsXHJcbiAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgbG9ja1Bpbm5lZDogdHJ1ZSxcclxuICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZURhYyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2NyZWF0ZURhYycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgcmV0dXJuIGlzQUVHcm91cCB8fCBpc0Rlc2lnbk1hbmFnZXIgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIC8vcmV0dXJuICEoaXNBRUdyb3VwIHx8IGlzRGVzaWduTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuVmlld0RhY1N0YXR1cyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2RhY1N0YXR1cycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25UZWFtR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbnRlZ3JhdGlvbiB0ZWFtJykpO1xyXG4gICAgICBjb25zdCBpc0ludGVncmF0aW9uTGVhZCA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0ludGVncmF0aW9uX0xlYWQpO1xyXG4gICAgICBjb25zdCBpc1Rvb2xPd25lciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX1Rvb2xfT3duZXIpO1xyXG4gICAgICBjb25zdCBpc0FyZWFDb29yZGluYXRvciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0FyZWFfQ29vcmRpbmF0b3IpO1xyXG4gICAgICBjb25zdCBpc0Rlc2lnbk1hbmFnZXIgPSB0aGlzLnVzZXJSb2xlcy5pbmNsdWRlcyh0aGlzLl9EZXNpZ25fTWFuYWdlcik7XHJcbiAgICAgIGNvbnN0IGlzVGlQbSA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX1RpUG0pO1xyXG4gICAgICByZXR1cm4gIShpc0FFR3JvdXAgfHwgaXNJbnRlZ3JhdGlvblRlYW1Hcm91cCB8fCBpc0ludGVncmF0aW9uTGVhZCB8fCBpc1Rvb2xPd25lciB8fCBpc0FyZWFDb29yZGluYXRvciB8fCBpc0Rlc2lnbk1hbmFnZXIgfHwgaXNUaVBtKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9uczogYW55KSB7XHJcbiAgICB2YXIgc2VydmVyVXJsID0gJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCdmaWx0ZXInKSA+PSAwICYmXHJcbiAgICAgIG9wdGlvbnMuaW5kZXhPZignZmlsdGVyJykgPj0gMFxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBzbHVnID0gdGhpcy5zZXJ2ZXJEYXRhVXJsLnNwbGl0KCc/JGZpbHRlcj0nKTtcclxuICAgICAgaWYgKHNsdWcgJiYgc2x1Zy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgKyAnIGFuZCAnICsgc2x1Z1sxXTtcclxuICAgICAgICBzZXJ2ZXJVcmwgPSBzbHVnWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCc/JykgPj0gMCkge1xyXG4gICAgICBzZXJ2ZXJVcmwgPSB0aGlzLnNlcnZlckRhdGFVcmw7XHJcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnJlcGxhY2UoJz8nLCAnJicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3NlcnZlclVybH0ke29wdGlvbnN9YDtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIC8vdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5ncmlkQVBJID0gcGFyYW1zLmFwaTtcclxuICAgIGlmICh0aGlzLmVuYWJsZVNlcnZlclNpZGVQYWdpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAvL2NhbGwgYXBpXHJcbiAgICAgIGxldCByZXFIZWFkZXJzID0ge1xyXG4gICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdGhpcy50b2tlbixcclxuICAgICAgfTtcclxuICAgICAgcGFyYW1zLmFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZShcclxuICAgICAgICBuZXcgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIoe1xyXG4gICAgICAgICAgaXNDYXNlU2Vuc2l0aXZlU3RyaW5nRmlsdGVyOiBmYWxzZSxcclxuICAgICAgICAgIGNhbGxBcGk6IChvcHRpb25zKSA9PlxyXG4gICAgICAgICAgICBmZXRjaChgJHt0aGlzLnNldEV4dGVybmFsRmlsdGVycyhvcHRpb25zKX1gLCB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyczogcmVxSGVhZGVycyxcclxuICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSksXHJcbiAgICAgICAgICBhZnRlckxvYWREYXRhOiAob3B0aW9ucywgcm93RGF0YSwgdG90YWxDb3VudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJvd0RhdGEgfHwgcm93RGF0YS5sZW5ndGggPD0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZEFQSS5zaG93Tm9Sb3dzT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZEFQSS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRHcmlkU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkSWQgPT0gMSAmJiAhdGhpcy5jYW5DcmVhdGVEYWModGhpcy51c2VyUm9sZXMsIFwiY3JlYXRlRGFjXCIpKSB7XHJcbiAgICAgIHZhciBhcnJJbmRleCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZEluZGV4KCh4OiBhbnkpID0+IHguZmllbGQgPT0gXCJjcmVhdGVEYWNcIilcclxuICAgICAgdmFyIGRhY1N0YXR1c0luZGV4ID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kSW5kZXgoKHg6IGFueSkgPT4geC5maWVsZCA9PSBcImRhY1N0YXR1c1wiKVxyXG5cclxuICAgICAgaWYgKGFyckluZGV4ID4gLTEpXHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucy5zcGxpY2UoYXJySW5kZXgsIDEpO1xyXG5cclxuICAgICAgaWYgKGRhY1N0YXR1c0luZGV4ID4gLTEpXHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucy5zcGxpY2UoZGFjU3RhdHVzSW5kZXgsIDEpO1xyXG5cclxuICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5ncmlkQ29sdW1ucztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbHVtbkRlZnMgPSB0aGlzLmdyaWRDb2x1bW5zO1xyXG5cclxuICAgIGlmICh0aGlzLmdyaWRJZCA9PSAxICYmIHRoaXMuY2FuQ3JlYXRlRGFjKHRoaXMudXNlclJvbGVzLCBcImNyZWF0ZURhY1wiKSkge1xyXG4gICAgICB0aGlzLmNvbHVtbkRlZnNbYXJySW5kZXhdLmhpZGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlKSB7XHJcbiAgICAgIHRoaXMuZ3JpZEFQSS5hcHBseUNvbHVtblN0YXRlKHsgc3RhdGU6IHRoaXMuZ3JpZENvbHVtblN0YXRlLmNvbHVtblNpemluZz8uY29sdW1uU2l6aW5nTW9kZWwsIGFwcGx5T3JkZXI6IHRydWUgfSk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZS5zb3J0KSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLmFwcGx5Q29sdW1uU3RhdGUoeyBzdGF0ZTogdGhpcy5ncmlkQ29sdW1uU3RhdGUuc29ydC5zb3J0TW9kZWwgfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuZmlsdGVyKSB7XHJcbiAgICAgICAgdmFyIGZpbHRlck1vZGVsOiBhbnkgPSB0aGlzLmdyaWRDb2x1bW5TdGF0ZS5maWx0ZXIuZmlsdGVyTW9kZWw7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLnNldEZpbHRlck1vZGVsKGZpbHRlck1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uVmlzaWJpbGl0eSkge1xyXG4gICAgICAgIHZhciBoaWRkZW5Db2x1bW5zOiBhbnkgPSB0aGlzLmdyaWRDb2x1bW5TdGF0ZS5jb2x1bW5WaXNpYmlsaXR5LmhpZGRlbkNvbElkcztcclxuICAgICAgICB0aGlzLmdyaWRBUEkuc2V0Q29sdW1uc1Zpc2libGUoaGlkZGVuQ29sdW1ucywgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgY29sdW1ucyA9IHRoaXMuZ3JpZEFQSS5nZXRDb2x1bW5zKCk7XHJcbiAgICAgIGlmIChjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDE1KSB7XHJcbiAgICAgICAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmdldENvbHVtbnMoKSEuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgYWxsQ29sdW1uSWRzLnB1c2goY29sdW1uLmdldElkKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRJZCAmJiB0aGlzLmxvZ2dlZEluVXNlcikge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEdyaWRTdGF0ZSh0aGlzLmdyaWRJZCwgdGhpcy5sb2dnZWRJblVzZXIsIHRoaXMuc2l0ZUlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPT0gMSAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWdcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGxvYWRpbmcgZ3JpZCBzdGF0ZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdG5DbGljayhlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdidG4gY2xpY2s9PicsIGUpO1xyXG4gICAgdGhpcy5idG5DbGlja0hhbmRsZXIuZW1pdChlLnJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfX2RlYm91bmNlR3JpZFNhdmVIaXQ6IGFueSA9IG51bGw7XHJcbiAgb25TYXZlR3JpZENvbHVtblN0YXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9fZGVib3VuY2VHcmlkU2F2ZUhpdCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQST8uZ2V0U3RhdGUoKTtcclxuICAgICAgbGV0IGNvbHVtbkRhdGEgPSB7XHJcbiAgICAgICAgZ3JpZENvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29sdW1uU3RhdGUpLFxyXG4gICAgICAgIHVpR3JpZElkOiB0aGlzLmdyaWRJZCxcclxuICAgICAgICB1c2VySWQ6IHRoaXMubG9nZ2VkSW5Vc2VyLFxyXG4gICAgICAgIHNpdGVJZDogdGhpcy5zaXRlSWRcclxuICAgICAgfTtcclxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb2x1bW5QaW5uZWQnIHx8IChldmVudC50eXBlID09PSAnZmlsdGVyQ2hhbmdlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ3NvcnRDaGFuZ2VkJykgfHwgZXZlbnQudHlwZSA9PT0gJ2NvbHVtblJlc2l6ZWQnIHx8IGV2ZW50LnR5cGUgPT09ICdjb2x1bW5Nb3ZlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ2NvbHVtblZpc2libGUnKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSBjb2x1bW5TdGF0ZTtcclxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVDb2x1bW5Db25maWcoY29sdW1uRGF0YSlcclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvL3RoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09IDApIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgc2F2aW5nIGNvbHVtbiBjb25maWd1cmF0aW9uOicsIHJlcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQgPSBudWxsO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Um93QnlJZDogR2V0Um93SWRGdW5jID0gKHBhcmFtczogR2V0Um93SWRQYXJhbXMpID0+IHtcclxuICAgIHZhciBkYXRhID0gcGFyYW1zLmRhdGE7XHJcbiAgICByZXR1cm4gZGF0YS5pZCA/PyAwO1xyXG4gIH07XHJcblxyXG4gIC8vIEN1c3RvbSByaWdodCBjbGljayBDb250ZXh0IE1lbnUgdG8gc3VwcG9ydCBjdXN0b20gZXhjZWwgZXhwb3J0c1xyXG4gIHB1YmxpYyBnZXRDb250ZXh0TWVudUl0ZW1zID0gKFxyXG4gICAgcGFyYW1zOiBHZXRDb250ZXh0TWVudUl0ZW1zUGFyYW1zXHJcbiAgKTogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0+IHtcclxuICAgIGxldCByZXM6IChzdHJpbmcgfCBNZW51SXRlbURlZilbXSA9IFtcclxuICAgICAgJ2N1dCcsXHJcbiAgICAgICdjb3B5JyxcclxuICAgICAgJ2NvcHlXaXRoSGVhZGVycycsXHJcbiAgICAgICdjb3B5V2l0aEdyb3VwSGVhZGVycycsXHJcbiAgICAgICdwYXN0ZScsXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRXhwb3J0JyxcclxuICAgICAgICBzdWJNZW51OiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdDU1YgRXhwb3J0JyxcclxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKCdjc3YnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdFeGNlbCBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ3hsc3gnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIC8vY3VzdG9tIGV4cG9ydCBtZXRob2RcclxuICBwdWJsaWMgZXhwb3J0RmlsZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGUpO1xyXG4gIH1cclxuICAvL0dlbmVyYXRlIG9ubHkgdGhvc2UgY29sdW1ucyBmb3IgZXhwb3J0IHdoaWNoIGFyZSB2aXNpYmxlIGFuZCBhcmUgbm90IG9mIG90aGVyIHR5cGVzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3IgZXhwb3J0XHJcbiAgZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdC5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29sdW1uLnZpc2libGUgPT0gdHJ1ZSAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdjaGVja2JveCcgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnZHJvcGRvd24nICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbC5wdXNoKGNvbHVtbi5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw7XHJcbiAgfVxyXG5cclxuICAvL0dldCBkYXRhIGZyb20gc2VydmVyIHdpdGhvdXQgcGFnaW5nIHNvIHRoYXQgd2hvbGUgZGF0YSBjYW4gYmUgZXhwb3J0ZWQgdG8gZXhjZWxcclxuICAvLyBhbmQgYWxzbyBjaGVjayBmb3Igc2VydmVyIHNpZGUgYW5kIGNsaWVudCBzaWRlIHJlbmRlcmluZyBvZiBkYXRhIGZvciBleHBvcnQuXHJcbiAgZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQVBJLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZykge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldERhdGFGb3JFeHBvcnQodGhpcy5zZXJ2ZXJEYXRhVXJsKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNldFJvd0RhdGEocmVzcG9uc2UudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0Nzdih7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBmZXRjaGluZyBkYXRhIGZvciBleGNlbC9jc3YgZXhwb3J0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzRXhjZWwoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMub25TYXZlR3JpZENvbHVtblN0YXRlKGUpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkZpcnN0RGF0YVJlbmRlcmVkKGU6IGFueSkge1xyXG4gICAgdGhpcy5maXJzdERhdGFSZW5kZXJlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHlFeGNlbChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEFQSSA9IHBhcmFtcy5hcGk7XHJcbiAgfVxyXG5cclxuICAvL2Rlc3Ryb3kgYWxsIGFzc29jaWF0ZWQgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1068,6 +1068,7 @@ class GridLibraryComponent {
|
|
|
1068
1068
|
this.initialColumnDef = [];
|
|
1069
1069
|
this.rowDataHidden = [];
|
|
1070
1070
|
this.exportColumnsList = [];
|
|
1071
|
+
this.gridColumns = [];
|
|
1071
1072
|
this.tooltipShowDelay = 0;
|
|
1072
1073
|
this.tooltipHideDelay = 2000;
|
|
1073
1074
|
this.rowModelType = 'clientSide';
|
|
@@ -1158,7 +1159,12 @@ class GridLibraryComponent {
|
|
|
1158
1159
|
this.initialColumnDef = response.result;
|
|
1159
1160
|
let coldef = this._mapColumnDef(response.result, this.userRoles).filter((column) => column);
|
|
1160
1161
|
this.exportColumnsList = response.result;
|
|
1161
|
-
|
|
1162
|
+
//changes done by raghav
|
|
1163
|
+
//this.columnDefs = coldef;
|
|
1164
|
+
if (this.gridId == 1 && !this.canCreateDac(this.userRoles, "createDac"))
|
|
1165
|
+
this.gridColumns = coldef;
|
|
1166
|
+
else
|
|
1167
|
+
this.columnDefs = coldef;
|
|
1162
1168
|
// this.agGrid.gridOptions?.api?.setColumnDefs(coldef);
|
|
1163
1169
|
this.getGridState();
|
|
1164
1170
|
}
|
|
@@ -1314,7 +1320,8 @@ class GridLibraryComponent {
|
|
|
1314
1320
|
if ((roles === null || roles === void 0 ? void 0 : roles.length) > 0 && field === 'createDac') {
|
|
1315
1321
|
const isAEGroup = this.userRoles.some((role) => role === null || role === void 0 ? void 0 : role.toLowerCase().includes('ae'));
|
|
1316
1322
|
const isDesignManager = this.userRoles.includes(this._Design_Manager);
|
|
1317
|
-
return
|
|
1323
|
+
return isAEGroup || isDesignManager ? true : false;
|
|
1324
|
+
//return !(isAEGroup || isDesignManager);
|
|
1318
1325
|
}
|
|
1319
1326
|
return false;
|
|
1320
1327
|
}
|
|
@@ -1375,6 +1382,19 @@ class GridLibraryComponent {
|
|
|
1375
1382
|
}
|
|
1376
1383
|
setGridState() {
|
|
1377
1384
|
var _a;
|
|
1385
|
+
if (this.gridId == 1 && !this.canCreateDac(this.userRoles, "createDac")) {
|
|
1386
|
+
var arrIndex = this.gridColumns.findIndex((x) => x.field == "createDac");
|
|
1387
|
+
var dacStatusIndex = this.gridColumns.findIndex((x) => x.field == "dacStatus");
|
|
1388
|
+
if (arrIndex > -1)
|
|
1389
|
+
this.gridColumns.splice(arrIndex, 1);
|
|
1390
|
+
if (dacStatusIndex > -1)
|
|
1391
|
+
this.gridColumns.splice(dacStatusIndex, 1);
|
|
1392
|
+
this.columnDefs = this.gridColumns;
|
|
1393
|
+
}
|
|
1394
|
+
this.columnDefs = this.gridColumns;
|
|
1395
|
+
if (this.gridId == 1 && this.canCreateDac(this.userRoles, "createDac")) {
|
|
1396
|
+
this.columnDefs[arrIndex].hide = false;
|
|
1397
|
+
}
|
|
1378
1398
|
if (this.gridColumnState) {
|
|
1379
1399
|
this.gridAPI.applyColumnState({ state: (_a = this.gridColumnState.columnSizing) === null || _a === void 0 ? void 0 : _a.columnSizingModel, applyOrder: true });
|
|
1380
1400
|
if (this.gridColumnState.sort) {
|