brainloper-ui 14.0.0 → 14.0.2

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.
@@ -57,7 +57,9 @@ export class DataTableComponent {
57
57
  exportXslxWithPages: false,
58
58
  view: false,
59
59
  closeOrder: false,
60
- packOff: false
60
+ packOff: false,
61
+ advance: false,
62
+ advanceLabel: null
61
63
  };
62
64
  this.titleLoading = "";
63
65
  this.messageLoading = "";
@@ -75,6 +77,7 @@ export class DataTableComponent {
75
77
  this.view = new EventEmitter();
76
78
  this.closeOrder = new EventEmitter();
77
79
  this.packOff = new EventEmitter();
80
+ this.advance = new EventEmitter();
78
81
  this.internalData = new EventEmitter();
79
82
  this.movil = ScreenSizeUtil.isMobile();
80
83
  this.filtersPost = [];
@@ -100,7 +103,8 @@ export class DataTableComponent {
100
103
  { action: 'view', conditionShowHeader: () => this.selectedRows.length === 1 && this.configuration.view, condition: () => this.configuration.view, icon: 'fa-eye', tooltip: 'Ver detalle' },
101
104
  { action: 'closeOrder', conditionShowHeader: () => this.selectedRows.length === 1 && this.configuration.closeOrder, condition: () => this.configuration.closeOrder, icon: 'fa-check-circle', tooltip: 'Cerrar orden' },
102
105
  { action: 'packOff', conditionShowHeader: () => this.selectedRows.length === 1 && this.configuration.packOff, condition: () => this.configuration.packOff, icon: 'fa-cart-arrow-down', tooltip: 'Despachar recursos' },
103
- { action: 'delete', conditionShowHeader: () => this.selectedRows.length > 0 && this.configuration.delete, condition: () => this.configuration.delete, icon: 'fa-trash', tooltip: 'Eliminar' }
106
+ { action: 'advance', conditionShowHeader: () => this.selectedRows.length === 1 && this.configuration.advance, condition: () => this.configuration.advance, icon: 'fa-arrow-right', tooltip: this.configuration.advanceLabel },
107
+ { action: 'delete', conditionShowHeader: () => this.selectedRows.length > 0 && this.configuration.delete, condition: () => this.configuration.delete, icon: 'fa-trash', tooltip: 'Eliminar' },
104
108
  ];
105
109
  this.paginatorTranslate.itemsPerPageLabel = 'Elementos por página';
106
110
  this.paginatorTranslate.nextPageLabel = 'Siguiente página';
@@ -208,6 +212,17 @@ export class DataTableComponent {
208
212
  }
209
213
  this.validateRules();
210
214
  }
215
+ if (changes.configuration) {
216
+ this.updateButtonConfig();
217
+ }
218
+ }
219
+ updateButtonConfig() {
220
+ this.buttonsConfig = this.buttonsConfig.map(button => {
221
+ if (button.action === 'advance') {
222
+ return { ...button, tooltip: this.configuration.advanceLabel ?? 'Avanzar' };
223
+ }
224
+ return button;
225
+ });
211
226
  }
212
227
  clickOnRoW(rowData) {
213
228
  let state = this.checkboxs[rowData[this.configuration.primaryKey]];
@@ -299,6 +314,9 @@ export class DataTableComponent {
299
314
  case 'packOff':
300
315
  this.packOff.emit(currentRow);
301
316
  break;
317
+ case 'advance':
318
+ this.advance.emit(currentRow);
319
+ break;
302
320
  }
303
321
  }
304
322
  shouldShowMenu() {
@@ -312,36 +330,11 @@ export class DataTableComponent {
312
330
  params = [...params, ...this.xslxParams];
313
331
  }
314
332
  let i = params.findIndex(x => x.id == 'per_page');
315
- params[i].value = 100000000;
333
+ if (i != -1)
334
+ params[i].value = 100000000;
316
335
  }
317
- let c = [
318
- {
319
- "id": "idh1v1",
320
- "body": [
321
- { "nombre": "NHoja1valor1", "area": "AHoja1valor1", "cargo": "CHoja1valor1" },
322
- { "nombre": "NHoja1valor2", "area": "AHoja1valor2", "cargo": "CHoja1valor2" },
323
- { "nombre": "NHoja1valor3", "area": "AHoja1valor3", "cargo": "CHoja1valor3" }
324
- ]
325
- },
326
- {
327
- "id": "idh2v2",
328
- "body": [
329
- { "nombre": "NHoja2valor1", "area": "AHoja2valor1", "cargo": "CHoja2valor1" },
330
- { "nombre": "NHoja2valor2", "area": "AHoja2valor2", "cargo": "CHoja2valor2" },
331
- { "nombre": "NHoja2valor3", "area": "AHoja2valor3", "cargo": "CHoja2valor3" }
332
- ]
333
- },
334
- {
335
- "id": "idh3v3",
336
- "body": [
337
- { "nombre": "NHoja3valor1", "area": "AHoja3valor1", "cargo": "CHoja3valor1" },
338
- { "nombre": "NHoja3valor2", "area": "AHoja3valor2", "cargo": "CHoja3valor2" },
339
- { "nombre": "NHoja3valor3", "area": "AHoja3valor3", "cargo": "CHoja3valor3" }
340
- ]
341
- },
342
- ];
343
336
  if (this.configuration.exportXslxWithPages) {
344
- this.exportService.generateExcelWithSheets(this.title, this.headerFileXlsm, this.title, this.url ? null : this.data, this.url, this.params, this.filtersPost, this.xslxTitleFields, this.xslxSheetNameFields, this.xslxBodyFields);
337
+ this.exportService.generateExcelWithSheets(this.title, this.headerFileXlsm, this.title, this.url ? null : this.data, this.url, params, this.filtersPost, this.xslxTitleFields, this.xslxSheetNameFields, this.xslxBodyFields);
345
338
  }
346
339
  else {
347
340
  this.exportService.generateToXlsx(this.title, this.headerFileXlsm, this.title, this.url ? null :
@@ -452,7 +445,7 @@ export class DataTableComponent {
452
445
  }
453
446
  }
454
447
  DataTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataTableComponent, deps: [{ token: i1.MatDialog }, { token: i2.HttpService }, { token: i3.MessageService }, { token: i4.FunctionsService }, { token: i5.MatPaginatorIntl }, { token: i6.ExportDataService }], target: i0.ɵɵFactoryTarget.Component });
455
- DataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DataTableComponent, selector: "data-table", inputs: { title: "title", columns: "columns", data: "data", combo: "combo", configuration: "configuration", reloadTable: "reloadTable", url: "url", params: "params", titleLoading: "titleLoading", messageLoading: "messageLoading", headerFileXlsm: "headerFileXlsm", headerFilters: "headerFilters", xslxTitleFields: "xslxTitleFields", xslxSheetNameFields: "xslxSheetNameFields", xslxBodyFields: "xslxBodyFields", xslxParams: "xslxParams" }, outputs: { clickRow: "clickRow", add: "add", edit: "edit", delete: "delete", print: "print", exportXslxByRow: "exportXslxByRow", active: "active", selected: "selected", view: "view", closeOrder: "closeOrder", packOff: "packOff", internalData: "internalData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"contenedor-tabla\">\r\n <app-filters [headerFilters]=\"headerFilters\" (applyFilters)=\"applyFilters($event)\">\r\n </app-filters>\r\n\r\n <div style='display: flex; flex-direction: row; justify-content: space-between; align-items: center;'>\r\n <div style='flex:1; font-size: 1rem;'>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>0 && selectedRows.length<2'> {{selectedRows.length}} Seleccionado </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>1'> {{selectedRows.length}} Seleccionados </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length<1 && !configuration.hideTitle'> {{title}} </p></strong>\r\n </div>\r\n\r\n <div *ngIf=\"!configuration.hideFilter\" style='flex:3; padding-right: 10px; margin-bottom: 5px;'>\r\n <mat-form-field class='filter'>\r\n <input type=\"text\" [(ngModel)]='filters' (keyup)='changeFilters()' matInput placeholder=\"Filtrar\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonsTable\"></ng-container>\r\n\r\n </div>\r\n\r\n <table class=\"table_Eter table-hover\">\r\n <thead class=\"dark\">\r\n <tr >\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'>\r\n <mat-checkbox color='primary' (change)='seletecAllEvent($event)' [(ngModel)]='selectAll' [indeterminate]='indeterminateState'> </mat-checkbox> </th>\r\n <th\r\n [class]=\"column.style?.movil\"\r\n *ngFor='let column of columns' scope=\"col\"\r\n [ngStyle]=\"column.style\"\r\n >{{column.label}}</th>\r\n <th *ngIf=\"shouldShowMenu()\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class='mat-elevation-z3'>\r\n\r\n <tr style=\"cursor: pointer;\" *ngFor='let row of data' (click)='clickOnRoW(row)' [class]=\"checkboxs[row[configuration.primaryKey]]?'selected-row':''\">\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'> <mat-checkbox color='primary' [(ngModel)]='checkboxs[row[configuration.primaryKey]]' (click)='clicked($event)' (change)='selection(row, $event)'> </mat-checkbox> </th>\r\n <th [class]='column.style?.movil' [ngStyle]='column.style' scope=\"row\" *ngFor='let column of columns'>{{ row[column.ID] }}</th>\r\n\r\n <th *ngIf=\"shouldShowMenu()\" style=\"display: flex; justify-content: center; align-items: center; overflow: visible;\">\r\n <mat-icon\r\n (click)=\"showMenu($event)\"\r\n [matMenuTriggerFor]=\"menu\"\r\n matRipple\r\n class=\"menu_more_vert\"\r\n aria-hidden=\"false\"\r\n aria-label=\"Example delete icon\"\r\n >more_vert</mat-icon>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngFor=\"let btn of buttonsConfig\" >\r\n <button *ngIf=\"btn.condition()\" (click)=\"action(btn.action, row)\" mat-menu-item class=\"d-flex align-items-center w-100\" >\r\n <i class=\"fa {{btn.icon}} btn-accion\" style=\"font-size:120%; margin-right: 10px\"></i>\r\n {{btn.tooltip}}\r\n </button>\r\n </div>\r\n\r\n </mat-menu>\r\n </th>\r\n\r\n </tr>\r\n\r\n\r\n </tbody>\r\n\r\n </table>\r\n\r\n <div *ngIf='length == 0 && data.length == 0' style=\"margin-left: 10px;\"> <strong>No se encontr\u00F3 informaci\u00F3n</strong></div>\r\n\r\n <mat-paginator *ngIf=\"paginatorActive\"\r\n [length]=\"length\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons\r\n (page)=\"changePage($event)\"></mat-paginator>\r\n\r\n </div>\r\n\r\n<ng-template #buttonsTable let-fontSize=\"fontSize\" let-marginRight=\"marginRight\" style='flex:0.5; display:flex; flex-direction: row; justify-content: flex-end;'>\r\n <ng-container *ngFor=\"let btn of buttonsConfig\">\r\n <div *ngIf=\"btn.conditionShowHeader()\" (click)=\"action(btn.action)\" matTooltip=\"{{btn.tooltip}}\" matTooltipPosition=\"above\">\r\n <i class=\"fa {{btn.icon}} btn-accion\" [ngStyle]=\"{'font-size': fontSize ? fontSize : '170%', 'margin-right': marginRight ? marginRight : '15px'}\"></i>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".contenedor-tabla{width:100%;overflow-x:auto}.table_Eter{width:100%;margin-bottom:4px;color:primary;border-collapse:collapse}.table_Eter .dark th{color:#fff;background-color:#343a40;border-color:#454d55;text-align:center;vertical-align:middle}.table_Eter thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table_Eter th,.table_Eter td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}th{text-align:inherit}*,*:before,*:after{box-sizing:border-box}.btn-accion{cursor:pointer}mat-form-field{padding:0!important;width:100%}.filter{padding:0;margin-bottom:10px;width:100%}.filter ::ng-deep .mat-form-field-underline{bottom:3px!important}.filter ::ng-deep .mat-form-field-infix{border:0!important}.filter ::ng-deep .mat-form-field-wrapper{padding:0}.filter ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper{padding:0}.selected-row{color:#212529;background-color:#00000013}button:focus{outline:none!important}@media only screen and (max-width: 600px){.no-movil{display:none}}::ng-deep .mat-paginator{background:transparent!important}@media screen and (max-width: 400px){.filter{padding:0;margin-bottom:40px;width:70%}}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i15.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i15.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i16.FiltersComponent, selector: "app-filters", inputs: ["headerFilters"], outputs: ["applyFilters"] }] });
448
+ DataTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DataTableComponent, selector: "data-table", inputs: { title: "title", columns: "columns", data: "data", combo: "combo", configuration: "configuration", reloadTable: "reloadTable", url: "url", params: "params", titleLoading: "titleLoading", messageLoading: "messageLoading", headerFileXlsm: "headerFileXlsm", headerFilters: "headerFilters", xslxTitleFields: "xslxTitleFields", xslxSheetNameFields: "xslxSheetNameFields", xslxBodyFields: "xslxBodyFields", xslxParams: "xslxParams" }, outputs: { clickRow: "clickRow", add: "add", edit: "edit", delete: "delete", print: "print", exportXslxByRow: "exportXslxByRow", active: "active", selected: "selected", view: "view", closeOrder: "closeOrder", packOff: "packOff", advance: "advance", internalData: "internalData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"contenedor-tabla\">\r\n <app-filters [headerFilters]=\"headerFilters\" (applyFilters)=\"applyFilters($event)\">\r\n </app-filters>\r\n\r\n <div style='display: flex; flex-direction: row; justify-content: space-between; align-items: center;'>\r\n <div style='flex:1; font-size: 1rem;'>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>0 && selectedRows.length<2'> {{selectedRows.length}} Seleccionado </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>1'> {{selectedRows.length}} Seleccionados </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length<1 && !configuration.hideTitle'> {{title}} </p></strong>\r\n </div>\r\n\r\n <div *ngIf=\"!configuration.hideFilter\" style='flex:3; padding-right: 10px; margin-bottom: 5px;'>\r\n <mat-form-field class='filter'>\r\n <input type=\"text\" [(ngModel)]='filters' (keyup)='changeFilters()' matInput placeholder=\"Filtrar\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonsTable\"></ng-container>\r\n\r\n </div>\r\n\r\n <table class=\"table_Eter table-hover\">\r\n <thead class=\"dark\">\r\n <tr >\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'>\r\n <mat-checkbox color='primary' (change)='seletecAllEvent($event)' [(ngModel)]='selectAll' [indeterminate]='indeterminateState'> </mat-checkbox> </th>\r\n <th\r\n [class]=\"column.style?.movil\"\r\n *ngFor='let column of columns' scope=\"col\"\r\n [ngStyle]=\"column.style\"\r\n >{{column.label}}</th>\r\n <th *ngIf=\"shouldShowMenu()\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class='mat-elevation-z3'>\r\n\r\n <tr style=\"cursor: pointer;\" *ngFor='let row of data' (click)='clickOnRoW(row)' [class]=\"checkboxs[row[configuration.primaryKey]]?'selected-row':''\">\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'> <mat-checkbox color='primary' [(ngModel)]='checkboxs[row[configuration.primaryKey]]' (click)='clicked($event)' (change)='selection(row, $event)'> </mat-checkbox> </th>\r\n <th [class]='column.style?.movil' [ngStyle]='column.style' scope=\"row\" *ngFor='let column of columns'>{{ row[column.ID] }}</th>\r\n\r\n <th *ngIf=\"shouldShowMenu()\" style=\"display: flex; justify-content: center; align-items: center; overflow: visible;\">\r\n <mat-icon\r\n (click)=\"showMenu($event)\"\r\n [matMenuTriggerFor]=\"menu\"\r\n matRipple\r\n class=\"menu_more_vert\"\r\n aria-hidden=\"false\"\r\n aria-label=\"Example delete icon\"\r\n >more_vert</mat-icon>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngFor=\"let btn of buttonsConfig\" >\r\n <button *ngIf=\"btn.condition()\" (click)=\"action(btn.action, row)\" mat-menu-item class=\"d-flex align-items-center w-100\" >\r\n <i class=\"fa {{btn.icon}} btn-accion\" style=\"font-size:120%; margin-right: 10px\"></i>\r\n {{btn.tooltip}}\r\n </button>\r\n </div>\r\n\r\n </mat-menu>\r\n </th>\r\n\r\n </tr>\r\n\r\n\r\n </tbody>\r\n\r\n </table>\r\n\r\n <div *ngIf='length == 0 && data.length == 0' style=\"margin-left: 10px;\"> <strong>No se encontr\u00F3 informaci\u00F3n</strong></div>\r\n\r\n <mat-paginator *ngIf=\"paginatorActive\"\r\n [length]=\"length\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons\r\n (page)=\"changePage($event)\"></mat-paginator>\r\n\r\n </div>\r\n\r\n<ng-template #buttonsTable let-fontSize=\"fontSize\" let-marginRight=\"marginRight\" style='flex:0.5; display:flex; flex-direction: row; justify-content: flex-end;'>\r\n <ng-container *ngFor=\"let btn of buttonsConfig\">\r\n <div *ngIf=\"btn.conditionShowHeader()\" (click)=\"action(btn.action)\" matTooltip=\"{{btn.tooltip}}\" matTooltipPosition=\"above\">\r\n <i class=\"fa {{btn.icon}} btn-accion\" [ngStyle]=\"{'font-size': fontSize ? fontSize : '170%', 'margin-right': marginRight ? marginRight : '15px'}\"></i>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".contenedor-tabla{width:100%;overflow-x:auto}.table_Eter{width:100%;margin-bottom:4px;color:primary;border-collapse:collapse}.table_Eter .dark th{color:#fff;background-color:#343a40;border-color:#454d55;text-align:center;vertical-align:middle}.table_Eter thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table_Eter th,.table_Eter td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}th{text-align:inherit}*,*:before,*:after{box-sizing:border-box}.btn-accion{cursor:pointer}mat-form-field{padding:0!important;width:100%}.filter{padding:0;margin-bottom:10px;width:100%}.filter ::ng-deep .mat-form-field-underline{bottom:3px!important}.filter ::ng-deep .mat-form-field-infix{border:0!important}.filter ::ng-deep .mat-form-field-wrapper{padding:0}.filter ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper{padding:0}.selected-row{color:#212529;background-color:#00000013}button:focus{outline:none!important}@media only screen and (max-width: 600px){.no-movil{display:none}}::ng-deep .mat-paginator{background:transparent!important}@media screen and (max-width: 400px){.filter{padding:0;margin-bottom:40px;width:70%}}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i15.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i15.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i16.FiltersComponent, selector: "app-filters", inputs: ["headerFilters"], outputs: ["applyFilters"] }] });
456
449
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataTableComponent, decorators: [{
457
450
  type: Component,
458
451
  args: [{ selector: 'data-table', template: "<div class=\"contenedor-tabla\">\r\n <app-filters [headerFilters]=\"headerFilters\" (applyFilters)=\"applyFilters($event)\">\r\n </app-filters>\r\n\r\n <div style='display: flex; flex-direction: row; justify-content: space-between; align-items: center;'>\r\n <div style='flex:1; font-size: 1rem;'>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>0 && selectedRows.length<2'> {{selectedRows.length}} Seleccionado </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length>1'> {{selectedRows.length}} Seleccionados </p></strong>\r\n <strong><p style='margin:0' *ngIf='selectedRows.length<1 && !configuration.hideTitle'> {{title}} </p></strong>\r\n </div>\r\n\r\n <div *ngIf=\"!configuration.hideFilter\" style='flex:3; padding-right: 10px; margin-bottom: 5px;'>\r\n <mat-form-field class='filter'>\r\n <input type=\"text\" [(ngModel)]='filters' (keyup)='changeFilters()' matInput placeholder=\"Filtrar\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonsTable\"></ng-container>\r\n\r\n </div>\r\n\r\n <table class=\"table_Eter table-hover\">\r\n <thead class=\"dark\">\r\n <tr >\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'>\r\n <mat-checkbox color='primary' (change)='seletecAllEvent($event)' [(ngModel)]='selectAll' [indeterminate]='indeterminateState'> </mat-checkbox> </th>\r\n <th\r\n [class]=\"column.style?.movil\"\r\n *ngFor='let column of columns' scope=\"col\"\r\n [ngStyle]=\"column.style\"\r\n >{{column.label}}</th>\r\n <th *ngIf=\"shouldShowMenu()\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class='mat-elevation-z3'>\r\n\r\n <tr style=\"cursor: pointer;\" *ngFor='let row of data' (click)='clickOnRoW(row)' [class]=\"checkboxs[row[configuration.primaryKey]]?'selected-row':''\">\r\n <th *ngIf='configuration.selectable' style='justify-content: center;'> <mat-checkbox color='primary' [(ngModel)]='checkboxs[row[configuration.primaryKey]]' (click)='clicked($event)' (change)='selection(row, $event)'> </mat-checkbox> </th>\r\n <th [class]='column.style?.movil' [ngStyle]='column.style' scope=\"row\" *ngFor='let column of columns'>{{ row[column.ID] }}</th>\r\n\r\n <th *ngIf=\"shouldShowMenu()\" style=\"display: flex; justify-content: center; align-items: center; overflow: visible;\">\r\n <mat-icon\r\n (click)=\"showMenu($event)\"\r\n [matMenuTriggerFor]=\"menu\"\r\n matRipple\r\n class=\"menu_more_vert\"\r\n aria-hidden=\"false\"\r\n aria-label=\"Example delete icon\"\r\n >more_vert</mat-icon>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngFor=\"let btn of buttonsConfig\" >\r\n <button *ngIf=\"btn.condition()\" (click)=\"action(btn.action, row)\" mat-menu-item class=\"d-flex align-items-center w-100\" >\r\n <i class=\"fa {{btn.icon}} btn-accion\" style=\"font-size:120%; margin-right: 10px\"></i>\r\n {{btn.tooltip}}\r\n </button>\r\n </div>\r\n\r\n </mat-menu>\r\n </th>\r\n\r\n </tr>\r\n\r\n\r\n </tbody>\r\n\r\n </table>\r\n\r\n <div *ngIf='length == 0 && data.length == 0' style=\"margin-left: 10px;\"> <strong>No se encontr\u00F3 informaci\u00F3n</strong></div>\r\n\r\n <mat-paginator *ngIf=\"paginatorActive\"\r\n [length]=\"length\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons\r\n (page)=\"changePage($event)\"></mat-paginator>\r\n\r\n </div>\r\n\r\n<ng-template #buttonsTable let-fontSize=\"fontSize\" let-marginRight=\"marginRight\" style='flex:0.5; display:flex; flex-direction: row; justify-content: flex-end;'>\r\n <ng-container *ngFor=\"let btn of buttonsConfig\">\r\n <div *ngIf=\"btn.conditionShowHeader()\" (click)=\"action(btn.action)\" matTooltip=\"{{btn.tooltip}}\" matTooltipPosition=\"above\">\r\n <i class=\"fa {{btn.icon}} btn-accion\" [ngStyle]=\"{'font-size': fontSize ? fontSize : '170%', 'margin-right': marginRight ? marginRight : '15px'}\"></i>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [".contenedor-tabla{width:100%;overflow-x:auto}.table_Eter{width:100%;margin-bottom:4px;color:primary;border-collapse:collapse}.table_Eter .dark th{color:#fff;background-color:#343a40;border-color:#454d55;text-align:center;vertical-align:middle}.table_Eter thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table_Eter th,.table_Eter td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}th{text-align:inherit}*,*:before,*:after{box-sizing:border-box}.btn-accion{cursor:pointer}mat-form-field{padding:0!important;width:100%}.filter{padding:0;margin-bottom:10px;width:100%}.filter ::ng-deep .mat-form-field-underline{bottom:3px!important}.filter ::ng-deep .mat-form-field-infix{border:0!important}.filter ::ng-deep .mat-form-field-wrapper{padding:0}.filter ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper{padding:0}.selected-row{color:#212529;background-color:#00000013}button:focus{outline:none!important}@media only screen and (max-width: 600px){.no-movil{display:none}}::ng-deep .mat-paginator{background:transparent!important}@media screen and (max-width: 400px){.filter{padding:0;margin-bottom:40px;width:70%}}\n"] }]
@@ -510,6 +503,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
510
503
  type: Output
511
504
  }], packOff: [{
512
505
  type: Output
506
+ }], advance: [{
507
+ type: Output
513
508
  }], internalData: [{
514
509
  type: Output
515
510
  }], paginator: [{
@@ -523,4 +518,4 @@ var enumRules;
523
518
  enumRules[enumRules["=="] = 2] = "==";
524
519
  enumRules[enumRules["!="] = 3] = "!=";
525
520
  })(enumRules || (enumRules = {}));
526
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNM0QsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQzNFLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sUUFBUSxNQUFNLEVBQUUsQ0FBQztLQUN6QjtJQUVELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU3QixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO0lBRW5DLE1BQU0sUUFBUSxHQUNaLFVBQVUsR0FBRyxNQUFNO1FBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3pDLENBQUMsQ0FB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UUFLYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcmVlblNpemVVdGlsIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS11dGlsJztcclxuaW1wb3J0IHsgRXhwb3J0RGF0YVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRhYmxlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Z1bmN0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9ySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5cclxuY29uc3Qgc3BhbmlzaFJhbmdlTGFiZWwgPSAocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcikgPT4ge1xyXG4gIGlmIChsZW5ndGggPT0gMCB8fCBwYWdlU2l6ZSA9PSAwKSB7XHJcbiAgICByZXR1cm4gYDAgZGUgJHtsZW5ndGh9YDtcclxuICB9XHJcblxyXG4gIGxlbmd0aCA9IE1hdGgubWF4KGxlbmd0aCwgMCk7XHJcblxyXG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYWdlICogcGFnZVNpemU7XHJcblxyXG4gIGNvbnN0IGVuZEluZGV4ID1cclxuICAgIHN0YXJ0SW5kZXggPCBsZW5ndGhcclxuICAgICAgPyBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUsIGxlbmd0aClcclxuICAgICAgOiBzdGFydEluZGV4ICsgcGFnZVNpemU7XHJcblxyXG4gIHJldHVybiBgJHtzdGFydEluZGV4ICsgMX0gLSAke2VuZEluZGV4fSBkZSAke2xlbmd0aH1gO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYXRhLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRpdGxlO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM7XHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgY29tYm87XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbiA9IHtcclxuICAgIGFkZDogZmFsc2UsXHJcbiAgICBlZGl0OiBmYWxzZSxcclxuICAgIGRlbGV0ZTogZmFsc2UsXHJcbiAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICBwcmludDogZmFsc2UsXHJcbiAgICBhZGRQZXI6IGZhbHNlLFxyXG4gICAgZWRpdFBlcjogZmFsc2UsXHJcbiAgICBwcmltYXJ5S2V5OiAnaWQnLFxyXG4gICAgZXhwb3J0WHNseDogZmFsc2UsXHJcbiAgICBoaWRlVGl0bGU6IHRydWUsXHJcbiAgICBoaWRlRmlsdGVyOiB0cnVlLFxyXG4gICAgbm90SW5pdGlhbGl6ZTogZmFsc2UsXHJcbiAgICBleHBvcnRYc2x4QnlSb3c6IGZhbHNlLFxyXG4gICAgZXhwb3J0WHNseFdpdGhQYWdlczogZmFsc2UsXHJcbiAgICB2aWV3OiBmYWxzZSxcclxuICAgIGNsb3NlT3JkZXI6IGZhbHNlLFxyXG4gICAgcGFja09mZjogZmFsc2VcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSByZWxvYWRUYWJsZTogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQElucHV0KCkgdXJsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGFyYW1zOiBBcnJheTxhbnk+O1xyXG4gIEBJbnB1dCgpIHRpdGxlTG9hZGluZzogc3RyaW5nID0gXCJcIlxyXG4gIEBJbnB1dCgpIG1lc3NhZ2VMb2FkaW5nOiBzdHJpbmcgPSBcIlwiXHJcbiAgQElucHV0KCkgaGVhZGVyRmlsZVhsc206IEFycmF5PGFueT4gPSBbXVxyXG4gIEBJbnB1dCgpIGhlYWRlckZpbHRlcnM6IEFycmF5PGFueT4gPSBbXVxyXG4gIEBJbnB1dCgpIHhzbHhUaXRsZUZpZWxkczogc3RyaW5nW107XHJcbiAgQElucHV0KCkgeHNseFNoZWV0TmFtZUZpZWxkczogc3RyaW5nW107XHJcbiAgQElucHV0KCkgeHNseEJvZHlGaWVsZHM6IHN0cmluZztcclxuICBASW5wdXQoKSB4c2x4UGFyYW1zOiBBcnJheTxhbnk+ID0gbnVsbDtcclxuXHJcbiAgQE91dHB1dCgpIGNsaWNrUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGFkZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBwcmludCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRYc2x4QnlSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgYWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2VPcmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBwYWNrT2ZmID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGludGVybmFsRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBtb3ZpbCA9IFNjcmVlblNpemVVdGlsLmlzTW9iaWxlKCk7XHJcbiAgZmlsdGVyc1Bvc3Q6IEFycmF5PGFueT4gPSBbXVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcbiAgc2VsZWN0ZWRSb3dzID0gW107IC8qKiBhbG1hY2VuYSBsYXMgZmlsYXMgc2VsZWNjaW9uYWRhcyAqL1xyXG4gIGNoZWNrYm94cyA9IHt9O1xyXG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gIGluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xyXG4gIGZpbHRlcnM7XHJcbiAgb3JpZ2luYWxEYXRhID0gW107XHJcbiAgcGFnaW5hdG9yQWN0aXZlID0gdHJ1ZTtcclxuICBzY3JlZW46IGJvb2xlYW4gPSB0cnVlXHJcblxyXG4gIGlkX2NvbXBhbmlhO1xyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XHJcblxyXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xyXG4gIGxlbmd0aCA9IDA7XHJcblxyXG4gIHBhZ2UgPSAwO1xyXG5cclxuICBhYm92ZTogVG9vbHRpcFBvc2l0aW9uW10gPSBbJ2Fib3ZlJ107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZ1bmN0aW9uRXRlcjogRnVuY3Rpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnREYXRhU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcclxuICAgIHRoaXMucGFnaW5hdG9yVHJhbnNsYXRlLm5leHRQYWdlTGFiZWwgPSAnU2lndWllbnRlIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUubGFzdFBhZ2VMYWJlbCA9ICfDmmx0aW1hIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XHJcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5maXJzdFBhZ2VMYWJlbCA9ICdQcmltZXJhIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZ2V0UmFuZ2VMYWJlbCA9IHNwYW5pc2hSYW5nZUxhYmVsO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uc0NvbmZpZyA9IFtcclxuICAgIHsgYWN0aW9uOiAnZWRpdCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCwgaWNvbjogJ2ZhLWVkaXQnLCB0b29sdGlwOiAnRWRpdGFyJyB9LFxyXG4gICAgeyBhY3Rpb246ICdwcmludCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbnQgJiYgdGhpcy5zY3JlZW4sIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnByaW50ICYmIHRoaXMuc2NyZWVuLCBpY29uOiAnZmEtcHJpbnQnLCB0b29sdGlwOiAnSW1wcmltaXInIH0sXHJcbiAgICB7IGFjdGlvbjogJ2FjdGl2ZScsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZSwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlLCBpY29uOiAnZmEtYWRqdXN0JywgdG9vbHRpcDogJ0FjdGl2YXIvRGVzYWN0aXZhcicgfSxcclxuICAgIHsgYWN0aW9uOiAnYWRkJywgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5hZGQsIGNvbmRpdGlvbjogKCkgPT4gZmFsc2UsIGljb246ICdmYS1wbHVzLWNpcmNsZScsIHRvb2x0aXA6ICdOdWV2bycgfSxcclxuICAgIHsgYWN0aW9uOiAnZXhwb3J0VG9FeGNlbCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJiAodGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHggfHwgdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhXaXRoUGFnZXMpLCBjb25kaXRpb246ICgpID0+IGZhbHNlLCBpY29uOiAnZmEtZG93bmxvYWQnLCB0b29sdGlwOiAnRXhwb3J0YXIgVGFibGEnIH0sXHJcbiAgICB7IGFjdGlvbjogJ2V4cG9ydFRvRXhjZWxCeVJvdycsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseEJ5Um93LCBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5leHBvcnRYc2x4QnlSb3csIGljb246ICdmYS1kb3dubG9hZCcsIHRvb2x0aXA6ICdFeHBvcnRhciBSZWdpc3RybycgfSxcclxuICAgIHsgYWN0aW9uOiAndmlldycsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldywgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldywgaWNvbjogJ2ZhLWV5ZScsIHRvb2x0aXA6ICdWZXIgZGV0YWxsZScgfSxcclxuICAgIHsgYWN0aW9uOiAnY2xvc2VPcmRlcicsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uY2xvc2VPcmRlciwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uY2xvc2VPcmRlciwgaWNvbjogJ2ZhLWNoZWNrLWNpcmNsZScsIHRvb2x0aXA6ICdDZXJyYXIgb3JkZW4nIH0sXHJcbiAgICB7IGFjdGlvbjogJ3BhY2tPZmYnLCBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PiB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLnBhY2tPZmYsIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnBhY2tPZmYsIGljb246ICdmYS1jYXJ0LWFycm93LWRvd24nLCB0b29sdGlwOiAnRGVzcGFjaGFyIHJlY3Vyc29zJyB9LFxyXG4gICAgeyBhY3Rpb246ICdkZWxldGUnLCBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PiB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPiAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5kZWxldGUsIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSwgaWNvbjogJ2ZhLXRyYXNoJywgdG9vbHRpcDogJ0VsaW1pbmFyJyB9XHJcbiAgXTtcclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAod2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDApIHtcclxuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlXHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHsgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDAgPyB0aGlzLnNjcmVlbiA9IHRydWUgOiB0aGlzLnNjcmVlbiA9IGZhbHNlOyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHsgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDAgPyB0aGlzLnNjcmVlbiA9IHRydWUgOiB0aGlzLnNjcmVlbiA9IGZhbHNlOyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWxvYWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnJlbG9hZFRhYmxlLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZXRlY0FsbEV2ZW50KCcnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50aXRsZUxvYWRpbmcgPT0gXCJcIiA/IHRoaXMudGl0bGVMb2FkaW5nID0gXCJDYXJnYW5kb1wiIDogJyc7XHJcbiAgICB0aGlzLm1lc3NhZ2VMb2FkaW5nID09IFwiXCIgPyB0aGlzLm1lc3NhZ2VMb2FkaW5nID0gXCJPYnRlbmllbmRvIGRhdG9zLi4uXCIgOiAnJztcclxuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZSA/IHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyh0aGlzLnRpdGxlTG9hZGluZywgdGhpcy5tZXNzYWdlTG9hZGluZykgOiAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy51cmwgJiYgIXRoaXMuY29uZmlndXJhdGlvbi5ub3RJbml0aWFsaXplKSB7XHJcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKClcclxuICAgICAgICB0aGlzLmRhdGEgPSBzZXJ2aWNlWydkYXRhJ107XHJcbiAgICAgICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHNlcnZpY2UpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnVybCkge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGF0ZVRhYmxlQnlVcmwoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXJQYXJhbXMoKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KHRoaXMudXJsLCB0aGlzLmZpbHRlcnNQb3N0LCB0aGlzLnBhcmFtcylcclxuICB9XHJcblxyXG4gIHZhbGlkYXJQYXJhbXMoKSB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZnVuY3Rpb25FdGVyLnJlbW92ZUR1cGxpY2F0ZU9iamVjdHModGhpcy5wYXJhbXMpXHJcbiAgICBpZiAodGhpcy5wYXJhbXMpIHtcclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAncGFnZScpKSB7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaCh7IGlkOiAncGFnZScsIHZhbHVlOiAnMCcgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAncGVyX3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3Blcl9wYWdlJywgdmFsdWU6IHRoaXMucGFnZVNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAnZmlsdGVyJykpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHsgaWQ6ICdmaWx0ZXInLCB2YWx1ZTogJycgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHZhbGlkYXRlUnVsZXMoKSB7XHJcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY29sdW1uc10gb2YgdGhpcy5jb2x1bW5zLmVudHJpZXMoKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IFtpbmRleERhdGEsIGVsZW1lbnRdIG9mIHRoaXMuZGF0YS5lbnRyaWVzKCkpIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5ydWxlcykge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGNvbHVtbnMucnVsZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJ1bGUucnVsZSA9PSBlbnVtUnVsZXNbJz09J10pIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudFtjb2x1bW5zLklEXSAmJiBlbGVtZW50W2NvbHVtbnMuSURdLnRvU3RyaW5nKCkgPT0gcnVsZS52YWx1ZVJ1bGUudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSBydWxlLnZhbHVlQWN0aW9uXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gZWxlbWVudFtjb2x1bW5zLklEXTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdmZWNoYScgfHwgY29sdW1ucy50eXBlID09ICdkYXRlJykgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSB0aGlzLmZ1bmN0aW9uRXRlci5kYXRlSXNvKGNvbHVtblZhbHVlKTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdkYXRlV2l0aFRpbWUnKSB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IHRoaXMuZnVuY3Rpb25FdGVyLmRhdGVXaXRoVGltZShjb2x1bW5WYWx1ZT8udG9TdHJpbmcoKSA/PyBjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnY3VycmVuY3knKSB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IEludGwuTnVtYmVyRm9ybWF0KCdlcy1DTycpLmZvcm1hdChjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnYm9vbGVhbicpIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gY29sdW1uVmFsdWUgPT0gMSA/IFwiU2lcIiA6IFwiTm9cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGlja09uUm9XKHJvd0RhdGEpIHtcclxuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2hlY2tib3hzW3Jvd0RhdGFbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXVxyXG5cclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZSl7XHJcbiAgICAgIHRoaXMuY2xlYXJDaGVja2JveGVzKClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbihyb3dEYXRhLCB7IGNoZWNrZWQ6ICFzdGF0ZSB9LCB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZSlcclxuICAgIHRoaXMuY2xpY2tSb3cuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHNob3dNZW51KCRldmVudCl7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oYWN0aW9uLCByb3cgPSBudWxsKSB7XHJcbiAgICB2YXIgY3VycmVudFJvdyA9IHJvdyA/IFtyb3ddIDogdGhpcy5zZWxlY3RlZFJvd3NcclxuXHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlICdhZGQnOlxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uYWRkUGVyKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZC5lbWl0KHRoaXMubGVuZ3RoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4oVGFibGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbixcclxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb2x1bW5zKSksXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzYwdmgnLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZWRpdCc6XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5lZGl0UGVyKSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbnM6IGFueTtcclxuICAgICAgICAgIGNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XHJcblxyXG4gICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRSb3dbMF0pLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW4uSUQgPT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zW2luZGV4XS52YWx1ZSA9IGN1cnJlbnRSb3dbMF1ba2V5XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4oVGFibGVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbixcclxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb2x1bW5zKSksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGN1cnJlbnRSb3dbMF0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzYwdmgnLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IG5ldzogcmVzdWx0LCBvbGQ6IGN1cnJlbnRSb3dbMF0gfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnZGVsZXRlJzpcclxuICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwcmludCc6XHJcbiAgICAgICAgdGhpcy5wcmludC5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhY3RpdmUnOlxyXG4gICAgICAgIHRoaXMuYWN0aXZlLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V4cG9ydFRvRXhjZWwnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0VG9FeGNlbCgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V4cG9ydFRvRXhjZWxCeVJvdyc6XHJcbiAgICAgICAgdGhpcy5leHBvcnRYc2x4QnlSb3cuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgdGhpcy52aWV3LmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nsb3NlT3JkZXInOlxyXG4gICAgICAgIHRoaXMuY2xvc2VPcmRlci5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwYWNrT2ZmJzpcclxuICAgICAgICB0aGlzLnBhY2tPZmYuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uc0NvbmZpZy5zb21lKGJ0biA9PiBidG4uY29uZGl0aW9uKCkpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IFtdXHJcbiAgICBpZiAodGhpcy51cmwgJiYgdGhpcy5wYXJhbXMpIHtcclxuICAgICAgcGFyYW1zID0gWy4uLnRoaXMucGFyYW1zXVxyXG5cclxuICAgICAgaWYodGhpcy54c2x4UGFyYW1zKXtcclxuICAgICAgICBwYXJhbXMgPSBbLi4ucGFyYW1zLCAuLi50aGlzLnhzbHhQYXJhbXNdXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGkgPSBwYXJhbXMuZmluZEluZGV4KHggPT4geC5pZCA9PSAncGVyX3BhZ2UnKVxyXG4gICAgICBwYXJhbXNbaV0udmFsdWUgPSAxMDAwMDAwMDBcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjpcImlkaDF2MVwiLFxyXG4gICAgICAgIFwiYm9keVwiOiBbXHJcbiAgICAgICAge1wibm9tYnJlXCI6XCJOSG9qYTF2YWxvcjFcIiwgXCJhcmVhXCI6XCJBSG9qYTF2YWxvcjFcIiwgXCJjYXJnb1wiOlwiQ0hvamExdmFsb3IxXCJ9LFxyXG4gICAgICAgIHtcIm5vbWJyZVwiOlwiTkhvamExdmFsb3IyXCIsIFwiYXJlYVwiOlwiQUhvamExdmFsb3IyXCIsIFwiY2FyZ29cIjpcIkNIb2phMXZhbG9yMlwifSxcclxuICAgICAgICB7XCJub21icmVcIjpcIk5Ib2phMXZhbG9yM1wiLCBcImFyZWFcIjpcIkFIb2phMXZhbG9yM1wiLCBcImNhcmdvXCI6XCJDSG9qYTF2YWxvcjNcIn1cclxuICAgICAgICBdfSxcclxuICAgICAge1xyXG4gICAgICAgIFwiaWRcIjpcImlkaDJ2MlwiLFxyXG4gICAgICAgIFwiYm9keVwiOiBbXHJcbiAgICAgICAge1wibm9tYnJlXCI6XCJOSG9qYTJ2YWxvcjFcIiwgXCJhcmVhXCI6XCJBSG9qYTJ2YWxvcjFcIiwgXCJjYXJnb1wiOlwiQ0hvamEydmFsb3IxXCJ9LFxyXG4gICAgICAgIHtcIm5vbWJyZVwiOlwiTkhvamEydmFsb3IyXCIsIFwiYXJlYVwiOlwiQUhvamEydmFsb3IyXCIsIFwiY2FyZ29cIjpcIkNIb2phMnZhbG9yMlwifSxcclxuICAgICAgICB7XCJub21icmVcIjpcIk5Ib2phMnZhbG9yM1wiLCBcImFyZWFcIjpcIkFIb2phMnZhbG9yM1wiLCBcImNhcmdvXCI6XCJDSG9qYTJ2YWxvcjNcIn1cclxuICAgICAgXX0sXHJcbiAgICAgIHtcclxuICAgICAgICBcImlkXCI6XCJpZGgzdjNcIixcclxuICAgICAgICBcImJvZHlcIjogW1xyXG4gICAgICAgIHtcIm5vbWJyZVwiOlwiTkhvamEzdmFsb3IxXCIsIFwiYXJlYVwiOlwiQUhvamEzdmFsb3IxXCIsIFwiY2FyZ29cIjpcIkNIb2phM3ZhbG9yMVwifSxcclxuICAgICAgICB7XCJub21icmVcIjpcIk5Ib2phM3ZhbG9yMlwiLCBcImFyZWFcIjpcIkFIb2phM3ZhbG9yMlwiLCBcImNhcmdvXCI6XCJDSG9qYTN2YWxvcjJcIn0sXHJcbiAgICAgICAge1wibm9tYnJlXCI6XCJOSG9qYTN2YWxvcjNcIiwgXCJhcmVhXCI6XCJBSG9qYTN2YWxvcjNcIiwgXCJjYXJnb1wiOlwiQ0hvamEzdmFsb3IzXCJ9XHJcbiAgICAgIF19LFxyXG4gICAgXVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVFeGNlbFdpdGhTaGVldHM8YW55PihcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXHJcbiAgICAgICAgdGhpcy50aXRsZSxcclxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgdGhpcy51cmwsXHJcbiAgICAgICAgdGhpcy5wYXJhbXMsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdCxcclxuICAgICAgICB0aGlzLnhzbHhUaXRsZUZpZWxkcyxcclxuICAgICAgICB0aGlzLnhzbHhTaGVldE5hbWVGaWVsZHMsXHJcbiAgICAgICAgdGhpcy54c2x4Qm9keUZpZWxkcylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRvWGxzeDxhbnk+KFxyXG4gICAgICAgIHRoaXMudGl0bGUsXHJcbiAgICAgICAgdGhpcy5oZWFkZXJGaWxlWGxzbSxcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMudXJsID8gbnVsbCA6XHJcbiAgICAgICAgdGhpcy5kYXRhLFxyXG4gICAgICAgIHRoaXMudXJsLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICB0aGlzLmZpbHRlcnNQb3N0KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBzZWxlY3Rpb24ocm93LCAkZXZlbnQsIGVtaXRFdmVudCA9IHRydWUpIHtcclxuICAgIHRoaXMuY2hlY2tib3hzW3Jvd1t0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dID0gJGV2ZW50LmNoZWNrZWQ7XHJcbiAgICBpZiAoJGV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MucHVzaChyb3cpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd3MuaW5kZXhPZihyb3cpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZSAmJiBlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09IHRoaXMuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoIDwgdGhpcy5kYXRhLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVN0YXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGlja2VkKCRldmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWxldGVjQWxsRXZlbnQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdEFsbCkge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmNoZWNrYm94cykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveHNba2V5XSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcclxuICAgICAgbGV0IGRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xlYXJDaGVja2JveGVzKClcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKVxyXG4gICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xyXG4gICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKVxyXG4gICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xyXG4gICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrYm94ZXMoKSB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmNoZWNrYm94cykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hzW2tleV0gPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWx0ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zKVxyXG4gICAgICB0aGlzLnBhcmFtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ2ZpbHRlcicpIHtcclxuICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmZpbHRlcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYXBwbHlGaWx0ZXJzKCRldmVudD86IGFueSkge1xyXG4gICAgaWYgKCRldmVudCkgdGhpcy5maWx0ZXJzUG9zdCA9ICRldmVudFxyXG4gICAgaWYgKHRoaXMudXJsKSB7XHJcbiAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKVxyXG4gICAgICB0aGlzLmRhdGEgPSByZXNbJ2RhdGEnXTtcclxuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgICAgIHRoaXMubGVuZ3RoID0gcmVzWydjb3VudCddO1xyXG4gICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHJlcylcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YS5maWx0ZXIoKGRhdGEpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBkYXRhW2tleV1cclxuICAgICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZmlsdGVycy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYWdlKCRldmVudCkge1xyXG4gICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3Blcl9wYWdlJykge1xyXG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSAkZXZlbnQucGFnZVNpemU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ3BhZ2UnKSB7XHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmVudW0gZW51bVJ1bGVzIHtcclxuICBcIj5cIixcclxuICBcIjxcIixcclxuICBcIj09XCIsXHJcbiAgXCIhPVwiXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItdGFibGFcIj5cclxuICA8YXBwLWZpbHRlcnMgW2hlYWRlckZpbHRlcnNdPVwiaGVhZGVyRmlsdGVyc1wiIChhcHBseUZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj5cclxuICA8L2FwcC1maWx0ZXJzPlxyXG5cclxuICA8ZGl2IHN0eWxlPSdkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47ICBhbGlnbi1pdGVtczogY2VudGVyOyc+XHJcbiAgICA8ZGl2IHN0eWxlPSdmbGV4OjE7IGZvbnQtc2l6ZTogMXJlbTsnPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg+MCAmJiBzZWxlY3RlZFJvd3MubGVuZ3RoPDInPiB7e3NlbGVjdGVkUm93cy5sZW5ndGh9fSBTZWxlY2Npb25hZG8gPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg+MSc+IHt7c2VsZWN0ZWRSb3dzLmxlbmd0aH19IFNlbGVjY2lvbmFkb3MgPC9wPjwvc3Ryb25nPlxyXG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg8MSAmJiAhY29uZmlndXJhdGlvbi5oaWRlVGl0bGUnPiB7e3RpdGxlfX0gPC9wPjwvc3Ryb25nPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWd1cmF0aW9uLmhpZGVGaWx0ZXJcIiBzdHlsZT0nZmxleDozOyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiA1cHg7Jz5cclxuICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz0nZmlsdGVyJz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT0nZmlsdGVycycgKGtleXVwKT0nY2hhbmdlRmlsdGVycygpJyAgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJGaWx0cmFyXCI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc1RhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuIDx0YWJsZSBjbGFzcz1cInRhYmxlX0V0ZXIgdGFibGUtaG92ZXJcIj5cclxuICAgICA8dGhlYWQgY2xhc3M9XCJkYXJrXCI+XHJcbiAgICAgICA8dHIgPlxyXG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIChjaGFuZ2UpPSdzZWxldGVjQWxsRXZlbnQoJGV2ZW50KScgWyhuZ01vZGVsKV09J3NlbGVjdEFsbCcgW2luZGV0ZXJtaW5hdGVdPSdpbmRldGVybWluYXRlU3RhdGUnPiA8L21hdC1jaGVja2JveD4gIDwvdGg+XHJcbiAgICAgICA8dGhcclxuICAgICAgIFtjbGFzc109XCJjb2x1bW4uc3R5bGU/Lm1vdmlsXCJcclxuICAgICAgICpuZ0Zvcj0nbGV0IGNvbHVtbiBvZiBjb2x1bW5zJyBzY29wZT1cImNvbFwiXHJcbiAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uc3R5bGVcIlxyXG4gICAgICAgPnt7Y29sdW1uLmxhYmVsfX08L3RoPlxyXG4gICAgICAgPHRoICpuZ0lmPVwic2hvdWxkU2hvd01lbnUoKVwiPjwvdGg+XHJcbiAgICAgICA8L3RyPlxyXG4gICAgIDwvdGhlYWQ+XHJcbiAgICAgPHRib2R5IGNsYXNzPSdtYXQtZWxldmF0aW9uLXozJz5cclxuXHJcbiAgICAgICA8dHIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nRm9yPSdsZXQgcm93IG9mIGRhdGEnIChjbGljayk9J2NsaWNrT25Sb1cocm93KScgW2NsYXNzXT1cImNoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0/J3NlbGVjdGVkLXJvdyc6JydcIj5cclxuICAgICAgICA8dGggKm5nSWY9J2NvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZScgc3R5bGU9J2p1c3RpZnktY29udGVudDogY2VudGVyOyc+IDxtYXQtY2hlY2tib3ggY29sb3I9J3ByaW1hcnknIFsobmdNb2RlbCldPSdjaGVja2JveHNbcm93W2NvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dJyAoY2xpY2spPSdjbGlja2VkKCRldmVudCknIChjaGFuZ2UpPSdzZWxlY3Rpb24ocm93LCAkZXZlbnQpJz4gPC9tYXQtY2hlY2tib3g+ICA8L3RoPlxyXG4gICAgICAgIDx0aCBbY2xhc3NdPSdjb2x1bW4uc3R5bGU/Lm1vdmlsJyBbbmdTdHlsZV09J2NvbHVtbi5zdHlsZScgc2NvcGU9XCJyb3dcIiAqbmdGb3I9J2xldCBjb2x1bW4gb2YgY29sdW1ucyc+e3sgcm93W2NvbHVtbi5JRF0gfX08L3RoPlxyXG5cclxuICAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgb3ZlcmZsb3c6IHZpc2libGU7XCI+XHJcbiAgICAgICAgICA8bWF0LWljb25cclxuICAgICAgICAgIChjbGljayk9XCJzaG93TWVudSgkZXZlbnQpXCJcclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAgICAgY2xhc3M9XCJtZW51X21vcmVfdmVydFwiXHJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeGFtcGxlIGRlbGV0ZSBpY29uXCJcclxuICAgICAgICAgID5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIiA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ0bi5jb25kaXRpb24oKVwiIChjbGljayk9XCJhY3Rpb24oYnRuLmFjdGlvbiwgcm93KVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCIgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSB7e2J0bi5pY29ufX0gYnRuLWFjY2lvblwiIHN0eWxlPVwiZm9udC1zaXplOjEyMCU7IG1hcmdpbi1yaWdodDogMTBweFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIHt7YnRuLnRvb2x0aXB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgPC90cj5cclxuXHJcblxyXG4gICAgIDwvdGJvZHk+XHJcblxyXG4gICA8L3RhYmxlPlxyXG5cclxuICAgPGRpdiAqbmdJZj0nbGVuZ3RoID09IDAgJiYgZGF0YS5sZW5ndGggPT0gMCcgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweDtcIj4gPHN0cm9uZz5ObyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpw7NuPC9zdHJvbmc+PC9kaXY+XHJcblxyXG4gICA8bWF0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvckFjdGl2ZVwiXHJcbiAgIFtsZW5ndGhdPVwibGVuZ3RoXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9uc1xyXG4gICAocGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25zVGFibGUgbGV0LWZvbnRTaXplPVwiZm9udFNpemVcIiBsZXQtbWFyZ2luUmlnaHQ9XCJtYXJnaW5SaWdodFwiIHN0eWxlPSdmbGV4OjAuNTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyc+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJidG4uY29uZGl0aW9uU2hvd0hlYWRlcigpXCIgKGNsaWNrKT1cImFjdGlvbihidG4uYWN0aW9uKVwiIG1hdFRvb2x0aXA9XCJ7e2J0bi50b29sdGlwfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZSA/IGZvbnRTaXplIDogJzE3MCUnLCAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQgPyBtYXJnaW5SaWdodCA6ICcxNXB4J31cIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
521
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNM0QsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQzNFLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sUUFBUSxNQUFNLEVBQUUsQ0FBQztLQUN6QjtJQUVELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU3QixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO0lBRW5DLE1BQU0sUUFBUSxHQUNaLFVBQVUsR0FBRyxNQUFNO1FBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3pDLENBQUMsQ0FB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ICcuLy4uLy4uLy4uL3NlcnZpY2VzL3NjcmVlbi1zaXplLXV0aWwnO1xyXG5pbXBvcnQgeyBFeHBvcnREYXRhU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvZXhwb3J0LWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVGFibGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JJbnRsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5jb25zdCBzcGFuaXNoUmFuZ2VMYWJlbCA9IChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSA9PiB7XHJcbiAgaWYgKGxlbmd0aCA9PSAwIHx8IHBhZ2VTaXplID09IDApIHtcclxuICAgIHJldHVybiBgMCBkZSAke2xlbmd0aH1gO1xyXG4gIH1cclxuXHJcbiAgbGVuZ3RoID0gTWF0aC5tYXgobGVuZ3RoLCAwKTtcclxuXHJcbiAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2UgKiBwYWdlU2l6ZTtcclxuXHJcbiAgY29uc3QgZW5kSW5kZXggPVxyXG4gICAgc3RhcnRJbmRleCA8IGxlbmd0aFxyXG4gICAgICA/IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSwgbGVuZ3RoKVxyXG4gICAgICA6IHN0YXJ0SW5kZXggKyBwYWdlU2l6ZTtcclxuXHJcbiAgcmV0dXJuIGAke3N0YXJ0SW5kZXggKyAxfSAtICR7ZW5kSW5kZXh9IGRlICR7bGVuZ3RofWA7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhdGEtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdGl0bGU7XHJcbiAgQElucHV0KCkgY29sdW1ucztcclxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBjb21ibztcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uID0ge1xyXG4gICAgYWRkOiBmYWxzZSxcclxuICAgIGVkaXQ6IGZhbHNlLFxyXG4gICAgZGVsZXRlOiBmYWxzZSxcclxuICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgIHByaW50OiBmYWxzZSxcclxuICAgIGFkZFBlcjogZmFsc2UsXHJcbiAgICBlZGl0UGVyOiBmYWxzZSxcclxuICAgIHByaW1hcnlLZXk6ICdpZCcsXHJcbiAgICBleHBvcnRYc2x4OiBmYWxzZSxcclxuICAgIGhpZGVUaXRsZTogdHJ1ZSxcclxuICAgIGhpZGVGaWx0ZXI6IHRydWUsXHJcbiAgICBub3RJbml0aWFsaXplOiBmYWxzZSxcclxuICAgIGV4cG9ydFhzbHhCeVJvdzogZmFsc2UsXHJcbiAgICBleHBvcnRYc2x4V2l0aFBhZ2VzOiBmYWxzZSxcclxuICAgIHZpZXc6IGZhbHNlLFxyXG4gICAgY2xvc2VPcmRlcjogZmFsc2UsXHJcbiAgICBwYWNrT2ZmOiBmYWxzZSxcclxuICAgIGFkdmFuY2U6IGZhbHNlLFxyXG4gICAgYWR2YW5jZUxhYmVsOiBudWxsXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcmVsb2FkVGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhcmFtczogQXJyYXk8YW55PjtcclxuICBASW5wdXQoKSB0aXRsZUxvYWRpbmc6IHN0cmluZyA9IFwiXCJcclxuICBASW5wdXQoKSBtZXNzYWdlTG9hZGluZzogc3RyaW5nID0gXCJcIlxyXG4gIEBJbnB1dCgpIGhlYWRlckZpbGVYbHNtOiBBcnJheTxhbnk+ID0gW11cclxuICBASW5wdXQoKSBoZWFkZXJGaWx0ZXJzOiBBcnJheTxhbnk+ID0gW11cclxuICBASW5wdXQoKSB4c2x4VGl0bGVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhTaGVldE5hbWVGaWVsZHM6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHhzbHhCb2R5RmllbGRzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgeHNseFBhcmFtczogQXJyYXk8YW55PiA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSBjbGlja1JvdyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcHJpbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0WHNseEJ5Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcGFja09mZiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBhZHZhbmNlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGludGVybmFsRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBtb3ZpbCA9IFNjcmVlblNpemVVdGlsLmlzTW9iaWxlKCk7XHJcbiAgZmlsdGVyc1Bvc3Q6IEFycmF5PGFueT4gPSBbXVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcbiAgc2VsZWN0ZWRSb3dzID0gW107IC8qKiBhbG1hY2VuYSBsYXMgZmlsYXMgc2VsZWNjaW9uYWRhcyAqL1xyXG4gIGNoZWNrYm94cyA9IHt9O1xyXG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gIGluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xyXG4gIGZpbHRlcnM7XHJcbiAgb3JpZ2luYWxEYXRhID0gW107XHJcbiAgcGFnaW5hdG9yQWN0aXZlID0gdHJ1ZTtcclxuICBzY3JlZW46IGJvb2xlYW4gPSB0cnVlXHJcblxyXG4gIGlkX2NvbXBhbmlhO1xyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XHJcblxyXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xyXG4gIGxlbmd0aCA9IDA7XHJcblxyXG4gIHBhZ2UgPSAwO1xyXG5cclxuICBhYm92ZTogVG9vbHRpcFBvc2l0aW9uW10gPSBbJ2Fib3ZlJ107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZ1bmN0aW9uRXRlcjogRnVuY3Rpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnREYXRhU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcclxuICAgIHRoaXMucGFnaW5hdG9yVHJhbnNsYXRlLm5leHRQYWdlTGFiZWwgPSAnU2lndWllbnRlIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUubGFzdFBhZ2VMYWJlbCA9ICfDmmx0aW1hIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XHJcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5maXJzdFBhZ2VMYWJlbCA9ICdQcmltZXJhIHDDoWdpbmEnO1xyXG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZ2V0UmFuZ2VMYWJlbCA9IHNwYW5pc2hSYW5nZUxhYmVsO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uc0NvbmZpZyA9IFtcclxuICAgIHsgYWN0aW9uOiAnZWRpdCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCwgaWNvbjogJ2ZhLWVkaXQnLCB0b29sdGlwOiAnRWRpdGFyJyB9LFxyXG4gICAgeyBhY3Rpb246ICdwcmludCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbnQgJiYgdGhpcy5zY3JlZW4sIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnByaW50ICYmIHRoaXMuc2NyZWVuLCBpY29uOiAnZmEtcHJpbnQnLCB0b29sdGlwOiAnSW1wcmltaXInIH0sXHJcbiAgICB7IGFjdGlvbjogJ2FjdGl2ZScsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZSwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlLCBpY29uOiAnZmEtYWRqdXN0JywgdG9vbHRpcDogJ0FjdGl2YXIvRGVzYWN0aXZhcicgfSxcclxuICAgIHsgYWN0aW9uOiAnYWRkJywgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5hZGQsIGNvbmRpdGlvbjogKCkgPT4gZmFsc2UsIGljb246ICdmYS1wbHVzLWNpcmNsZScsIHRvb2x0aXA6ICdOdWV2bycgfSxcclxuICAgIHsgYWN0aW9uOiAnZXhwb3J0VG9FeGNlbCcsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJiAodGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHggfHwgdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhXaXRoUGFnZXMpLCBjb25kaXRpb246ICgpID0+IGZhbHNlLCBpY29uOiAnZmEtZG93bmxvYWQnLCB0b29sdGlwOiAnRXhwb3J0YXIgVGFibGEnIH0sXHJcbiAgICB7IGFjdGlvbjogJ2V4cG9ydFRvRXhjZWxCeVJvdycsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseEJ5Um93LCBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5leHBvcnRYc2x4QnlSb3csIGljb246ICdmYS1kb3dubG9hZCcsIHRvb2x0aXA6ICdFeHBvcnRhciBSZWdpc3RybycgfSxcclxuICAgIHsgYWN0aW9uOiAndmlldycsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldywgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldywgaWNvbjogJ2ZhLWV5ZScsIHRvb2x0aXA6ICdWZXIgZGV0YWxsZScgfSxcclxuICAgIHsgYWN0aW9uOiAnY2xvc2VPcmRlcicsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uY2xvc2VPcmRlciwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uY2xvc2VPcmRlciwgaWNvbjogJ2ZhLWNoZWNrLWNpcmNsZScsIHRvb2x0aXA6ICdDZXJyYXIgb3JkZW4nIH0sXHJcbiAgICB7IGFjdGlvbjogJ3BhY2tPZmYnLCBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PiB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLnBhY2tPZmYsIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnBhY2tPZmYsIGljb246ICdmYS1jYXJ0LWFycm93LWRvd24nLCB0b29sdGlwOiAnRGVzcGFjaGFyIHJlY3Vyc29zJyB9LFxyXG4gICAgeyBhY3Rpb246ICdhZHZhbmNlJywgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT4gdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlLCBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlLCBpY29uOiAnZmEtYXJyb3ctcmlnaHQnLCB0b29sdGlwOiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZUxhYmVsIH0sXHJcbiAgICB7IGFjdGlvbjogJ2RlbGV0ZScsIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSwgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uZGVsZXRlLCBpY29uOiAnZmEtdHJhc2gnLCB0b29sdGlwOiAnRWxpbWluYXInIH0sXHJcbiAgXTtcclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAod2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDApIHtcclxuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlXHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHsgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDAgPyB0aGlzLnNjcmVlbiA9IHRydWUgOiB0aGlzLnNjcmVlbiA9IGZhbHNlOyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHsgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDAgPyB0aGlzLnNjcmVlbiA9IHRydWUgOiB0aGlzLnNjcmVlbiA9IGZhbHNlOyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWxvYWRUYWJsZSkge1xyXG4gICAgICB0aGlzLnJlbG9hZFRhYmxlLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZXRlY0FsbEV2ZW50KCcnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50aXRsZUxvYWRpbmcgPT0gXCJcIiA/IHRoaXMudGl0bGVMb2FkaW5nID0gXCJDYXJnYW5kb1wiIDogJyc7XHJcbiAgICB0aGlzLm1lc3NhZ2VMb2FkaW5nID09IFwiXCIgPyB0aGlzLm1lc3NhZ2VMb2FkaW5nID0gXCJPYnRlbmllbmRvIGRhdG9zLi4uXCIgOiAnJztcclxuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZSA/IHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyh0aGlzLnRpdGxlTG9hZGluZywgdGhpcy5tZXNzYWdlTG9hZGluZykgOiAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy51cmwgJiYgIXRoaXMuY29uZmlndXJhdGlvbi5ub3RJbml0aWFsaXplKSB7XHJcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKClcclxuICAgICAgICB0aGlzLmRhdGEgPSBzZXJ2aWNlWydkYXRhJ107XHJcbiAgICAgICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHNlcnZpY2UpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnVybCkge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGF0ZVRhYmxlQnlVcmwoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXJQYXJhbXMoKTtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KHRoaXMudXJsLCB0aGlzLmZpbHRlcnNQb3N0LCB0aGlzLnBhcmFtcylcclxuICB9XHJcblxyXG4gIHZhbGlkYXJQYXJhbXMoKSB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZnVuY3Rpb25FdGVyLnJlbW92ZUR1cGxpY2F0ZU9iamVjdHModGhpcy5wYXJhbXMpXHJcbiAgICBpZiAodGhpcy5wYXJhbXMpIHtcclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAncGFnZScpKSB7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaCh7IGlkOiAncGFnZScsIHZhbHVlOiAnMCcgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAncGVyX3BhZ2UnKSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goeyBpZDogJ3Blcl9wYWdlJywgdmFsdWU6IHRoaXMucGFnZVNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKHggPT4geC5pZCA9PSAnZmlsdGVyJykpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHsgaWQ6ICdmaWx0ZXInLCB2YWx1ZTogJycgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHZhbGlkYXRlUnVsZXMoKSB7XHJcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY29sdW1uc10gb2YgdGhpcy5jb2x1bW5zLmVudHJpZXMoKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IFtpbmRleERhdGEsIGVsZW1lbnRdIG9mIHRoaXMuZGF0YS5lbnRyaWVzKCkpIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5ydWxlcykge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGNvbHVtbnMucnVsZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJ1bGUucnVsZSA9PSBlbnVtUnVsZXNbJz09J10pIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudFtjb2x1bW5zLklEXSAmJiBlbGVtZW50W2NvbHVtbnMuSURdLnRvU3RyaW5nKCkgPT0gcnVsZS52YWx1ZVJ1bGUudG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSBydWxlLnZhbHVlQWN0aW9uXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gZWxlbWVudFtjb2x1bW5zLklEXTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdmZWNoYScgfHwgY29sdW1ucy50eXBlID09ICdkYXRlJykgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSB0aGlzLmZ1bmN0aW9uRXRlci5kYXRlSXNvKGNvbHVtblZhbHVlKTtcclxuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdkYXRlV2l0aFRpbWUnKSB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IHRoaXMuZnVuY3Rpb25FdGVyLmRhdGVXaXRoVGltZShjb2x1bW5WYWx1ZT8udG9TdHJpbmcoKSA/PyBjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnY3VycmVuY3knKSB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IEludGwuTnVtYmVyRm9ybWF0KCdlcy1DTycpLmZvcm1hdChjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnYm9vbGVhbicpIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gY29sdW1uVmFsdWUgPT0gMSA/IFwiU2lcIiA6IFwiTm9cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YS5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuY29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUJ1dHRvbkNvbmZpZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnV0dG9uQ29uZmlnKCkge1xyXG4gICAgdGhpcy5idXR0b25zQ29uZmlnID0gdGhpcy5idXR0b25zQ29uZmlnLm1hcChidXR0b24gPT4ge1xyXG4gICAgICBpZiAoYnV0dG9uLmFjdGlvbiA9PT0gJ2FkdmFuY2UnKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4uYnV0dG9uLCB0b29sdGlwOiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZUxhYmVsPz8gJ0F2YW56YXInIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGJ1dHRvbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tPblJvVyhyb3dEYXRhKSB7XHJcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNoZWNrYm94c1tyb3dEYXRhW3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV1cclxuXHJcbiAgICBpZighdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpe1xyXG4gICAgICB0aGlzLmNsZWFyQ2hlY2tib3hlcygpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24ocm93RGF0YSwgeyBjaGVja2VkOiAhc3RhdGUgfSwgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpXHJcbiAgICB0aGlzLmNsaWNrUm93LmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBzaG93TWVudSgkZXZlbnQpe1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uKGFjdGlvbiwgcm93ID0gbnVsbCkge1xyXG4gICAgdmFyIGN1cnJlbnRSb3cgPSByb3cgPyBbcm93XSA6IHRoaXMuc2VsZWN0ZWRSb3dzXHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSAnYWRkJzpcclxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmFkZFBlcikge1xyXG4gICAgICAgICAgdGhpcy5hZGQuZW1pdCh0aGlzLmxlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdFBlcikge1xyXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5zOiBhbnk7XHJcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xyXG5cclxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Um93WzBdKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLklEID09IGtleSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uc1tpbmRleF0udmFsdWUgPSBjdXJyZW50Um93WzBdW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjdXJyZW50Um93WzBdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0LmVtaXQoeyBuZXc6IHJlc3VsdCwgb2xkOiBjdXJyZW50Um93WzBdIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgICAgdGhpcy5kZWxldGUuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncHJpbnQnOlxyXG4gICAgICAgIHRoaXMucHJpbnQuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYWN0aXZlJzpcclxuICAgICAgICB0aGlzLmFjdGl2ZS5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsQnlSb3cnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0WHNseEJ5Um93LmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgIHRoaXMudmlldy5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjbG9zZU9yZGVyJzpcclxuICAgICAgICB0aGlzLmNsb3NlT3JkZXIuZW1pdChjdXJyZW50Um93KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGFja09mZic6XHJcbiAgICAgICAgdGhpcy5wYWNrT2ZmLmVtaXQoY3VycmVudFJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FkdmFuY2UnOlxyXG4gICAgICAgIHRoaXMuYWR2YW5jZS5lbWl0KGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvdWxkU2hvd01lbnUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25zQ29uZmlnLnNvbWUoYnRuID0+IGJ0bi5jb25kaXRpb24oKSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGV4cG9ydFRvRXhjZWwoKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gW11cclxuICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnBhcmFtcykge1xyXG4gICAgICBwYXJhbXMgPSBbLi4udGhpcy5wYXJhbXNdXHJcblxyXG4gICAgICBpZih0aGlzLnhzbHhQYXJhbXMpe1xyXG4gICAgICAgIHBhcmFtcyA9IFsuLi5wYXJhbXMsIC4uLnRoaXMueHNseFBhcmFtc11cclxuICAgICAgfVxyXG4gICAgICBsZXQgaSA9IHBhcmFtcy5maW5kSW5kZXgoeCA9PiB4LmlkID09ICdwZXJfcGFnZScpXHJcbiAgICAgIGlmKGkgIT0gLTEpIHBhcmFtc1tpXS52YWx1ZSA9IDEwMDAwMDAwMFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVFeGNlbFdpdGhTaGVldHM8YW55PihcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXHJcbiAgICAgICAgdGhpcy50aXRsZSxcclxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgdGhpcy51cmwsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1Bvc3QsXHJcbiAgICAgICAgdGhpcy54c2x4VGl0bGVGaWVsZHMsXHJcbiAgICAgICAgdGhpcy54c2x4U2hlZXROYW1lRmllbGRzLFxyXG4gICAgICAgIHRoaXMueHNseEJvZHlGaWVsZHMpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVUb1hsc3g8YW55PihcclxuICAgICAgICB0aGlzLnRpdGxlLFxyXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXHJcbiAgICAgICAgdGhpcy50aXRsZSxcclxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOlxyXG4gICAgICAgIHRoaXMuZGF0YSxcclxuICAgICAgICB0aGlzLnVybCxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGlvbihyb3csICRldmVudCwgZW1pdEV2ZW50ID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSAkZXZlbnQuY2hlY2tlZDtcclxuICAgIGlmICgkZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5wdXNoKHJvdyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkUm93cy5pbmRleE9mKHJvdyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlICYmIGVtaXRFdmVudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT0gdGhpcy5kYXRhLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPCB0aGlzLmRhdGEubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsaWNrZWQoJGV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNlbGV0ZWNBbGxFdmVudCgkZXZlbnQpIHtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVN0YXRlID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0QWxsKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY2hlY2tib3hzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrYm94c1trZXldID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xyXG4gICAgICBsZXQgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MucHVzaChlbGVtZW50KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckNoZWNrYm94ZXMoKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXREYXRlVGFibGVCeVVybCgpXHJcbiAgICB0aGlzLmRhdGEgPSBzZXJ2aWNlWydkYXRhJ107XHJcbiAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHNlcnZpY2UpXHJcbiAgICB0aGlzLmxlbmd0aCA9IHNlcnZpY2VbJ2NvdW50J107XHJcbiAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ2hlY2tib3hlcygpIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuY2hlY2tib3hzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdGhpcy5jaGVja2JveHNba2V5XSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUZpbHRlcnMoKSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXMpXHJcbiAgICAgIHRoaXMucGFyYW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSAnZmlsdGVyJykge1xyXG4gICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcnMoJGV2ZW50PzogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB0aGlzLmZpbHRlcnNQb3N0ID0gJGV2ZW50XHJcbiAgICBpZiAodGhpcy51cmwpIHtcclxuICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgdGhpcy5nZXREYXRlVGFibGVCeVVybCgpXHJcbiAgICAgIHRoaXMuZGF0YSA9IHJlc1snZGF0YSddO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcclxuICAgICAgdGhpcy5sZW5ndGggPSByZXNbJ2NvdW50J107XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxEYXRhLmVtaXQocmVzKVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhLmZpbHRlcigoZGF0YSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGRhdGFba2V5XVxyXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAuaW5jbHVkZXModGhpcy5maWx0ZXJzLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2UoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnBhcmFtcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5pZCA9PSAncGVyX3BhZ2UnKSB7XHJcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlU2l6ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZWxlbWVudC5pZCA9PSAncGFnZScpIHtcclxuICAgICAgICBlbGVtZW50LnZhbHVlID0gJGV2ZW50LnBhZ2VJbmRleDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuZW51bSBlbnVtUnVsZXMge1xyXG4gIFwiPlwiLFxyXG4gIFwiPFwiLFxyXG4gIFwiPT1cIixcclxuICBcIiE9XCJcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGVuZWRvci10YWJsYVwiPlxyXG4gIDxhcHAtZmlsdGVycyBbaGVhZGVyRmlsdGVyc109XCJoZWFkZXJGaWx0ZXJzXCIgKGFwcGx5RmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPlxyXG4gIDwvYXBwLWZpbHRlcnM+XHJcblxyXG4gIDxkaXYgc3R5bGU9J2Rpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Jz5cclxuICAgIDxkaXYgc3R5bGU9J2ZsZXg6MTsgZm9udC1zaXplOiAxcmVtOyc+XHJcbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4wICYmIHNlbGVjdGVkUm93cy5sZW5ndGg8Mic+IHt7c2VsZWN0ZWRSb3dzLmxlbmd0aH19IFNlbGVjY2lvbmFkbyA8L3A+PC9zdHJvbmc+XHJcbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4xJz4ge3tzZWxlY3RlZFJvd3MubGVuZ3RofX0gU2VsZWNjaW9uYWRvcyA8L3A+PC9zdHJvbmc+XHJcbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aDwxICYmICFjb25maWd1cmF0aW9uLmhpZGVUaXRsZSc+IHt7dGl0bGV9fSA8L3A+PC9zdHJvbmc+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZ3VyYXRpb24uaGlkZUZpbHRlclwiIHN0eWxlPSdmbGV4OjM7IHBhZGRpbmctcmlnaHQ6IDEwcHg7IG1hcmdpbi1ib3R0b206IDVweDsnPlxyXG4gICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPSdmaWx0ZXInPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPSdmaWx0ZXJzJyAoa2V5dXApPSdjaGFuZ2VGaWx0ZXJzKCknICBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIkZpbHRyYXJcIj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zVGFibGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gPHRhYmxlIGNsYXNzPVwidGFibGVfRXRlciB0YWJsZS1ob3ZlclwiPlxyXG4gICAgIDx0aGVhZCBjbGFzcz1cImRhcmtcIj5cclxuICAgICAgIDx0ciA+XHJcbiAgICAgICAgPHRoICpuZ0lmPSdjb25maWd1cmF0aW9uLnNlbGVjdGFibGUnIHN0eWxlPSdqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnPlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj0ncHJpbWFyeScgKGNoYW5nZSk9J3NlbGV0ZWNBbGxFdmVudCgkZXZlbnQpJyBbKG5nTW9kZWwpXT0nc2VsZWN0QWxsJyBbaW5kZXRlcm1pbmF0ZV09J2luZGV0ZXJtaW5hdGVTdGF0ZSc+IDwvbWF0LWNoZWNrYm94PiAgPC90aD5cclxuICAgICAgIDx0aFxyXG4gICAgICAgW2NsYXNzXT1cImNvbHVtbi5zdHlsZT8ubW92aWxcIlxyXG4gICAgICAgKm5nRm9yPSdsZXQgY29sdW1uIG9mIGNvbHVtbnMnIHNjb3BlPVwiY29sXCJcclxuICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5zdHlsZVwiXHJcbiAgICAgICA+e3tjb2x1bW4ubGFiZWx9fTwvdGg+XHJcbiAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCI+PC90aD5cclxuICAgICAgIDwvdHI+XHJcbiAgICAgPC90aGVhZD5cclxuICAgICA8dGJvZHkgY2xhc3M9J21hdC1lbGV2YXRpb24tejMnPlxyXG5cclxuICAgICAgIDx0ciBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiAqbmdGb3I9J2xldCByb3cgb2YgZGF0YScgKGNsaWNrKT0nY2xpY2tPblJvVyhyb3cpJyBbY2xhc3NdPVwiY2hlY2tib3hzW3Jvd1tjb25maWd1cmF0aW9uLnByaW1hcnlLZXldXT8nc2VsZWN0ZWQtcm93JzonJ1wiPlxyXG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz4gPG1hdC1jaGVja2JveCBjb2xvcj0ncHJpbWFyeScgWyhuZ01vZGVsKV09J2NoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0nIChjbGljayk9J2NsaWNrZWQoJGV2ZW50KScgKGNoYW5nZSk9J3NlbGVjdGlvbihyb3csICRldmVudCknPiA8L21hdC1jaGVja2JveD4gIDwvdGg+XHJcbiAgICAgICAgPHRoIFtjbGFzc109J2NvbHVtbi5zdHlsZT8ubW92aWwnIFtuZ1N0eWxlXT0nY29sdW1uLnN0eWxlJyBzY29wZT1cInJvd1wiICpuZ0Zvcj0nbGV0IGNvbHVtbiBvZiBjb2x1bW5zJz57eyByb3dbY29sdW1uLklEXSB9fTwvdGg+XHJcblxyXG4gICAgICAgIDx0aCAqbmdJZj1cInNob3VsZFNob3dNZW51KClcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBvdmVyZmxvdzogdmlzaWJsZTtcIj5cclxuICAgICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dNZW51KCRldmVudClcIlxyXG4gICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4gICAgICAgICAgbWF0UmlwcGxlXHJcbiAgICAgICAgICBjbGFzcz1cIm1lbnVfbW9yZV92ZXJ0XCJcclxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkV4YW1wbGUgZGVsZXRlIGljb25cIlxyXG4gICAgICAgICAgPm1vcmVfdmVydDwvbWF0LWljb24+XHJcblxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uc0NvbmZpZ1wiID5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYnRuLmNvbmRpdGlvbigpXCIgKGNsaWNrKT1cImFjdGlvbihidG4uYWN0aW9uLCByb3cpXCIgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIiA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgc3R5bGU9XCJmb250LXNpemU6MTIwJTsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAge3tidG4udG9vbHRpcH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICA8L3RyPlxyXG5cclxuXHJcbiAgICAgPC90Ym9keT5cclxuXHJcbiAgIDwvdGFibGU+XHJcblxyXG4gICA8ZGl2ICpuZ0lmPSdsZW5ndGggPT0gMCAmJiBkYXRhLmxlbmd0aCA9PSAwJyBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O1wiPiA8c3Ryb25nPk5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2nDs248L3N0cm9uZz48L2Rpdj5cclxuXHJcbiAgIDxtYXQtcGFnaW5hdG9yICpuZ0lmPVwicGFnaW5hdG9yQWN0aXZlXCJcclxuICAgW2xlbmd0aF09XCJsZW5ndGhcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zXHJcbiAgIChwYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2J1dHRvbnNUYWJsZSBsZXQtZm9udFNpemU9XCJmb250U2l6ZVwiIGxldC1tYXJnaW5SaWdodD1cIm1hcmdpblJpZ2h0XCIgc3R5bGU9J2ZsZXg6MC41OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Jz5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uc0NvbmZpZ1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImJ0bi5jb25kaXRpb25TaG93SGVhZGVyKClcIiAoY2xpY2spPVwiYWN0aW9uKGJ0bi5hY3Rpb24pXCIgbWF0VG9vbHRpcD1cInt7YnRuLnRvb2x0aXB9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmEge3tidG4uaWNvbn19IGJ0bi1hY2Npb25cIiBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZSc6IGZvbnRTaXplID8gZm9udFNpemUgOiAnMTcwJScsICdtYXJnaW4tcmlnaHQnOiBtYXJnaW5SaWdodCA/IG1hcmdpblJpZ2h0IDogJzE1cHgnfVwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9pbnRlcmZhY2VzL2RhdGEtdGFibGUvdGFibGUtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgZWRpdD86Ym9vbGVhbixcclxuICAgIGFkZD86Ym9vbGVhbixcclxuICAgIGRlbGV0ZT86Ym9vbGVhbixcclxuICAgIHNlbGVjdGFibGU/OmJvb2xlYW4sXHJcbiAgICBhZGRQZXI/OmJvb2xlYW4sXHJcbiAgICBlZGl0UGVyPzpib29sZWFuLFxyXG4gICAgcHJpbWFyeUtleT86c3RyaW5nLFxyXG4gICAgcHJpbnQ/OmJvb2xlYW4sXHJcbiAgICBhY3RpdmU/OmJvb2xlYW4sXHJcbiAgICBoaWRlVGl0bGU/OmJvb2xlYW4sXHJcbiAgICBoaWRlRmlsdGVyPzogYm9vbGVhbixcclxuICAgIG5vdEluaXRpYWxpemU/OiBib29sZWFuLFxyXG4gICAgZXhwb3J0WHNseD86Ym9vbGVhbixcclxuICAgIGV4cG9ydFhzbHhXaXRoUGFnZXM/OmJvb2xlYW4sXHJcbiAgICBleHBvcnRYc2x4QnlSb3c/OiBib29sZWFuLFxyXG4gICAgdmlldz86IGJvb2xlYW4sXHJcbiAgICBjbG9zZU9yZGVyPzogYm9vbGVhbixcclxuICAgIHBhY2tPZmY/OiBib29sZWFuLFxyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9pbnRlcmZhY2VzL2RhdGEtdGFibGUvdGFibGUtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgZWRpdD86Ym9vbGVhbixcclxuICAgIGFkZD86Ym9vbGVhbixcclxuICAgIGRlbGV0ZT86Ym9vbGVhbixcclxuICAgIHNlbGVjdGFibGU/OmJvb2xlYW4sXHJcbiAgICBhZGRQZXI/OmJvb2xlYW4sXHJcbiAgICBlZGl0UGVyPzpib29sZWFuLFxyXG4gICAgcHJpbWFyeUtleT86c3RyaW5nLFxyXG4gICAgcHJpbnQ/OmJvb2xlYW4sXHJcbiAgICBhY3RpdmU/OmJvb2xlYW4sXHJcbiAgICBoaWRlVGl0bGU/OmJvb2xlYW4sXHJcbiAgICBoaWRlRmlsdGVyPzogYm9vbGVhbixcclxuICAgIG5vdEluaXRpYWxpemU/OiBib29sZWFuLFxyXG4gICAgZXhwb3J0WHNseD86Ym9vbGVhbixcclxuICAgIGV4cG9ydFhzbHhXaXRoUGFnZXM/OmJvb2xlYW4sXHJcbiAgICBleHBvcnRYc2x4QnlSb3c/OiBib29sZWFuLFxyXG4gICAgdmlldz86IGJvb2xlYW4sXHJcbiAgICBjbG9zZU9yZGVyPzogYm9vbGVhbixcclxuICAgIHBhY2tPZmY/OiBib29sZWFuLFxyXG4gICAgYWR2YW5jZT86IGJvb2xlYW4sXHJcbiAgICBhZHZhbmNlTGFiZWw/OiBzdHJpbmcsXHJcbn1cclxuIl19
@@ -35,7 +35,7 @@ export class ExportDataService {
35
35
  }
36
36
  async generateToXlsx(title, header, name, body, url, params, filtersPost, BodyFields, generateFile = true) {
37
37
  if (!generateFile)
38
- this.message.openLoading("Cargando", "Generando archivo");
38
+ this.message.openLoading("Cargando", "Generando el archivo");
39
39
  body = await this.getDataBody(url, params, body, filtersPost);
40
40
  let workbook = new Workbook();
41
41
  let worksheet = workbook.addWorksheet(name);
@@ -49,8 +49,6 @@ export class ExportDataService {
49
49
  underline: 'double',
50
50
  bold: true,
51
51
  };
52
- //Add row with current date
53
- worksheet.addRow(['Date : ' + this.functionEter.dateDB(new Date())]);
54
52
  // Blank Row
55
53
  // worksheet.addRow([]);
56
54
  // let addheader = false
@@ -140,12 +138,7 @@ export class ExportDataService {
140
138
  return body;
141
139
  if (url) {
142
140
  var res;
143
- if (filtersPost.length > 0) {
144
- res = await this.http.postDataBody(url, filtersPost, params);
145
- }
146
- else {
147
- res = await this.http.getDataBody(url, params);
148
- }
141
+ res = await this.http.postDataBody(url, filtersPost, params);
149
142
  if (res['count']) {
150
143
  return res['data'];
151
144
  }
@@ -170,4 +163,4 @@ var enumRules;
170
163
  enumRules[enumRules["=="] = 2] = "==";
171
164
  enumRules[enumRules["!="] = 3] = "!=";
172
165
  })(enumRules || (enumRules = {}));
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLElBQWlCLEVBQ2pCLFlBQThCLEVBQzlCLE9BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUV0QyxLQUFLLENBQUMsdUJBQXVCLENBQzNCLEtBQWEsRUFDYixNQUFxQixFQUNyQixJQUFZLEVBQ1osTUFBaUIsRUFDakIsR0FBWSxFQUNaLE1BQWlCLEVBQ2pCLFdBQXVDLEVBQ3ZDLFdBQXNCLEVBQ3RCLGVBQTBCLEVBQzFCLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBRXpELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDM0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUVoQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0Is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QUNaLG1DQUFHLENBQUE7SUFDSCxtQ0FBRyxDQUFBO0lBQ0gscUNBQUksQ0FBQTtJQUNKLHFDQUFJLENBQUE7QUFDTixDQUFDLEVBTEksU0FBUyxLQUFULFNBQVMsUUFLYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0IHsgcGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kYXRhLXRhYmxlL3BhcmFtcyc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL2Z1bmN0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVhZGVyRmlsdGVycyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVycy9oZWFkZXItZmlsdGVycyc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cG9ydERhdGFTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmdW5jdGlvbkV0ZXI6IEZ1bmN0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgYXN5bmMgZ2VuZXJhdGVFeGNlbFdpdGhTaGVldHM8VD4oXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgaGVhZGVyOiBBcnJheTxwYXJhbXM+LFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgYm9kaWVzPzogQXJyYXk8VD4sXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBwYXJhbXM/OiBwYXJhbXNbXSxcclxuICAgIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+PixcclxuICAgIHRpdGxlRmllbGRzPzogc3RyaW5nW10sXHJcbiAgICBzaGVldE5hbWVGaWVsZHM/OiBzdHJpbmdbXSxcclxuICAgIEJvZHlGaWVsZHM/OnN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubWVzc2FnZS5vcGVuTG9hZGluZyhcIkNhcmdhbmRvXCIsIFwiR2VuZXJhbmRvIGFyY2hpdm9cIilcclxuXHJcbiAgICBib2RpZXMgPSBhd2FpdCB0aGlzLmdldERhdGFCb2R5PEFycmF5PFQ+Pih1cmwsIHBhcmFtcywgYm9kaWVzLCBmaWx0ZXJzUG9zdClcclxuICAgIGNvbnN0IHdvcmtib29rID0gbmV3IFdvcmtib29rKCk7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJvZGllcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgYm9keSA9IGJvZGllc1tpbmRleF07XHJcblxyXG4gICAgICBpZiAodGl0bGVGaWVsZHMpIHtcclxuICAgICAgICB0aXRsZSA9IHRpdGxlRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBuYW1lU2hlZXQgPSBcInNoZWV0XCI7XHJcblxyXG4gICAgICBpZiAoc2hlZXROYW1lRmllbGRzKSB7XHJcbiAgICAgICAgbmFtZVNoZWV0ID0gc2hlZXROYW1lRmllbGRzLm1hcChwYXJhbSA9PiBib2R5W3BhcmFtXSkuam9pbihcIi1cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVUb1hsc3godGl0bGUsIGhlYWRlciwgYCR7bmFtZVNoZWV0KygnLScrKGluZGV4KzEpKX1gLCBib2R5LCBudWxsLCBudWxsLCBudWxsLCBCb2R5RmllbGRzLCBmYWxzZSk7XHJcbiAgICAgIHdvcmtib29rLmFkZFdvcmtzaGVldCh3b3Jrc2hlZXQubmFtZSwgeyB2aWV3czogW3sgc3RhdGU6ICdmcm96ZW4nLCB5U3BsaXQ6IDEgfV0gfSk7XHJcbiAgICAgIGNvbnN0IG5ld1dvcmtzaGVldCA9IHdvcmtib29rLmdldFdvcmtzaGVldCh3b3Jrc2hlZXQubmFtZSk7XHJcbiAgICAgIG5ld1dvcmtzaGVldC5tb2RlbCA9IHdvcmtzaGVldC5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShidWZmZXIsIG5hbWUpO1xyXG5cclxuICAgIHRoaXMubWVzc2FnZS5jbG9zZUxvYWRpbmcoKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVG9YbHN4PFQ+KFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGJvZHk/OiBULFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgcGFyYW1zPzogQXJyYXk8cGFyYW1zPixcclxuICAgIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+PixcclxuICAgIEJvZHlGaWVsZHM/OnN0cmluZyxcclxuICAgIGdlbmVyYXRlRmlsZTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBhcmNoaXZvXCIpXHJcblxyXG4gICAgYm9keSA9IGF3YWl0IHRoaXMuZ2V0RGF0YUJvZHk8VD4odXJsLCBwYXJhbXMsIGJvZHksIGZpbHRlcnNQb3N0KVxyXG5cclxuICAgIGxldCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xyXG4gICAgbGV0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChuYW1lKTtcclxuXHJcbiAgICAvLyBBZGQgbmV3IHJvd1xyXG4gICAgbGV0IHRpdGxlUm93ID0gd29ya3NoZWV0LmFkZFJvdyhbdGl0bGVdKTtcclxuXHJcbiAgICAvLyBTZXQgZm9udCwgc2l6ZSBhbmQgc3R5bGUgaW4gdGl0bGUgcm93LlxyXG4gICAgdGl0bGVSb3cuZm9udCA9IHtcclxuICAgICAgbmFtZTogJ0NvbWljIFNhbnMgTVMnLFxyXG4gICAgICBmYW1pbHk6IDQsXHJcbiAgICAgIHNpemU6IDE2LFxyXG4gICAgICB1bmRlcmxpbmU6ICdkb3VibGUnLFxyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIC8vQWRkIHJvdyB3aXRoIGN1cnJlbnQgZGF0ZVxyXG4gICAgd29ya3NoZWV0LmFkZFJvdyhbJ0RhdGUgOiAgJyArIHRoaXMuZnVuY3Rpb25FdGVyLmRhdGVEQihuZXcgRGF0ZSgpKV0pO1xyXG5cclxuICAgIC8vIEJsYW5rIFJvd1xyXG4gICAgLy8gd29ya3NoZWV0LmFkZFJvdyhbXSk7XHJcbiAgICAvLyBsZXQgYWRkaGVhZGVyID0gZmFsc2VcclxuICAgIC8vIGZvciAobGV0IHAgb2YgaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgPT09IG51bGwpKSB7XHJcbiAgICAvLyAgIHdvcmtzaGVldC5hZGRSb3coW2JvZHlbcC52YWx1ZV0/P3AudmFsdWVdKVxyXG4gICAgLy8gICBhZGRoZWFkZXIgPSB0cnVlXHJcbiAgICAvLyB9XHJcblxyXG4gICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7XHJcbiAgICBsZXQgYWRkaGVhZGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBwIG9mIGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkID09PSBudWxsKSkge1xyXG4gICAgICBsZXQgdmFsdWUgPSBwLnZhbHVlO1xyXG4gICAgICBjb25zdCBtYXRjaGVzID0gdmFsdWUubWF0Y2goL3soLio/KX0vZyk7XHJcbiAgICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgICAgbWF0Y2hlcy5mb3JFYWNoKG1hdGNoID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IG1hdGNoLnNsaWNlKDEsIC0xKTtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShtYXRjaCwgYm9keVtrZXldID8/IG1hdGNoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB3b3Jrc2hlZXQuYWRkUm93KFt2YWx1ZV0pO1xyXG4gICAgICBhZGRoZWFkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhZGRoZWFkZXIpIHdvcmtzaGVldC5hZGRSb3coW10pO1xyXG5cclxuICAgIC8vQWRkIEhlYWRlciBSb3dcclxuICAgIGxldCBoZWFkZXJSb3dWYWx1ZSA9IGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkICE9IG51bGwpLm1hcCgocCkgPT4geyByZXR1cm4gcC52YWx1ZT8/cC5pZCB9KVxyXG4gICAgbGV0IF9oZWFkZXJSb3dWYWx1ZSA9IHdvcmtzaGVldC5hZGRSb3coaGVhZGVyUm93VmFsdWUpO1xyXG5cclxuICAgIC8vIENlbGwgU3R5bGUgOiBGaWxsIGFuZCBCb3JkZXJcclxuICAgIF9oZWFkZXJSb3dWYWx1ZS5lYWNoQ2VsbCgoY2VsbCwgbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNlbGwuZmlsbCA9IHtcclxuICAgICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgICAgcGF0dGVybjogJ2xpZ2h0VXAnLFxyXG4gICAgICAgIGZnQ29sb3I6IHsgYXJnYjogJzY3NzVmNTAwJyB9LFxyXG4gICAgICAgIGJnQ29sb3I6IHsgYXJnYjogJzY3NzVmNTAwJyB9LFxyXG4gICAgICB9O1xyXG4gICAgICBjZWxsLmJvcmRlciA9IHtcclxuICAgICAgICB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGhlYWRlclJvdyA9IGhlYWRlci5maWx0ZXIoeCA9PiB4LmlkICE9IG51bGwpXHJcblxyXG4gICAgbGV0IGRhdGEgPSBCb2R5RmllbGRzICE9IG51bGwgPyBib2R5W0JvZHlGaWVsZHNdIDogYm9keVxyXG4gICAgZm9yIChsZXQgZCBvZiBkYXRhKSB7XHJcbiAgICAgIHZhciByb3cgPSBbXVxyXG4gICAgICBmb3IgKGxldCBoIG9mIGhlYWRlclJvdykge1xyXG4gICAgICAgIHZhciBkaCA9IGRbYCR7aC5pZH1gXVxyXG4gICAgICAgIGlmIChoLnJ1bGVzKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgaC5ydWxlcykge1xyXG4gICAgICAgICAgICBpZiAocnVsZS5ydWxlID09IGVudW1SdWxlc1snPT0nXSkge1xyXG4gICAgICAgICAgICAgIGlmIChkaCA9PSBydWxlLnZhbHVlUnVsZS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgICAgZGggPSBydWxlLnZhbHVlQWN0aW9uXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcm93LnB1c2goZGg/LnRvU3RyaW5nKCkpXHJcbiAgICAgIH1cclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhyb3cpO1xyXG4gICAgfVxyXG5cclxuICAgIHdvcmtzaGVldC5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbiwgaSkge1xyXG4gICAgICB2YXIgbWF4TGVuZ3RoID0gMDtcclxuICAgICAgY29sdW1uW1wiZWFjaENlbGxcIl0oeyBpbmNsdWRlRW1wdHk6IHRydWUgfSwgZnVuY3Rpb24gKGNlbGwpIHtcclxuICAgICAgICB2YXIgY29sdW1uTGVuZ3RoID0gY2VsbC52YWx1ZSA/IGNlbGwudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggOiAxMDtcclxuICAgICAgICBpZiAoY29sdW1uTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICBtYXhMZW5ndGggPSBjb2x1bW5MZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29sdW1uLndpZHRoID0gbWF4TGVuZ3RoIDwgMTAgPyAxMCA6IG1heExlbmd0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB7XHJcbiAgICAgIHJldHVybiB3b3Jrc2hlZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoZGF0YSwgbmFtZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIWdlbmVyYXRlRmlsZSkgdGhpcy5tZXNzYWdlLmNsb3NlTG9hZGluZygpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVBc0V4Y2VsRmlsZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04J1xyXG4gICAgfSk7XHJcbiAgICBmcy5zYXZlQXMoZGF0YSwgYCR7ZmlsZU5hbWV9X2V4cG9ydF8ke25ldyBEYXRlKCkuZ2V0VGltZSgpfS54bHN4YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldERhdGFCb2R5PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IEFycmF5PHBhcmFtcz4sIGJvZHk6IFQsIGZpbHRlcnNQb3N0PzogQXJyYXk8SGVhZGVyRmlsdGVyczxhbnk+Pik6IFByb21pc2U8VD4ge1xyXG4gICAgaWYgKGJvZHkpIHJldHVybiBib2R5O1xyXG5cclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgdmFyIHJlczogYW55XHJcbiAgICAgIGlmIChmaWx0ZXJzUG9zdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gYXdhaXQgdGhpcy5odHRwLnBvc3REYXRhQm9keSh1cmwsIGZpbHRlcnNQb3N0LCBwYXJhbXMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzID0gYXdhaXQgdGhpcy5odHRwLmdldERhdGFCb2R5KHVybCwgcGFyYW1zKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXNbJ2NvdW50J10pIHtcclxuICAgICAgICByZXR1cm4gcmVzWydkYXRhJ11cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcmVzXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5lbnVtIGVudW1SdWxlcyB7XHJcbiAgXCI+XCIsXHJcbiAgXCI8XCIsXHJcbiAgXCI9PVwiLFxyXG4gIFwiIT1cIlxyXG59XHJcbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLElBQWlCLEVBQ2pCLFlBQThCLEVBQzlCLE9BQXVCO1FBRnZCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUV0QyxLQUFLLENBQUMsdUJBQXVCLENBQzNCLEtBQWEsRUFDYixNQUFxQixFQUNyQixJQUFZLEVBQ1osTUFBaUIsRUFDakIsR0FBWSxFQUNaLE1BQWlCLEVBQ2pCLFdBQXVDLEVBQ3ZDLFdBQXNCLEVBQ3RCLGVBQTBCLEVBQzFCLFVBQWtCO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBRXpELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQVcsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDM0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUVoQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0Is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QUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLElBQUksRUFBRSxpRkFBaUY7U0FDeEYsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUksR0FBVyxFQUFFLE1BQXFCLEVBQUUsSUFBTyxFQUFFLFdBQXVDO1FBQy9HLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxHQUFRLENBQUE7WUFDWixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzVELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNoQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNuQjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsQ0FBQTthQUNYO1NBQ0Y7SUFFSCxDQUFDOzs4R0ExTFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQThMRCxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWixtQ0FBRyxDQUFBO0lBQ0gsbUNBQUcsQ0FBQTtJQUNILHFDQUFJLENBQUE7SUFDSixxQ0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUxJLFNBQVMsS0FBVCxTQUFTLFFBS2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IFdvcmtib29rIH0gZnJvbSAnZXhjZWxqcyc7XHJcbmltcG9ydCB7IHBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0YS10YWJsZS9wYXJhbXMnO1xyXG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9mdW5jdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlcnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpbHRlcnMvaGVhZGVyLWZpbHRlcnMnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcclxuICAgIHByaXZhdGUgZnVuY3Rpb25FdGVyOiBGdW5jdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIGFzeW5jIGdlbmVyYXRlRXhjZWxXaXRoU2hlZXRzPFQ+KFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGhlYWRlcjogQXJyYXk8cGFyYW1zPixcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGJvZGllcz86IEFycmF5PFQ+LFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgcGFyYW1zPzogcGFyYW1zW10sXHJcbiAgICBmaWx0ZXJzUG9zdD86IEFycmF5PEhlYWRlckZpbHRlcnM8YW55Pj4sXHJcbiAgICB0aXRsZUZpZWxkcz86IHN0cmluZ1tdLFxyXG4gICAgc2hlZXROYW1lRmllbGRzPzogc3RyaW5nW10sXHJcbiAgICBCb2R5RmllbGRzPzpzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcoXCJDYXJnYW5kb1wiLCBcIkdlbmVyYW5kbyBhcmNoaXZvXCIpXHJcblxyXG4gICAgYm9kaWVzID0gYXdhaXQgdGhpcy5nZXREYXRhQm9keTxBcnJheTxUPj4odXJsLCBwYXJhbXMsIGJvZGllcywgZmlsdGVyc1Bvc3QpXHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBib2RpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGJvZHkgPSBib2RpZXNbaW5kZXhdO1xyXG5cclxuICAgICAgaWYgKHRpdGxlRmllbGRzKSB7XHJcbiAgICAgICAgdGl0bGUgPSB0aXRsZUZpZWxkcy5tYXAocGFyYW0gPT4gYm9keVtwYXJhbV0pLmpvaW4oXCItXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgbmFtZVNoZWV0ID0gXCJzaGVldFwiO1xyXG5cclxuICAgICAgaWYgKHNoZWV0TmFtZUZpZWxkcykge1xyXG4gICAgICAgIG5hbWVTaGVldCA9IHNoZWV0TmFtZUZpZWxkcy5tYXAocGFyYW0gPT4gYm9keVtwYXJhbV0pLmpvaW4oXCItXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlVG9YbHN4KHRpdGxlLCBoZWFkZXIsIGAke25hbWVTaGVldCsoJy0nKyhpbmRleCsxKSl9YCwgYm9keSwgbnVsbCwgbnVsbCwgbnVsbCwgQm9keUZpZWxkcywgZmFsc2UpO1xyXG4gICAgICB3b3JrYm9vay5hZGRXb3Jrc2hlZXQod29ya3NoZWV0Lm5hbWUsIHsgdmlld3M6IFt7IHN0YXRlOiAnZnJvemVuJywgeVNwbGl0OiAxIH1dIH0pO1xyXG4gICAgICBjb25zdCBuZXdXb3Jrc2hlZXQgPSB3b3JrYm9vay5nZXRXb3Jrc2hlZXQod29ya3NoZWV0Lm5hbWUpO1xyXG4gICAgICBuZXdXb3Jrc2hlZXQubW9kZWwgPSB3b3Jrc2hlZXQubW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xyXG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoYnVmZmVyLCBuYW1lKTtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVRvWGxzeDxUPihcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBoZWFkZXI6IEFycmF5PHBhcmFtcz4sXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBib2R5PzogVCxcclxuICAgIHVybD86IHN0cmluZyxcclxuICAgIHBhcmFtcz86IEFycmF5PHBhcmFtcz4sXHJcbiAgICBmaWx0ZXJzUG9zdD86IEFycmF5PEhlYWRlckZpbHRlcnM8YW55Pj4sXHJcbiAgICBCb2R5RmllbGRzPzpzdHJpbmcsXHJcbiAgICBnZW5lcmF0ZUZpbGU6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBpZiAoIWdlbmVyYXRlRmlsZSkgdGhpcy5tZXNzYWdlLm9wZW5Mb2FkaW5nKFwiQ2FyZ2FuZG9cIiwgXCJHZW5lcmFuZG8gZWwgYXJjaGl2b1wiKVxyXG5cclxuICAgIGJvZHkgPSBhd2FpdCB0aGlzLmdldERhdGFCb2R5PFQ+KHVybCwgcGFyYW1zLCBib2R5LCBmaWx0ZXJzUG9zdClcclxuXHJcbiAgICBsZXQgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTtcclxuICAgIGxldCB3b3Jrc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQobmFtZSk7XHJcblxyXG4gICAgLy8gQWRkIG5ldyByb3dcclxuICAgIGxldCB0aXRsZVJvdyA9IHdvcmtzaGVldC5hZGRSb3coW3RpdGxlXSk7XHJcblxyXG4gICAgLy8gU2V0IGZvbnQsIHNpemUgYW5kIHN0eWxlIGluIHRpdGxlIHJvdy5cclxuICAgIHRpdGxlUm93LmZvbnQgPSB7XHJcbiAgICAgIG5hbWU6ICdDb21pYyBTYW5zIE1TJyxcclxuICAgICAgZmFtaWx5OiA0LFxyXG4gICAgICBzaXplOiAxNixcclxuICAgICAgdW5kZXJsaW5lOiAnZG91YmxlJyxcclxuICAgICAgYm9sZDogdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gQmxhbmsgUm93XHJcbiAgICAvLyB3b3Jrc2hlZXQuYWRkUm93KFtdKTtcclxuICAgIC8vIGxldCBhZGRoZWFkZXIgPSBmYWxzZVxyXG4gICAgLy8gZm9yIChsZXQgcCBvZiBoZWFkZXIuZmlsdGVyKHggPT4geC5pZCA9PT0gbnVsbCkpIHtcclxuICAgIC8vICAgd29ya3NoZWV0LmFkZFJvdyhbYm9keVtwLnZhbHVlXT8/cC52YWx1ZV0pXHJcbiAgICAvLyAgIGFkZGhlYWRlciA9IHRydWVcclxuICAgIC8vIH1cclxuXHJcbiAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTtcclxuICAgIGxldCBhZGRoZWFkZXIgPSBmYWxzZTtcclxuICAgIGZvciAobGV0IHAgb2YgaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgPT09IG51bGwpKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHAudmFsdWU7XHJcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgveyguKj8pfS9nKTtcclxuICAgICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgICBtYXRjaGVzLmZvckVhY2gobWF0Y2ggPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gbWF0Y2guc2xpY2UoMSwgLTEpO1xyXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG1hdGNoLCBib2R5W2tleV0gPz8gbWF0Y2gpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHdvcmtzaGVldC5hZGRSb3coW3ZhbHVlXSk7XHJcbiAgICAgIGFkZGhlYWRlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFkZGhlYWRlcikgd29ya3NoZWV0LmFkZFJvdyhbXSk7XHJcblxyXG4gICAgLy9BZGQgSGVhZGVyIFJvd1xyXG4gICAgbGV0IGhlYWRlclJvd1ZhbHVlID0gaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgIT0gbnVsbCkubWFwKChwKSA9PiB7IHJldHVybiBwLnZhbHVlPz9wLmlkIH0pXHJcbiAgICBsZXQgX2hlYWRlclJvd1ZhbHVlID0gd29ya3NoZWV0LmFkZFJvdyhoZWFkZXJSb3dWYWx1ZSk7XHJcblxyXG4gICAgLy8gQ2VsbCBTdHlsZSA6IEZpbGwgYW5kIEJvcmRlclxyXG4gICAgX2hlYWRlclJvd1ZhbHVlLmVhY2hDZWxsKChjZWxsLCBudW1iZXIpID0+IHtcclxuICAgICAgY2VsbC5maWxsID0ge1xyXG4gICAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgICBwYXR0ZXJuOiAnbGlnaHRVcCcsXHJcbiAgICAgICAgZmdDb2xvcjogeyBhcmdiOiAnNjc3NWY1MDAnIH0sXHJcbiAgICAgICAgYmdDb2xvcjogeyBhcmdiOiAnNjc3NWY1MDAnIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGNlbGwuYm9yZGVyID0ge1xyXG4gICAgICAgIHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgaGVhZGVyUm93ID0gaGVhZGVyLmZpbHRlcih4ID0+IHguaWQgIT0gbnVsbClcclxuXHJcbiAgICBsZXQgZGF0YSA9IEJvZHlGaWVsZHMgIT0gbnVsbCA/IGJvZHlbQm9keUZpZWxkc10gOiBib2R5XHJcbiAgICBmb3IgKGxldCBkIG9mIGRhdGEpIHtcclxuICAgICAgdmFyIHJvdyA9IFtdXHJcbiAgICAgIGZvciAobGV0IGggb2YgaGVhZGVyUm93KSB7XHJcbiAgICAgICAgdmFyIGRoID0gZFtgJHtoLmlkfWBdXHJcbiAgICAgICAgaWYgKGgucnVsZXMpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBoLnJ1bGVzKSB7XHJcbiAgICAgICAgICAgIGlmIChydWxlLnJ1bGUgPT0gZW51bVJ1bGVzWyc9PSddKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRoID09IHJ1bGUudmFsdWVSdWxlLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAgICAgICBkaCA9IHJ1bGUudmFsdWVBY3Rpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByb3cucHVzaChkaD8udG9TdHJpbmcoKSlcclxuICAgICAgfVxyXG4gICAgICB3b3Jrc2hlZXQuYWRkUm93KHJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgd29ya3NoZWV0LmNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uLCBpKSB7XHJcbiAgICAgIHZhciBtYXhMZW5ndGggPSAwO1xyXG4gICAgICBjb2x1bW5bXCJlYWNoQ2VsbFwiXSh7IGluY2x1ZGVFbXB0eTogdHJ1ZSB9LCBmdW5jdGlvbiAoY2VsbCkge1xyXG4gICAgICAgIHZhciBjb2x1bW5MZW5ndGggPSBjZWxsLnZhbHVlID8gY2VsbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA6IDEwO1xyXG4gICAgICAgIGlmIChjb2x1bW5MZW5ndGggPiBtYXhMZW5ndGgpIHtcclxuICAgICAgICAgIG1heExlbmd0aCA9IGNvbHVtbkxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb2x1bW4ud2lkdGggPSBtYXhMZW5ndGggPCAxMCA/IDEwIDogbWF4TGVuZ3RoO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCFnZW5lcmF0ZUZpbGUpIHtcclxuICAgICAgcmV0dXJuIHdvcmtzaGVldDtcclxuICAgIH1cclxuXHJcbiAgICB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCkudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShkYXRhLCBuYW1lKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghZ2VuZXJhdGVGaWxlKSB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnXHJcbiAgICB9KTtcclxuICAgIGZzLnNhdmVBcyhkYXRhLCBgJHtmaWxlTmFtZX1fZXhwb3J0XyR7bmV3IERhdGUoKS5nZXRUaW1lKCl9Lnhsc3hgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGF0YUJvZHk8VD4odXJsOiBzdHJpbmcsIHBhcmFtczogQXJyYXk8cGFyYW1zPiwgYm9keTogVCwgZmlsdGVyc1Bvc3Q/OiBBcnJheTxIZWFkZXJGaWx0ZXJzPGFueT4+KTogUHJvbWlzZTxUPiB7XHJcbiAgICBpZiAoYm9keSkgcmV0dXJuIGJvZHk7XHJcblxyXG4gICAgaWYgKHVybCkge1xyXG4gICAgICB2YXIgcmVzOiBhbnlcclxuICAgICAgcmVzID0gYXdhaXQgdGhpcy5odHRwLnBvc3REYXRhQm9keSh1cmwsIGZpbHRlcnNQb3N0LCBwYXJhbXMpXHJcbiAgICAgIGlmIChyZXNbJ2NvdW50J10pIHtcclxuICAgICAgICByZXR1cm4gcmVzWydkYXRhJ11cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcmVzXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5lbnVtIGVudW1SdWxlcyB7XHJcbiAgXCI+XCIsXHJcbiAgXCI8XCIsXHJcbiAgXCI9PVwiLFxyXG4gIFwiIT1cIlxyXG59XHJcbiJdfQ==