general-library-union 2.5.21 → 2.5.23

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.
@@ -13,9 +13,10 @@ import * as i3 from "../../../../shared/servicios/general.service";
13
13
  import * as i4 from "@ngx-translate/core";
14
14
  import * as i5 from "../../../services/ejecucionreporte.service";
15
15
  import * as i6 from "../../../../core/servicios/menu.service";
16
- import * as i7 from "primeng/table";
17
- import * as i8 from "primeng/api";
18
- import * as i9 from "@angular/forms";
16
+ import * as i7 from "../../../../core/servicios/utils.service";
17
+ import * as i8 from "primeng/table";
18
+ import * as i9 from "primeng/api";
19
+ import * as i10 from "@angular/forms";
19
20
  export class ListadoEjecucionReporteExternoComponent {
20
21
  authService;
21
22
  generalPipe;
@@ -23,19 +24,21 @@ export class ListadoEjecucionReporteExternoComponent {
23
24
  translateService;
24
25
  ejecucionReporteService;
25
26
  menuService;
27
+ utilsService;
26
28
  filtro;
27
29
  listaReporteExterno;
28
30
  reporteSeleccionado;
29
31
  filters = [];
30
32
  isPopupReporte = false;
31
33
  reporte;
32
- constructor(authService, generalPipe, generalService, translateService, ejecucionReporteService, menuService) {
34
+ constructor(authService, generalPipe, generalService, translateService, ejecucionReporteService, menuService, utilsService) {
33
35
  this.authService = authService;
34
36
  this.generalPipe = generalPipe;
35
37
  this.generalService = generalService;
36
38
  this.translateService = translateService;
37
39
  this.ejecucionReporteService = ejecucionReporteService;
38
40
  this.menuService = menuService;
41
+ this.utilsService = utilsService;
39
42
  }
40
43
  ngOnInit() {
41
44
  this.reporte = new ReporteFuenteModel();
@@ -52,6 +55,7 @@ export class ListadoEjecucionReporteExternoComponent {
52
55
  }
53
56
  cargarListaFiltros(event) {
54
57
  this.cargarListaReporteExterno(event);
58
+ this.utilsService.resizeWindowIFrame();
55
59
  }
56
60
  cargarFiltro() {
57
61
  this.filters = [
@@ -69,27 +73,30 @@ export class ListadoEjecucionReporteExternoComponent {
69
73
  this.filtro.login = this.authService.getTokenKey('usuario');
70
74
  let objetoFiltro = new GeneralModel('ReporteFuenteDTO', null, false, this.filtro);
71
75
  this.listaReporteExterno = await this.generalService.queryForList(objetoFiltro).toPromise();
76
+ this.utilsService.resizeWindowIFrame();
72
77
  }
73
78
  async verAction(event) {
74
79
  if (event.data.llave) {
75
80
  let data = await this.ejecucionReporteService.getDatosEjecucionReporte({ llave: event.data.llave }).toPromise();
76
81
  this.reporte = data.reporte;
77
82
  this.isPopupReporte = true;
83
+ this.utilsService.resizeWindowIFrame();
78
84
  }
79
85
  else {
80
86
  this.reporte = new ReporteFuenteModel();
81
87
  }
88
+ this.utilsService.resizeWindowIFrame();
82
89
  }
83
90
  regresarPopupReporte(event) {
84
91
  this.reporteSeleccionado = null;
85
92
  this.isPopupReporte = false;
86
93
  this.reporte = new ReporteFuenteModel();
87
94
  }
88
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ListadoEjecucionReporteExternoComponent, deps: [{ token: i1.AuthService }, { token: i2.GeneralPipe }, { token: i3.GeneralService }, { token: i4.TranslateService }, { token: i5.EjecucionReporteService }, { token: i6.MenuService }], target: i0.ɵɵFactoryTarget.Component });
89
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ListadoEjecucionReporteExternoComponent, isStandalone: true, selector: "app-listado-ejecucion-reporte-externo", ngImport: i0, template: "<div id=\"id_listado_ejecucion_reporte_externo\">\n\n <div class=\"flex justify-content-between align-items-center mb-3\">\n\n <!-- Filtro-->\n <app-filtro-general #filtroItem [filtros]=\"filters\" (metodoRegresar)=\"cargarListaFiltros($event)\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <div class=\"flex mt-3\">\n <div class=\"mr-3 w-full\">\n <span class=\"p-float-label\">\n <input pInputText type=\"text\" id=\"id_descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"id_responsable\">{{'descripcion' | translate}}</label>\n </span>\n </div>\n </div>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n\n </div>\n\n <p-table #tablaGeneral id=\"tabla_lista_reporte_externo\" [value]=\"listaReporteExterno\" responsiveLayout=\"scroll\"\n [rows]=\"10\" [paginator]=\"listaReporteExterno.length > 10\" [totalRecords]=\"listaReporteExterno.length\"\n scrollDirection=\"horizontal\" styleClass=\"p-datatable-striped\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n [showCurrentPageReport]=\"true\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction($event)\"\n [(selection)]=\"reporteSeleccionado\">\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th>{{'reporte' | translate}}{{'s' | translate}}</th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item>\n <tr [pSelectableRow]=\"item\">\n <td>{{item.descripcion}}</td>\n </tr>\n </ng-template>\n </p-table>\n\n</div>\n\n<app-popup-reporte [mostrar]=\"isPopupReporte\" [reporte]=\"reporte\"\n (regresar)=\"regresarPopupReporte($event)\"></app-popup-reporte>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i7.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PopupReporteComponent, selector: "app-popup-reporte", inputs: ["mostrar", "aplicacion", "reporte", "entradasPuntoProceso"], outputs: ["regresar"] }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }] });
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ListadoEjecucionReporteExternoComponent, deps: [{ token: i1.AuthService }, { token: i2.GeneralPipe }, { token: i3.GeneralService }, { token: i4.TranslateService }, { token: i5.EjecucionReporteService }, { token: i6.MenuService }, { token: i7.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ListadoEjecucionReporteExternoComponent, isStandalone: true, selector: "app-listado-ejecucion-reporte-externo", ngImport: i0, template: "<div id=\"id_listado_ejecucion_reporte_externo\">\n\n <div class=\"flex justify-content-between align-items-center mb-3\">\n\n <!-- Filtro-->\n <app-filtro-general #filtroItem [filtros]=\"filters\" (metodoRegresar)=\"cargarListaFiltros($event)\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <div class=\"flex mt-3\">\n <div class=\"mr-3 w-full\">\n <span class=\"p-float-label\">\n <input pInputText type=\"text\" id=\"id_descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"id_responsable\">{{'descripcion' | translate}}</label>\n </span>\n </div>\n </div>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n\n </div>\n\n <p-table #tablaGeneral id=\"tabla_lista_reporte_externo\" [value]=\"listaReporteExterno\" responsiveLayout=\"scroll\"\n [rows]=\"10\" [paginator]=\"listaReporteExterno.length > 10\" [totalRecords]=\"listaReporteExterno.length\"\n scrollDirection=\"horizontal\" styleClass=\"p-datatable-striped\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n [showCurrentPageReport]=\"true\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction($event)\"\n [(selection)]=\"reporteSeleccionado\">\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th>{{'reporte' | translate}}{{'s' | translate}}</th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item>\n <tr [pSelectableRow]=\"item\">\n <td>{{item.descripcion}}</td>\n </tr>\n </ng-template>\n </p-table>\n\n</div>\n\n<app-popup-reporte [mostrar]=\"isPopupReporte\" [reporte]=\"reporte\"\n (regresar)=\"regresarPopupReporte($event)\"></app-popup-reporte>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i8.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PopupReporteComponent, selector: "app-popup-reporte", inputs: ["mostrar", "aplicacion", "reporte", "entradasPuntoProceso"], outputs: ["regresar"] }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }] });
90
97
  }
91
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ListadoEjecucionReporteExternoComponent, decorators: [{
92
99
  type: Component,
93
100
  args: [{ selector: 'app-listado-ejecucion-reporte-externo', imports: [TranslateModule, TableModule, FormsModule, ReactiveFormsModule, PopupReporteComponent, FiltroGeneralComponent], standalone: true, template: "<div id=\"id_listado_ejecucion_reporte_externo\">\n\n <div class=\"flex justify-content-between align-items-center mb-3\">\n\n <!-- Filtro-->\n <app-filtro-general #filtroItem [filtros]=\"filters\" (metodoRegresar)=\"cargarListaFiltros($event)\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <div class=\"flex mt-3\">\n <div class=\"mr-3 w-full\">\n <span class=\"p-float-label\">\n <input pInputText type=\"text\" id=\"id_descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"id_responsable\">{{'descripcion' | translate}}</label>\n </span>\n </div>\n </div>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n\n </div>\n\n <p-table #tablaGeneral id=\"tabla_lista_reporte_externo\" [value]=\"listaReporteExterno\" responsiveLayout=\"scroll\"\n [rows]=\"10\" [paginator]=\"listaReporteExterno.length > 10\" [totalRecords]=\"listaReporteExterno.length\"\n scrollDirection=\"horizontal\" styleClass=\"p-datatable-striped\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n [showCurrentPageReport]=\"true\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction($event)\"\n [(selection)]=\"reporteSeleccionado\">\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th>{{'reporte' | translate}}{{'s' | translate}}</th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item>\n <tr [pSelectableRow]=\"item\">\n <td>{{item.descripcion}}</td>\n </tr>\n </ng-template>\n </p-table>\n\n</div>\n\n<app-popup-reporte [mostrar]=\"isPopupReporte\" [reporte]=\"reporte\"\n (regresar)=\"regresarPopupReporte($event)\"></app-popup-reporte>" }]
94
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.GeneralPipe }, { type: i3.GeneralService }, { type: i4.TranslateService }, { type: i5.EjecucionReporteService }, { type: i6.MenuService }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGFkby1lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2VqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8vbGlzdGFkby1lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby9saXN0YWRvLWVqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBTXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7Ozs7Ozs7QUFTOUcsTUFBTSxPQUFPLHVDQUF1QztJQVM5QjtJQUFrQztJQUFrQztJQUF3QztJQUN0SDtJQUEwRDtJQVJwRSxNQUFNLENBQXFCO0lBQzNCLG1CQUFtQixDQUF1QjtJ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LEVBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFFSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7dUdBdkVVLHVDQUF1QzsyRkFBdkMsdUNBQXVDLGlHQ3JCcEQsa21FQThDa0UseURENUJ0RCxlQUFlLDJGQUFFLFdBQVcsb3NFQUFFLFdBQVcsa2pCQUFDLG1CQUFtQixnVkFBRSxxQkFBcUIsMkpBQUUsc0JBQXNCOzsyRkFHM0csdUNBQXVDO2tCQVBuRCxTQUFTOytCQUNFLHVDQUF1QyxXQUd4QyxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDLGNBQzNHLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlICB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBFamVjdWNpb25SZXBvcnRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VqZWN1Y2lvbnJlcG9ydGUuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL21lbnUuc2VydmljZSdcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVGdWVudGVNb2RlbCc7IFxuaW1wb3J0IHsgR2VuZXJhbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBQb3B1cFJlcG9ydGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdHJvR2VuZXJhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvZmlsdHJvLWdlbmVyYWwvZmlsdHJvLWdlbmVyYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJubycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0YWRvLWVqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0YWRvLWVqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8uY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgVGFibGVNb2R1bGUsIEZvcm1zTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGUsIFBvcHVwUmVwb3J0ZUNvbXBvbmVudCwgRmlsdHJvR2VuZXJhbENvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpc3RhZG9FamVjdWNpb25SZXBvcnRlRXh0ZXJub0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsdHJvOiBSZXBvcnRlRnVlbnRlTW9kZWw7XG4gIGxpc3RhUmVwb3J0ZUV4dGVybm86IFJlcG9ydGVGdWVudGVNb2RlbFtdO1xuICByZXBvcnRlU2VsZWNjaW9uYWRvOiBSZXBvcnRlRnVlbnRlTW9kZWw7XG4gIGZpbHRlcnMgPSBbXTtcbiAgaXNQb3B1cFJlcG9ydGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVwb3J0ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSwgcHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlOiBFamVjdWNpb25SZXBvcnRlU2VydmljZSwgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMucmVwb3J0ZSA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWwoKTtcbiAgICB0aGlzLmZpbHRybyA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWwoKTtcbiAgICB0aGlzLnJlcG9ydGVTZWxlY2Npb25hZG8gPSBudWxsO1xuICAgIHRoaXMubGlzdGFSZXBvcnRlRXh0ZXJubyA9IFtdO1xuICAgIHRoaXMuY2FyZ2FyTWlnYWRlUGFuKCk7XG4gICAgdGhpcy5jYXJnYXJGaWx0cm8oKTtcbiAgICBsZXQgZXZlbnQgPSB7fVxuICAgIHRoaXMuY2FyZ2FyTGlzdGFSZXBvcnRlRXh0ZXJubyhldmVudCk7XG4gIH1cblxuICBjYXJnYXJNaWdhZGVQYW4oKSB7XG4gICAgdGhpcy5tZW51U2VydmljZS5zZXRCcmVhZGNydW1iKFt7IGxhYmVsOiAnTGlzdGFkbyBFamVjdWNpw7NuIFJlcG9ydGUgRXh0ZXJubycgfV0pO1xuICB9XG5cbiAgY2FyZ2FyTGlzdGFGaWx0cm9zKGV2ZW50KSB7XG4gICAgdGhpcy5jYXJnYXJMaXN0YVJlcG9ydGVFeHRlcm5vKGV2ZW50KTtcbiAgfVxuXG4gIGNhcmdhckZpbHRybygpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAnZGVzY3JpcGNpb24nLFxuICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkZXNjcmlwY2lvbicpLFxuICAgICAgICBtYXRjaE1vZGU6ICdjb250YWlucycsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBhc3luYyBjYXJnYXJMaXN0YVJlcG9ydGVFeHRlcm5vKGV2ZW50KSB7XG5cbiAgICB0aGlzLmZpbHRyby5kZXNjcmlwY2lvbiA9IGV2ZW50WydkZXNjcmlwY2lvbiddID8gJyUnICsgZXZlbnRbJ2Rlc2NyaXBjaW9uJ11bJ3ZhbHVlJ10gKyAnJScgOiBudWxsO1xuXG4gICAgdGhpcy5maWx0cm8ucmVwb3J0ZUV4dGVybm8gPSB0aGlzLmdlbmVyYWxQaXBlLlNJO1xuICAgIHRoaXMuZmlsdHJvLnJvbCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ2FsaWFzUm9sJyk7XG4gICAgdGhpcy5maWx0cm8ubG9naW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyk7XG5cbiAgICBsZXQgb2JqZXRvRmlsdHJvOiBHZW5lcmFsTW9kZWwgPSBuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlRnVlbnRlRFRPJywgbnVsbCwgZmFsc2UsIHRoaXMuZmlsdHJvKTtcblxuICAgIHRoaXMubGlzdGFSZXBvcnRlRXh0ZXJubyA9IGF3YWl0IHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG9iamV0b0ZpbHRybykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyB2ZXJBY3Rpb24oZXZlbnQpIHtcbiAgICBcbiAgICBpZiAoZXZlbnQuZGF0YS5sbGF2ZSl7XG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZ2V0RGF0b3NFamVjdWNpb25SZXBvcnRlKHtsbGF2ZTogZXZlbnQuZGF0YS5sbGF2ZX0pLnRvUHJvbWlzZSgpO1xuICAgICAgdGhpcy5yZXBvcnRlID0gZGF0YS5yZXBvcnRlO1xuICAgICAgdGhpcy5pc1BvcHVwUmVwb3J0ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVwb3J0ZSA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWwoKTtcbiAgICB9XG5cbiAgfVxuXG4gIHJlZ3Jlc2FyUG9wdXBSZXBvcnRlKGV2ZW50KXtcbiAgICB0aGlzLnJlcG9ydGVTZWxlY2Npb25hZG8gPSBudWxsO1xuICAgIHRoaXMuaXNQb3B1cFJlcG9ydGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlcG9ydGUgPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsKCk7XG4gIH1cblxufVxuIiwiPGRpdiBpZD1cImlkX2xpc3RhZG9fZWplY3VjaW9uX3JlcG9ydGVfZXh0ZXJub1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cblxuICAgICAgICA8IS0tIEZpbHRyby0tPlxuICAgICAgICA8YXBwLWZpbHRyby1nZW5lcmFsICNmaWx0cm9JdGVtIFtmaWx0cm9zXT1cImZpbHRlcnNcIiAobWV0b2RvUmVncmVzYXIpPVwiY2FyZ2FyTGlzdGFGaWx0cm9zKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZm9ybT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItMyB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBpZD1cImlkX2Rlc2NyaXBjaW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcGNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlkX3Jlc3BvbnNhYmxlXCI+e3snZGVzY3JpcGNpb24nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXBwLWZpbHRyby1nZW5lcmFsPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8cC10YWJsZSAjdGFibGFHZW5lcmFsIGlkPVwidGFibGFfbGlzdGFfcmVwb3J0ZV9leHRlcm5vXCIgW3ZhbHVlXT1cImxpc3RhUmVwb3J0ZUV4dGVybm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgW3Jvd3NdPVwiMTBcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVwb3J0ZUV4dGVybm8ubGVuZ3RoID4gMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpc3RhUmVwb3J0ZUV4dGVybm8ubGVuZ3RoXCJcbiAgICAgICAgc2Nyb2xsRGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIGRhdGFLZXk9XCJsbGF2ZVRhYmxhXCIgKG9uUm93U2VsZWN0KT1cInZlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInJlcG9ydGVTZWxlY2Npb25hZG9cIj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoPnt7J3JlcG9ydGUnIHwgdHJhbnNsYXRlfX17eydzJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbT5cbiAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uZGVzY3JpcGNpb259fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10YWJsZT5cblxuPC9kaXY+XG5cbjxhcHAtcG9wdXAtcmVwb3J0ZSBbbW9zdHJhcl09XCJpc1BvcHVwUmVwb3J0ZVwiIFtyZXBvcnRlXT1cInJlcG9ydGVcIlxuICAgIChyZWdyZXNhcik9XCJyZWdyZXNhclBvcHVwUmVwb3J0ZSgkZXZlbnQpXCI+PC9hcHAtcG9wdXAtcmVwb3J0ZT4iXX0=
101
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.GeneralPipe }, { type: i3.GeneralService }, { type: i4.TranslateService }, { type: i5.EjecucionReporteService }, { type: i6.MenuService }, { type: i7.UtilsService }] });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGFkby1lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2VqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8vbGlzdGFkby1lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby9saXN0YWRvLWVqZWN1Y2lvbi1yZXBvcnRlLWV4dGVybm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBTXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVTlHLE1BQU0sT0FBTyx1Q0FBdUM7SUFTOUI7SUFBa0M7SUFBa0M7SUFBd0M7SUFDdEg7SUFBMEQ7SUFBa0M7SUFSdEcsTUFBTSxDQUFxQjtJQUMzQixtQkFBbUIsQ0FBdUI7SUFDMUMsbUJBQW1CLENBQXFCO0lBQ3hDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLE9BQU8sQ0FBcUI7SUFFNUIsWUFBb0IsV0FBd0IsRUFBVSxXQUF3QixFQUFVLGNBQThCLEVBQVUsZ0JBQWtDLEVBQ3hKLHVCQUFnRCxFQUFVLFdBQXdCLEVBQVUsWUFBMEI7UUFENUcsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEosNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBSSxDQUFDO0lBRXJJLFFBQVE7UUFFTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZCxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2I7Z0JBQ0UsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQkFDcEQsU0FBUyxFQUFFLFVBQVU7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVsRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxJQUFJLFlBQVksR0FBaUIsSUFBSSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUs7UUFFbkIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM5RyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUV6QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7dUdBM0VVLHVDQUF1QzsyRkFBdkMsdUNBQXVDLGlHQ3RCcEQsa21FQThDa0UseUREM0J0RCxlQUFlLDJGQUFFLFdBQVcsb3NFQUFFLFdBQVcscWpCQUFDLG1CQUFtQixrVkFBRSxxQkFBcUIsMkpBQUUsc0JBQXNCOzsyRkFHM0csdUNBQXVDO2tCQVBuRCxTQUFTOytCQUNFLHVDQUF1QyxXQUd4QyxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDLGNBQzNHLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlICB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBFamVjdWNpb25SZXBvcnRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VqZWN1Y2lvbnJlcG9ydGUuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL21lbnUuc2VydmljZSdcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVGdWVudGVNb2RlbCc7IFxuaW1wb3J0IHsgR2VuZXJhbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBQb3B1cFJlcG9ydGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdHJvR2VuZXJhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvZmlsdHJvLWdlbmVyYWwvZmlsdHJvLWdlbmVyYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGlzdGFkby1lamVjdWNpb24tcmVwb3J0ZS1leHRlcm5vJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3RhZG8tZWplY3VjaW9uLXJlcG9ydGUtZXh0ZXJuby5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBUYWJsZU1vZHVsZSwgRm9ybXNNb2R1bGUsUmVhY3RpdmVGb3Jtc01vZHVsZSwgUG9wdXBSZXBvcnRlQ29tcG9uZW50LCBGaWx0cm9HZW5lcmFsQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdGFkb0VqZWN1Y2lvblJlcG9ydGVFeHRlcm5vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBmaWx0cm86IFJlcG9ydGVGdWVudGVNb2RlbDtcbiAgbGlzdGFSZXBvcnRlRXh0ZXJubzogUmVwb3J0ZUZ1ZW50ZU1vZGVsW107XG4gIHJlcG9ydGVTZWxlY2Npb25hZG86IFJlcG9ydGVGdWVudGVNb2RlbDtcbiAgZmlsdGVycyA9IFtdO1xuICBpc1BvcHVwUmVwb3J0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICByZXBvcnRlOiBSZXBvcnRlRnVlbnRlTW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgZ2VuZXJhbFBpcGU6IEdlbmVyYWxQaXBlLCBwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2U6IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLCBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSwgcHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLnJlcG9ydGUgPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsKCk7XG4gICAgdGhpcy5maWx0cm8gPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsKCk7XG4gICAgdGhpcy5yZXBvcnRlU2VsZWNjaW9uYWRvID0gbnVsbDtcbiAgICB0aGlzLmxpc3RhUmVwb3J0ZUV4dGVybm8gPSBbXTtcbiAgICB0aGlzLmNhcmdhck1pZ2FkZVBhbigpO1xuICAgIHRoaXMuY2FyZ2FyRmlsdHJvKCk7XG4gICAgbGV0IGV2ZW50ID0ge31cbiAgICB0aGlzLmNhcmdhckxpc3RhUmVwb3J0ZUV4dGVybm8oZXZlbnQpO1xuICB9XG5cbiAgY2FyZ2FyTWlnYWRlUGFuKCkge1xuICAgIHRoaXMubWVudVNlcnZpY2Uuc2V0QnJlYWRjcnVtYihbeyBsYWJlbDogJ0xpc3RhZG8gRWplY3VjacOzbiBSZXBvcnRlIEV4dGVybm8nIH1dKTtcbiAgfVxuXG4gIGNhcmdhckxpc3RhRmlsdHJvcyhldmVudCkge1xuICAgIHRoaXMuY2FyZ2FyTGlzdGFSZXBvcnRlRXh0ZXJubyhldmVudCk7XG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gIH1cblxuICBjYXJnYXJGaWx0cm8oKSB7XG4gICAgdGhpcy5maWx0ZXJzID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZDogJ2Rlc2NyaXBjaW9uJyxcbiAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZGVzY3JpcGNpb24nKSxcbiAgICAgICAgbWF0Y2hNb2RlOiAnY29udGFpbnMnLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgYXN5bmMgY2FyZ2FyTGlzdGFSZXBvcnRlRXh0ZXJubyhldmVudCkge1xuXG4gICAgdGhpcy5maWx0cm8uZGVzY3JpcGNpb24gPSBldmVudFsnZGVzY3JpcGNpb24nXSA/ICclJyArIGV2ZW50WydkZXNjcmlwY2lvbiddWyd2YWx1ZSddICsgJyUnIDogbnVsbDtcblxuICAgIHRoaXMuZmlsdHJvLnJlcG9ydGVFeHRlcm5vID0gdGhpcy5nZW5lcmFsUGlwZS5TSTtcbiAgICB0aGlzLmZpbHRyby5yb2wgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhbGlhc1JvbCcpO1xuICAgIHRoaXMuZmlsdHJvLmxvZ2luID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpO1xuXG4gICAgbGV0IG9iamV0b0ZpbHRybzogR2VuZXJhbE1vZGVsID0gbmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZUZ1ZW50ZURUTycsIG51bGwsIGZhbHNlLCB0aGlzLmZpbHRybyk7XG5cbiAgICB0aGlzLmxpc3RhUmVwb3J0ZUV4dGVybm8gPSBhd2FpdCB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChvYmpldG9GaWx0cm8pLnRvUHJvbWlzZSgpO1xuICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICB9XG5cbiAgYXN5bmMgdmVyQWN0aW9uKGV2ZW50KSB7XG4gICAgXG4gICAgaWYgKGV2ZW50LmRhdGEubGxhdmUpe1xuICAgICAgbGV0IGRhdGEgPSBhd2FpdCB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdldERhdG9zRWplY3VjaW9uUmVwb3J0ZSh7bGxhdmU6IGV2ZW50LmRhdGEubGxhdmV9KS50b1Byb21pc2UoKTtcbiAgICAgIHRoaXMucmVwb3J0ZSA9IGRhdGEucmVwb3J0ZTtcbiAgICAgIHRoaXMuaXNQb3B1cFJlcG9ydGUgPSB0cnVlO1xuICAgICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVwb3J0ZSA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWwoKTtcbiAgICB9XG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG5cbiAgfVxuXG4gIHJlZ3Jlc2FyUG9wdXBSZXBvcnRlKGV2ZW50KXtcbiAgICB0aGlzLnJlcG9ydGVTZWxlY2Npb25hZG8gPSBudWxsO1xuICAgIHRoaXMuaXNQb3B1cFJlcG9ydGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlcG9ydGUgPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsKCk7XG4gIH1cblxufVxuIiwiPGRpdiBpZD1cImlkX2xpc3RhZG9fZWplY3VjaW9uX3JlcG9ydGVfZXh0ZXJub1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cblxuICAgICAgICA8IS0tIEZpbHRyby0tPlxuICAgICAgICA8YXBwLWZpbHRyby1nZW5lcmFsICNmaWx0cm9JdGVtIFtmaWx0cm9zXT1cImZpbHRlcnNcIiAobWV0b2RvUmVncmVzYXIpPVwiY2FyZ2FyTGlzdGFGaWx0cm9zKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZm9ybT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItMyB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBpZD1cImlkX2Rlc2NyaXBjaW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcGNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlkX3Jlc3BvbnNhYmxlXCI+e3snZGVzY3JpcGNpb24nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXBwLWZpbHRyby1nZW5lcmFsPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8cC10YWJsZSAjdGFibGFHZW5lcmFsIGlkPVwidGFibGFfbGlzdGFfcmVwb3J0ZV9leHRlcm5vXCIgW3ZhbHVlXT1cImxpc3RhUmVwb3J0ZUV4dGVybm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgW3Jvd3NdPVwiMTBcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVwb3J0ZUV4dGVybm8ubGVuZ3RoID4gMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpc3RhUmVwb3J0ZUV4dGVybm8ubGVuZ3RoXCJcbiAgICAgICAgc2Nyb2xsRGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIGRhdGFLZXk9XCJsbGF2ZVRhYmxhXCIgKG9uUm93U2VsZWN0KT1cInZlckFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInJlcG9ydGVTZWxlY2Npb25hZG9cIj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoPnt7J3JlcG9ydGUnIHwgdHJhbnNsYXRlfX17eydzJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtaXRlbT5cbiAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uZGVzY3JpcGNpb259fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10YWJsZT5cblxuPC9kaXY+XG5cbjxhcHAtcG9wdXAtcmVwb3J0ZSBbbW9zdHJhcl09XCJpc1BvcHVwUmVwb3J0ZVwiIFtyZXBvcnRlXT1cInJlcG9ydGVcIlxuICAgIChyZWdyZXNhcik9XCJyZWdyZXNhclBvcHVwUmVwb3J0ZSgkZXZlbnQpXCI+PC9hcHAtcG9wdXAtcmVwb3J0ZT4iXX0=
@@ -132,7 +132,9 @@ export class PopupReporteComponent {
132
132
  await this.validarExisteJasper();
133
133
  await this.cargarGeneraciones();
134
134
  this.cargarOperaciones();
135
+ this.utilsService.resizeWindowIFrame();
135
136
  }
137
+ this.utilsService.resizeWindowIFrame();
136
138
  }
137
139
  cargarMenu() {
138
140
  this.items = [
@@ -244,6 +246,7 @@ export class PopupReporteComponent {
244
246
  parametro.unionDTO.valor = lista[0];
245
247
  }
246
248
  }
249
+ this.utilsService.resizeWindowIFrame();
247
250
  }
248
251
  cambioSoporteBase(event) {
249
252
  if (this.soporteBase == null) {
@@ -257,6 +260,7 @@ export class PopupReporteComponent {
257
260
  this.soporteBase = archivoBase.llaveTabla;
258
261
  this.reporte.archivoIndividual = archivoBase.archivoIndividual;
259
262
  this.cargarOperaciones();
263
+ this.utilsService.resizeWindowIFrame();
260
264
  });
261
265
  }
262
266
  cargarCorreo() {
@@ -276,6 +280,7 @@ export class PopupReporteComponent {
276
280
  element.unionDTO.valor = new Date(element.unionDTO.valor);
277
281
  }
278
282
  });
283
+ this.utilsService.resizeWindowIFrame();
279
284
  }
280
285
  else {
281
286
  this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
@@ -288,6 +293,7 @@ export class PopupReporteComponent {
288
293
  element.unionDTO.valor = new Date(element.unionDTO.valor);
289
294
  }
290
295
  });
296
+ this.utilsService.resizeWindowIFrame();
291
297
  });
292
298
  }
293
299
  }
@@ -506,4 +512,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
506
512
  }], regresar: [{
507
513
  type: Output
508
514
  }] } });
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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QUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLGNBQ25RLElBQUksYUFDTCxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQzs0Z0JBTWxDLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVyxRQUFRO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0dlbmVyYWxNb2RlbCc7XG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9lbmNyaXB0YWRvLWJhc2ljby5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcmVwb3J0ZS1mdWVudGUucGlwZSc7XG5pbXBvcnQgeyBFamVjdWNpb25SZXBvcnRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VqZWN1Y2lvbnJlcG9ydGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRnVlbnRlTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZUVudHJhZGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVFbnRyYWRhTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZVNvcG9ydGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVTb3BvcnRlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbG9zL3RhYmxlLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYWNjb3JkaW9uJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xuaW1wb3J0IHsgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQgfSBmcm9tICcuLi9wb3B1cC1zZW50ZW5jaWEvcG9wdXAtc2VudGVuY2lhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZsb2F0TGFiZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL2Zsb2F0bGFiZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcG9wdXAtcmVwb3J0ZScsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgQ29uZmlybVBvcHVwTW9kdWxlLCBBY2NvcmRpb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBGaWVsZHNldE1vZHVsZSwgSW5wdXROdW1iZXJNb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIENhbGVuZGFyTW9kdWxlLCBSYWRpb0J1dHRvbk1vZHVsZSwgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBGbG9hdExhYmVsTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQb3B1cFJlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtb3N0cmFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcGxpY2FjaW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXBvcnRlOiBSZXBvcnRlRnVlbnRlTW9kZWwgPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsO1xuICBASW5wdXQoKSBwdWJsaWMgZW50cmFkYXNQdW50b1Byb2Nlc286IGFueVtdPVtdO1xuICBAT3V0cHV0KCkgcHVibGljIHJlZ3Jlc2FyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcGFuZWw6IHN0cmluZyA9ICdlbnRyYWRhJztcbiAgcHVibGljIG9wZXJhY2lvbjogc3RyaW5nO1xuICBwdWJsaWMgbGlzdGFFbnRyYWRhOiBSZXBvcnRlRW50cmFkYU1vZGVsW10gPSBbXTtcbiAgcHVibGljIGxpc3RhU2VndW5kb1BsYW5vOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFyYW1ldHJvczogYW55W10gPSBbXTtcbiAgcHVibGljIGVsZW1lbnRvQm9ycmFyOiBhbnkgPSB7fTtcbiAgcHVibGljIGdlbmVyYWNpb25lczogYW55W10gPSBbXTtcbiAgcHVibGljIG9wZXJhY2lvbmVzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbW9zdHJhck90cmFTZWxlY2Npb246IGJvb2xlYW47XG5cdHB1YmxpYyBtb3N0cmFyQXJjaGl2b3NTb3BvcnRlOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yOiBib29sZWFuO1xuICBwdWJsaWMgY29ycmVvOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXBvUmVwb3J0ZTogc3RyaW5nO1xuICBwdWJsaWMgc29wb3J0ZUJhc2U6IHN0cmluZztcbiAgcHVibGljIHRpcG9BcmNoaXZvOiBzdHJpbmc7XG4gIHB1YmxpYyBibG9xdWVhckNvcnJlbzogYm9vbGVhbjtcbiAgcHVibGljIG1hcGFUaXBvQXJjaGl2b3M7XG4gIHB1YmxpYyBsaXN0YWRvQXJjaGl2b1NvcG9ydGU6IFJlcG9ydGVTb3BvcnRlTW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgbW9zdHJhclBvcHVwU2VudGVuY2lhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcbiAgcHVibGljIHZpc3RhVmlzdWFsaXphcjogc3RyaW5nO1xuICBwYWdpbmF0b3I9e3Jvd3M6Mix0b3RhbFJlY29yZHM6MH1cbiAgcHVibGljIG1vc3RyYXJQYXJhbWV0cm9zOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhclF1ZURlc2VhSGFjZXI6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbHVtbmFzOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHB1YmxpYyBsaXN0YVJlZ2lzdHJvOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBleGlzdGVKYXNwZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlamVjdWNpb25SZXBvcnRlU2VydmljZTogRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25TZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2b1NlcnZpY2U6IENhcmdhckFyY2hpdm9zU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbnRyb2xGdW5jaW9uYWxpZGFkOiBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb0Jhc2ljbzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVwb3J0ZUZ1ZW50ZVBpcGU6IFJlcG9ydGVGdWVudGVQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJnYXJBcmNoaXZvOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb3JBcmNoaXZvOiBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSwpIHsgfSAgICAgICAgIFxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBhVGlwb0FyY2hpdm9zID0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5NQVBBX1RJUE9fQVJDSElWT1M7ICBcbiAgICB0aGlzLmFwbGljYWNpb24gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJylcbiAgfVxuXG4gIGFzeW5jIG1vc3RyYXJQb3B1cCgpe1xuICAgIHRoaXMucGFuZWwgPSAnZW50cmFkYSc7XG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IGZhbHNlO1xuICAgIHRoaXMudGlwb1JlcG9ydGUgPSBudWxsO1xuICAgIHRoaXMubW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yID0gdGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6dmVyc2VudGVuY2lhZXJyb3InKTtcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IHt9XG4gICAgdGhpcy5saXN0YVNlZ3VuZG9QbGFubyA9IFtdXG4gICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gW107XG4gICAgdGhpcy5jb2x1bW5hcyA9IFtdO1xuICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XG4gICAgaWYgKHRoaXMucmVwb3J0ZS5sbGF2ZSkge1xuICAgICAgdmFyIHJlc3VsdGFkbyA9IGF3YWl0IHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZ2V0RGF0b3NFamVjdWNpb25SZXBvcnRlKHtsbGF2ZTogdGhpcy5yZXBvcnRlLmxsYXZlfSkudG9Qcm9taXNlKCk7XG4gICAgICB0aGlzLnJlcG9ydGUgPSByZXN1bHRhZG8ucmVwb3J0ZTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJlcG9ydGVbJ2FsaWFzJ11cbiAgICAgIHRoaXMuY2FyZ2FyTGlzdGFFbnRyYWRhKCk7XG4gICAgICB0aGlzLnRyYWVyU2VndW5kb1BsYW5vKCk7XG4gICAgICB0aGlzLmNhcmdhckNvcnJlbygpO1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGFyRXhpc3RlSmFzcGVyKCk7XG4gICAgICBhd2FpdCB0aGlzLmNhcmdhckdlbmVyYWNpb25lcygpO1xuICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgXG4gICAgfVxuICB9XG5cbiAgY2FyZ2FyTWVudSgpe1xuICAgIHRoaXMuaXRlbXMgPSBbXG4gICAgICBcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdlamVjdWNpb24nKSxcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1wbHVzLXNpZ24nLFxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9ICdlbnRyYWRhJztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2VndW5kb3BsYW5vJyksXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZS1taW51cycsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ3NlZ3VuZG9wbGFubyc7XG4gICAgICAgIH0sXG4gICAgICAgIHZpc2libGU6IHRoaXMubGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMCxcbiAgICAgIH1cbiAgICBdXG4gIH1cblxuICBhc3luYyBjYXJnYXJHZW5lcmFjaW9uZXMoKXtcbiAgICB0aGlzLmdlbmVyYWNpb25lcyA9IFtdO1xuICAgIGlmICggdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGl0dWxvUGFyYW1ldHJvKSAmJiB0aGlzLmV4aXN0ZUphc3Blcil7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0pBU1BFUkRJTkFNSUNPLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5qYXNwZXJGaWpvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5tb2RvRmlqbykpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJGSUpPfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9Ub2RvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWwpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fRVhDRUwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0VYQ0VMfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9JbmRpdmlkdWFsKSB8fCB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1BMQU5USUxMQSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fUExBTlRJTExBfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnNlcGFyYWRvcikpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9BUkNISVZPUExBTk8sIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0FSQ0hJVk9QTEFOT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ub21icmVUYWJsYSkpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fVEFCTEF9KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGFnRW5jYWJlemFkbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuZXN0cnVjdHVyYVJlZ2lzdHJvKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1hNTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fWE1MfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9FeGNlbENvbHVtbmFyaW8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmhvamFFeGNlbENvbHVtbmFyaW8pKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQ09MVU1OQVJJTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fQ09MVU1OQVJJT30pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdmFsaWRhckV4aXN0ZUphc3Blcigpe1xuICAgIHRyeSB7XG4gICAgICB2YXIgZGF0YSA9IGF3YWl0IHRoaXMuY2FyZ2FyQXJjaGl2by5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb3JBcmNoaXZvLmVuY3JpcHRhcigncmVwb3J0ZXMvJyArIHRoaXMucmVwb3J0ZS5sbGF2ZSArICcuanJ4bWwnKSwgJ3J1dGFfcGxhbnRpbGxhcycsIHRoaXMuYXBsaWNhY2lvbikudG9Qcm9taXNlKCk7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IHRydWU7XG4gICAgICB9ICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FyZ2FyT3BlcmFjaW9uZXMoKXtcbiAgICB0aGlzLmJsb3F1ZWFyQ29ycmVvID0gdHJ1ZTtcbiAgICB0aGlzLm9wZXJhY2lvbmVzID0gW107XG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUpe1xuICAgICAgaWYgKHRoaXMudGlwb1JlcG9ydGUgIT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1RBQkxBKSB7XG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0RFU0NBUkdBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9ERVNDQVJHQVJ9KTtcbiAgICAgIFxuICAgICAgICBpZiAodGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6ZW52aW9jb3JyZW8nKSl7XG4gICAgICAgICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0VOVklBUkNPUlJFTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklBUkNPUlJFT30pO1xuICAgICAgICBpZiAodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5NT01FTlRPU19TRUdVTkRPX1BMQU5PID09IHRoaXMucmVwb3J0ZS5tb21lbnRvKSB7XG4gICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fU0VHVU5ET1BMQU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9TRUdVTkRPUExBTk99KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0pBU1BFUkZJSk8gJiYgdGhpcy5yZXBvcnRlLm1vZG9GaWpvID09ICdQJylcbiAgICAgICAgICB8fCB0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLmRlc2NhcmdhckZ1ZW50ZSAhPSAnUycpe1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwpe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fRU5WSU9NQVNJVk8sXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklPTUFTSVZPfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSl7XG4gICAgICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9QVUJMSUNBUixcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fUFVCTElDQVJ9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucmVwb3J0ZS5hcmNoaXZvSHRtbCAmJiB0aGlzLnJlcG9ydGUuY2FtcG9FbWFpbCAmJiB0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSApe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fQ09SUkVPUFVCTElDQVIsXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vcHRlIHByb2Nlc28gZXh0ZXJub1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbWJpb1ZhbG9yTGlzdGEoZXZlbnQsIHBhcmFtZXRybyl7XG4gICAgaWYgKGV2ZW50LnZhbHVlKXtcbiAgICAgIGxldCBsaXN0YSA9IGV2ZW50LnZhbHVlLnNwbGl0KCc6JylcbiAgICAgIGlmIChwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nKXtcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gcGFyc2VJbnQobGlzdGFbMF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbWV0cm8udW5pb25EVE8udmFsb3IgPSBsaXN0YVswXVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgY2FtYmlvU29wb3J0ZUJhc2UoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3BvcnRlQmFzZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yT2JqZWN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtsbGF2ZVRhYmxhOiB0aGlzLnNvcG9ydGVCYXNlfSkpLnN1YnNjcmliZShhcmNoaXZvQmFzZSA9PiB7XG4gICAgICBpZiAoYXJjaGl2b0Jhc2UgPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNvcG9ydGVCYXNlID0gYXJjaGl2b0Jhc2UubGxhdmVUYWJsYTtcblx0XHRcdHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCA9IGFyY2hpdm9CYXNlLmFyY2hpdm9JbmRpdmlkdWFsO1xuXHRcdFx0dGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgY2FyZ2FyQ29ycmVvKCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jb3JyZW8gPSBkYXRhLmVtYWlsO1xuICAgIH0pXG4gIH1cblxuICBjYXJnYXJMaXN0YUVudHJhZGEoKXtcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZW50cmFkYXNQdW50b1Byb2Nlc28ubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLnBhcmFtZXRyb3MgPSB0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvOyAgXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XG4gICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xuICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLm9idGVuZXJMaXN0YUVudHJhZGFFamVjdWNpb24odGhpcy5yZXBvcnRlKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1ldHJvcyA9IGRhdGE7XG4gICAgICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUycpe1xuICAgICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgZWxlbWVudC51bmlvbkRUTy52YWxvciAhPSBudWxsKXtcbiAgICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdHJhZXJTZWd1bmRvUGxhbm8oKXtcbiAgICBsZXQgdXN1YXJpbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ3VzdWFyaW8nKVxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0VqZWN1Y2lvblJlcG9ydGVEVE8nLCBudWxsLCBmYWxzZSwge1xuICAgICAgYWRpY2lvbmFkbzogdXN1YXJpbywgXG4gICAgICByZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGUubGxhdmV9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmxpc3RhU2VndW5kb1BsYW5vID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YVNlZ3VuZG9QbGFuby5sZW5ndGg7XG4gICAgICB9KVxuICB9XG4gIFxuICB2ZXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSBldmVudC5kYXRhO1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvID0gdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbykgOiBudWxsXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhKSA6IG51bGxcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEgPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEpIDogbnVsbFxuICAgIHRoaXMub3BlcmFjaW9uID0gJ2hpc3RvcmljbydcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcbiAgfVxuXG4gIGVsaW1pbmFyU2VndW5kb1BsYW5vKGV2ZW50KXtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgIG1lc3NhZ2U6ICB0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVJfQ09ORklSTUFSLFxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuZ2VuZXJhbFBpcGUuU0lfREVTQyxcbiAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbmZpcm1hcicpLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZWxpbWluYXJFamVjdWNpb25SZXBvcnRlKHRoaXMuZWxlbWVudG9Cb3JyYXIpLnN1YnNjcmliZShkYXRhID0+e1xuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpXG4gICAgICAgICAgdGhpcy5yZWdyZXNhclNlZ3VuZG9QbGFubygpO1xuICAgICAgICAgIHRoaXMudHJhZXJTZWd1bmRvUGxhbm8oKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVzY2FyZ2FyQXJjaGl2bygpe1xuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2UuZGVzY2FyZ2FyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHRoaXMuZWxlbWVudG9Cb3JyYXIuYXJjaGl2bykpLnN1YnNjcmliZShibG9iID0+IHtcbiAgICAgIFxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxuICAgICAgYS5ocmVmID0gb2JqZWN0VXJsXG4gICAgICBsZXQgcGFydGVzID0gdGhpcy5lbGVtZW50b0JvcnJhci5hcmNoaXZvLnNwbGl0KFwiLlwiKTtcbiAgICAgIGxldCBleHRlbnNpb24gPSBwYXJ0ZXNbcGFydGVzLmxlbmd0aCAtIDFdO1xuICAgICAgYS5kb3dubG9hZCA9IHRoaXMudXRpbHNTZXJ2aWNlLmdlbmVyYXJMbGF2ZSgpICsgJy4nICsgZXh0ZW5zaW9uO1xuICAgICAgYS5jbGljaygpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FtYmlvVGlwb1JlcG9ydGUoZXZlbnQpe1xuICAgIHRoaXMubW9zdHJhclF1ZURlc2VhSGFjZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLnVuaWNvQXJjaGl2byA9PSAnTicgKXtcbiAgICAgIHRoaXMubW9zdHJhckFyY2hpdm9zU29wb3J0ZSA9IHRydWU7XG4gICAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlU29wb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7XG4gICAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZSxcbiAgICAgICAgdGlwbzonUydcbiAgICAgIH0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gZGF0YTtcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gW107XG4gICAgICAgIHRoaXMudGlwb0FyY2hpdm8gPSBudWxsO1xuICAgICAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgICAgLy90aGlzLmRlc2NhcmdhckFyY2hpdm8gPSBudWxsO1xuICAgIH0gXG4gIH1cblxuICBjYW1iaW9UaXBvQXJjaGl2byhldmVudCl7XG4gICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICB9XG5cbiAgcmVncmVzYXJTZWd1bmRvUGxhbm8oKXtcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyID0ge31cbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnXG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xuICB9XG5cbiAgb2N1bHRhcigpe1xuICAgIHRoaXMudGlwb1JlcG9ydGUgPSBudWxsO1xuICAgIHRoaXMubW9zdHJhciA9IGZhbHNlO1xuICAgIHRoaXMucmVncmVzYXIuZW1pdChmYWxzZSk7XG4gIH1cblxuICB2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xGdW5jaW9uYWxpZGFkLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKHZhbG9yKTtcbiAgfVxuXG4gIHNlbnRlbmNpYSgpe1xuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gdHJ1ZVxuICB9XG5cbiAgcmVncmVzYXJTZW50ZW5jaWEoZXZlbnQpe1xuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gZmFsc2U7XG4gIH1cblxuICBlbnZpYXJTZWd1bmRvUGxhbm8oKXtcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmVudmlhclNlZ3VuZG9QbGFubyh7XG4gICAgICByZXBvcnRlOiB0aGlzLnJlcG9ydGUsXG4gICAgICBwYXJhbWV0cm9zOiBsaXN0YUVudHJhZGEsXG4gICAgICB0aXBvUmVwb3J0ZTogdGhpcy50aXBvUmVwb3J0ZSxcbiAgICAgIG9wZXJhY2lvbjogdGhpcy5vcGVyYWNpb24sXG4gICAgICBjb3JyZW86IHRoaXMuY29ycmVvLFxuICAgIH0pLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgfSlcbiAgfVxuXG4gIGRlc2NhcmdhclJlcG9ydGUoKXtcblxuICAgIGlmKCdGJyA9PSB0aGlzLnRpcG9SZXBvcnRlKXtcbiAgICAgIHRoaXMucmVwb3J0ZS50aXBvQXJjaGl2byA9IHRoaXMudGlwb0FyY2hpdm87XG4gICAgfVxuXG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5kZXNjYXJnYXJSZXBvcnRlKHtcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcbiAgICAgIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYSxcbiAgICAgIHRpcG9SZXBvcnRlOiB0aGlzLnRpcG9SZXBvcnRlLFxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcbiAgICAgIGNvcnJlbzogdGhpcy5jb3JyZW8sXG4gICAgICBlbmRwb2ludEdlbmVyYWRvclJlcG9ydGVzOiAnJ1xuICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBkYXRhID0+e1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKVxuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8oZGF0YS5tZW5zYWplKVxuICAgICAgICBpZiAoIWRhdGEuYXJjaGl2bykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGF0b2IoZGF0YS5hcmNoaXZvKTtcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gZGVjb2RlZERhdGEuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGRhdGEubWltZSB9KTtcblxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byAgKyBkYXRhLmV4dGVuc2lvbjtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuXG4gICAgICAgIC8vIExpbXBpYSBsYSBVUkwgY3JlYWRhXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIFxuICBkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpe1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcbiAgICB9KVxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZGVzY2FyZ2FyUmVwb3J0ZSh7XG4gICAgICBuZXh0OiBkYXRhID0+e1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8oZGF0YS5tZW5zYWplKVxuICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGF0b2IoZGF0YS5hcmNoaXZvKTtcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gZGVjb2RlZERhdGEuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGRhdGEubWltZSB9KTtcblxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byArICcuJyArIGRhdGEuZXh0ZW5zaW9uO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG5cbiAgICAgICAgLy8gTGltcGlhIGxhIFVSTCBjcmVhZGFcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0Vycm9yKEpTT04uc3RyaW5naWZ5KGVyci5lcnJvci5tZW5zYWplRXRpcXVldGEpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZW5lcmFyVGFibGEoKXtcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLmNvbHVtbmFzID0gW107XG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5nZW5lcmFyVGFibGEoe3JlcG9ydGU6IHRoaXMucmVwb3J0ZSwgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdmFyIGNvbHVtbmE6IFRhYmxlQ29sdW1uO1xuICAgICAgZGF0YS5jb2x1bW5hcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb2x1bW5hID0ge1xuICAgICAgICAgIGZpZWxkOiBlbGVtZW50Lm5vbWJyZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIGhlYWRlcjogZWxlbWVudC5ub21icmUsXG4gICAgICAgICAgd2lkdGg6IDMwMCxcbiAgICAgICAgICBjYW5PcmRlcjogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb2x1bW5hcy5wdXNoKGNvbHVtbmEpXG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdGFSZWdpc3RybyA9IGRhdGEubGlzdGFSZWdpc3RybztcbiAgICB9KVxuICB9XG59XG4iLCI8cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD5cbjxwLWRpYWxvZyBpZD0ncG9wdXBSZXBvcnRlJyBoZWFkZXI9XCJ7eydyZXBvcnRlc2dlbmVyYWxlcycgfCB0cmFuc2xhdGV9fVwiIFsodmlzaWJsZSldPVwibW9zdHJhclwiIChvblNob3cpPVwibW9zdHJhclBvcHVwKClcIlxuICAgIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnLCAnNjQwcHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIiAob25IaWRlKT1cIm9jdWx0YXIoKVwiIFttb2RhbF09XCJ0cnVlXCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicGFuZWwgPT0gJ2VudHJhZGEnXCI+XG4gICAgICAgIDwhLS1TZWd1bmRvIHBsYW5vLS0+XG4gICAgICAgIDxwLWFjY29yZGlvbiBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHAtYWNjb3JkaW9uVGFiIFtzZWxlY3RlZF09XCJ0cnVlXCIgW2hlYWRlcl09XCInc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwibGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0YVNlZ3VuZG9QbGFub1wiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCIgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzID4gcGFnaW5hdG9yLnJvd3NcIiAob25Sb3dTZWxlY3QpPVwidmVyU2VndW5kb1BsYW5vKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snZXN0YWRvJyB8IHRyYW5zbGF0ZSB9fSA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydmZWNoYWluaWNpYWwnIHwgdHJhbnNsYXRlIH19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJlbnRyYWRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5ub21icmVFc3RhZG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5pbmljaWEgfCBkYXRlOiAnZGQvTU0veXl5eSBoOm1tIGEnfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICA8L3AtYWNjb3JkaW9uPlxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAgKm5nSWY9XCJtb3N0cmFyUGFyYW1ldHJvc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2VudHJhZGEnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cInBhcmFtZXRyb3NcIiA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcGFyYW1ldHJvPlxuICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cInBhcmFtZXRyb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdUJyB8fCBwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ0UnKSAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdVJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIiAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnQicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJwYXJhbWV0cm8ubGlzdGFcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY2FtYmlvVmFsb3JMaXN0YSgkZXZlbnQsIHBhcmFtZXRybylcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy5sbGF2ZUxpc3RhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnTCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPjwvcC1jYWxlbmRhcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgIDwvcC1maWVsZHNldD5cbiAgICAgICAgPHAtZmllbGRzZXQgY2xhc3M9XCJtdC0wXCIgKm5nSWY9XCJnZW5lcmFjaW9uZXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIGdlbmVyYWNpb25lc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb1JlcG9ydGUoJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cInRpcG9SZXBvcnRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJ0aXBvUmVwb3J0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3IubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcC1maWVsZHNldD5cblxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cIidBJyAhPSB0aXBvUmVwb3J0ZSAmJiBtb3N0cmFyUXVlRGVzZWFIYWNlclwiID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1jb2xvci00MDApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7Cv1F1w6kgZGVzZWEgaGFjZXI/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPnt7J3NlbGVjY2lvbmV0aXBvYXJjaGl2b2Rlc2VhZ2VuZXJhcicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSAmJiAnRicgPT0gdGlwb1JlcG9ydGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wXCIgICpuZ0Zvcj1cImxldCB2YWxvciBvZiBtYXBhVGlwb0FyY2hpdm9zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIChvbkNsaWNrKT1cImNhbWJpb1RpcG9BcmNoaXZvKCRldmVudClcIiBbaW5wdXRJZF09XCJ2YWxvci5jb2RpZ29cIiBuYW1lPVwidGlwb0FyY2hpdm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLmNvZGlnb1wiICBbKG5nTW9kZWwpXT1cInRpcG9BcmNoaXZvXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IuY29kaWdvXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5ub21icmUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhckFyY2hpdm9zU29wb3J0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJEZXRhbGxlcmVwb3J0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwibGlzdGFkb0FyY2hpdm9Tb3BvcnRlXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25MYWJlbD1cImRlc2NyaXBjaW9uXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwibGxhdmVUYWJsYVwiIFsobmdNb2RlbCldPVwic29wb3J0ZUJhc2VcIiAob25DaGFuZ2UpPVwiY2FtYmlvU29wb3J0ZUJhc2UoJGV2ZW50KVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlNvcG9ydGUgQmFzZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnRicgJiYgdGlwb0FyY2hpdm8gfHwgdGlwb1JlcG9ydGUgIT0gJ0YnIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG9wZXJhY2lvbmVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cIm9wZXJhY2lvblwiIFt2YWx1ZV09XCJ2YWxvci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wZXJhY2lvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cInZhbG9yLnZhbHVlXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiPlxuICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwiY29ycmVvXCIgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiYmxvcXVlYXJDb3JyZW9cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3snY29ycmVvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3AtZmllbGRzZXQ+XG4gICAgICAgIFxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24gcC1idXR0b24tb3V0bGluZWQgYmFja2dyb3VuZC0xMDBcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdlamVjcmVwbzpzZW50ZW5jaWEnKVwiIGxhYmVsPVwiVmVyIHNlbnRlbmNpYVwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZXllLW9wZW5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW50ZW5jaWEoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gIT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGUoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRCcgJiYgcmVwb3J0ZS5tb21lbnRvID09ICdEJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0EnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImdlbmVyYXJUYWJsYSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8IS0tcHRlIHByb2Nlc28gZXh0ZXJuby0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnTScgfHwgb3BlcmFjaW9uID09ICdNUCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdQJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZm9sZGVyLW9wZW5cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19wdWJsaWNhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSdTJ1wiICBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAncmVzdWx0YWRvJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdoaXN0b3JpY28nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1iYXNlIG10LTIgbWwtMlwiPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX0ge3snc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktY2hldnJvbi1sZWZ0XCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBtbC00XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWdyZXNhclNlZ3VuZG9QbGFubygpXCIgbGFiZWw9XCJ7eydsaW5rX3JlZ3Jlc2FyJyB8IHRyYW5zbGF0ZX19XCIgPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgSW5wdXRncm91cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLmluaWNpYVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIj48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZmVjaGFpbmljaWFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci50ZXJtaW5hXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWZpbmFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgW3JlYWRvbmx5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIubm9tYnJlRXN0YWRvXCIgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2VzdGFkbycpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyIGxnOmNvbC0xMlwiICpuZ0lmPVwiZWxlbWVudG9Cb3JyYXIuZXN0YWRvID09ICdFJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnbWVuc2FqZScpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cIm1pbi13LWZ1bGwgcC1pbnB1dHRleHRhcmVhIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtZWxlbWVudCBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiIGNvbHM9XCIzMFwiIHBJbnB1dFRleHRhcmVhIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuYXJjaGl2b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtYnV0dG9uIHAtYnV0dG9uLXJhaXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ1QnXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZGVzY2FyZ2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhckFyY2hpdm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24tb3V0bGluZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVsaW1pbmFyU2VndW5kb1BsYW5vKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0EnXCIgPlxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhUmVnaXN0cm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoXCIgW3BhZ2luYXRvcl09XCJsaXN0YVJlZ2lzdHJvLmxlbmd0aCA+IDEwXCIgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgY29sLmhlYWRlciB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgZW50cmFkYVtjb2wuZmllbGRdIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwLTMgZm9udC1tZWRpdW0gZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydtZW5zYWpldGFibGF2YWNpYScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvcC1kaWFsb2c+XG48YXBwLXBvcHVwLXNlbnRlbmNpYSBbcmVwb3J0ZV09XCJyZXBvcnRlXCIgW3BhcmFtZXRyb3NdPVwicGFyYW1ldHJvc1wiIFttb3N0cmFyUG9wdXBdPVwibW9zdHJhclBvcHVwU2VudGVuY2lhXCJcbiAgICAocmVncmVzYXIpPVwicmVncmVzYXJTZW50ZW5jaWEoJGV2ZW50KVwiPjwvYXBwLXBvcHVwLXNlbnRlbmNpYT4iXX0=
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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cUNBQUUsY0FBYywwZ0RBQUUsaUJBQWlCLDhVQUFFLHVCQUF1Qix5SUFBRSxXQUFXLGluQkFBRSxnQkFBZ0I7OzJGQU1yUSxxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0UsbUJBQW1CLFdBQ3BCLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNuUSxJQUFJLGFBQ0wsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7NGdCQU1sQyxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1csUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgR2VuZXJhbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9nZW5lcmFsLnBpcGUnO1xuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2dlbmVyYWwuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9jYXJnYXItYXJjaGl2b3Muc2VydmljZSc7XG5pbXBvcnQgeyBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZW5jcmlwdGFkby1iYXNpY28uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3JlcG9ydGUtZnVlbnRlLnBpcGUnO1xuaW1wb3J0IHsgRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lamVjdWNpb25yZXBvcnRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0ZUZ1ZW50ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUZ1ZW50ZU1vZGVsJztcbmltcG9ydCB7IFJlcG9ydGVFbnRyYWRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRW50cmFkYU1vZGVsJztcbmltcG9ydCB7IFJlcG9ydGVTb3BvcnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlU29wb3J0ZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxvcy90YWJsZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmdhckNvbnRyb2xGdW5jaW9uYWxpZGFkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2Nhcmdhci1jb250cm9sLWZ1bmNpb25hbGlkYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XG5pbXBvcnQgeyBBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2FjY29yZGlvbic7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWVsZHNldE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmllbGRzZXQnO1xuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcbmltcG9ydCB7IFBvcHVwU2VudGVuY2lhQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wdXAtc2VudGVuY2lhL3BvcHVwLXNlbnRlbmNpYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGbG9hdExhYmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9mbG9hdGxhYmVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXBvcHVwLXJlcG9ydGUnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgQWNjb3JkaW9uTW9kdWxlLCBUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBEYXRlUGlwZSwgRmllbGRzZXRNb2R1bGUsIElucHV0TnVtYmVyTW9kdWxlLCBJbnB1dFRleHRNb2R1bGUsIERyb3Bkb3duTW9kdWxlLCBDYWxlbmRhck1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIFBvcHVwU2VudGVuY2lhQ29tcG9uZW50LCBGb3Jtc01vZHVsZSwgRmxvYXRMYWJlbE1vZHVsZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUG9wdXBSZXBvcnRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBwdWJsaWMgbW9zdHJhciA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBsaWNhY2lvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVwb3J0ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsID0gbmV3IFJlcG9ydGVGdWVudGVNb2RlbDtcbiAgQElucHV0KCkgcHVibGljIGVudHJhZGFzUHVudG9Qcm9jZXNvOiBhbnlbXT1bXTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWdyZXNhcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHBhbmVsOiBzdHJpbmcgPSAnZW50cmFkYSc7XG4gIHB1YmxpYyBvcGVyYWNpb246IHN0cmluZztcbiAgcHVibGljIGxpc3RhRW50cmFkYTogUmVwb3J0ZUVudHJhZGFNb2RlbFtdID0gW107XG4gIHB1YmxpYyBsaXN0YVNlZ3VuZG9QbGFubzogYW55W10gPSBbXTtcbiAgcHVibGljIHBhcmFtZXRyb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBlbGVtZW50b0JvcnJhcjogYW55ID0ge307XG4gIHB1YmxpYyBnZW5lcmFjaW9uZXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBvcGVyYWNpb25lczogYW55W10gPSBbXTtcbiAgcHVibGljIG1vc3RyYXJPdHJhU2VsZWNjaW9uOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhckFyY2hpdm9zU29wb3J0ZTogYm9vbGVhbjtcblx0cHVibGljIG1vc3RyYXJDb25zdWx0YUNhc29FcnJvcjogYm9vbGVhbjtcbiAgcHVibGljIGNvcnJlbzogc3RyaW5nO1xuICBwdWJsaWMgdGlwb1JlcG9ydGU6IHN0cmluZztcbiAgcHVibGljIHNvcG9ydGVCYXNlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXBvQXJjaGl2bzogc3RyaW5nO1xuICBwdWJsaWMgYmxvcXVlYXJDb3JyZW86IGJvb2xlYW47XG4gIHB1YmxpYyBtYXBhVGlwb0FyY2hpdm9zO1xuICBwdWJsaWMgbGlzdGFkb0FyY2hpdm9Tb3BvcnRlOiBSZXBvcnRlU29wb3J0ZU1vZGVsW10gPSBbXTtcbiAgcHVibGljIG1vc3RyYXJQb3B1cFNlbnRlbmNpYTogYm9vbGVhbjtcblxuICBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW107XG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcbiAgcGFnaW5hdG9yPXtyb3dzOjIsdG90YWxSZWNvcmRzOjB9XG4gIHB1YmxpYyBtb3N0cmFyUGFyYW1ldHJvczogYm9vbGVhbjtcblx0cHVibGljIG1vc3RyYXJRdWVEZXNlYUhhY2VyOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb2x1bW5hczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwdWJsaWMgbGlzdGFSZWdpc3RybzogYW55W10gPSBbXTtcblxuICBwdWJsaWMgZXhpc3RlSmFzcGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2U6IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbm90aWZpY2FjaW9uU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb250cm9sRnVuY2lvbmFsaWRhZDogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlcG9ydGVGdWVudGVQaXBlOiBSZXBvcnRlRnVlbnRlUGlwZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2bzogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVuY3JpcHRhZG9yQXJjaGl2bzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsKSB7IH0gICAgICAgICBcbiAgXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFwYVRpcG9BcmNoaXZvcyA9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTUFQQV9USVBPX0FSQ0hJVk9TOyAgXG4gICAgdGhpcy5hcGxpY2FjaW9uID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpXG4gIH1cblxuICBhc3luYyBtb3N0cmFyUG9wdXAoKXtcbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnO1xuICAgIHRoaXMubW9zdHJhclF1ZURlc2VhSGFjZXIgPSBmYWxzZTtcbiAgICB0aGlzLnRpcG9SZXBvcnRlID0gbnVsbDtcbiAgICB0aGlzLm1vc3RyYXJDb25zdWx0YUNhc29FcnJvciA9IHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOnZlcnNlbnRlbmNpYWVycm9yJyk7XG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxuICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBbXVxuICAgIHRoaXMubGlzdGFSZWdpc3RybyA9IFtdO1xuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcbiAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnJlcG9ydGUubGxhdmUpIHtcbiAgICAgIHZhciByZXN1bHRhZG8gPSBhd2FpdCB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdldERhdG9zRWplY3VjaW9uUmVwb3J0ZSh7bGxhdmU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pLnRvUHJvbWlzZSgpO1xuICAgICAgdGhpcy5yZXBvcnRlID0gcmVzdWx0YWRvLnJlcG9ydGU7XG4gICAgICBkZWxldGUgdGhpcy5yZXBvcnRlWydhbGlhcyddXG4gICAgICB0aGlzLmNhcmdhckxpc3RhRW50cmFkYSgpO1xuICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xuICAgICAgdGhpcy5jYXJnYXJDb3JyZW8oKTtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhckV4aXN0ZUphc3BlcigpO1xuICAgICAgYXdhaXQgdGhpcy5jYXJnYXJHZW5lcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgIH1cbiAgICB0aGlzLnV0aWxzU2VydmljZS5yZXNpemVXaW5kb3dJRnJhbWUoKTtcbiAgfVxuXG4gIGNhcmdhck1lbnUoKXtcbiAgICB0aGlzLml0ZW1zID0gW1xuICAgICAgXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZWplY3VjaW9uJyksXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtcGx1cy1zaWduJyxcbiAgICAgICAgY29tbWFuZDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZW50cmFkYSc7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3NlZ3VuZG9wbGFubycpLFxuICAgICAgICBpY29uOiAnZ2x5cGhpY29ucyBnbHlwaGljb25zLWZpbGUtbWludXMnLFxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9ICdzZWd1bmRvcGxhbm8nO1xuICAgICAgICB9LFxuICAgICAgICB2aXNpYmxlOiB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aCA+IDAsXG4gICAgICB9XG4gICAgXVxuICB9XG5cbiAgYXN5bmMgY2FyZ2FyR2VuZXJhY2lvbmVzKCl7XG4gICAgdGhpcy5nZW5lcmFjaW9uZXMgPSBbXTtcbiAgICBpZiAoIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnRpdHVsb1BhcmFtZXRybykgJiYgdGhpcy5leGlzdGVKYXNwZXIpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRElOQU1JQ099KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuamFzcGVyRmlqbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubW9kb0Zpam8pKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRklKTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRklKT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvVG9kbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0VYQ0VMLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9FWENFTH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCkgfHwgdGhpcy5yZXBvcnRlLnVuaWNvQXJjaGl2byA9PSAnTicpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1BMQU5USUxMQX0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5zZXBhcmFkb3IpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQVJDSElWT1BMQU5PLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9BUkNISVZPUExBTk99KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubm9tYnJlVGFibGEpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fVEFCTEEsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1RBQkxBfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnRhZ0VuY2FiZXphZG8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmVzdHJ1Y3R1cmFSZWdpc3Rybykpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9YTUwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1hNTH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvRXhjZWxDb2x1bW5hcmlvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWxDb2x1bW5hcmlvKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0NPTFVNTkFSSU8sIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0NPTFVNTkFSSU99KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXJFeGlzdGVKYXNwZXIoKXtcbiAgICB0cnkge1xuICAgICAgdmFyIGRhdGEgPSBhd2FpdCB0aGlzLmNhcmdhckFyY2hpdm8uZGVzY2FyZ2FyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9yQXJjaGl2by5lbmNyaXB0YXIoJ3JlcG9ydGVzLycgKyB0aGlzLnJlcG9ydGUubGxhdmUgKyAnLmpyeG1sJyksICdydXRhX3BsYW50aWxsYXMnLCB0aGlzLmFwbGljYWNpb24pLnRvUHJvbWlzZSgpO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5leGlzdGVKYXNwZXIgPSB0cnVlO1xuICAgICAgfSAgIFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNhcmdhck9wZXJhY2lvbmVzKCl7XG4gICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IHRydWU7XG4gICAgdGhpcy5vcGVyYWNpb25lcyA9IFtdO1xuICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlKXtcbiAgICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlICE9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSkge1xuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9ERVNDQVJHQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fREVTQ0FSR0FSfSk7XG4gICAgICBcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOmVudmlvY29ycmVvJykpe1xuICAgICAgICAgIHRoaXMuYmxvcXVlYXJDb3JyZW8gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9FTlZJQVJDT1JSRU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9FTlZJQVJDT1JSRU99KTtcbiAgICAgICAgaWYgKHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTU9NRU5UT1NfU0VHVU5ET19QTEFOTyA9PSB0aGlzLnJlcG9ydGUubW9tZW50bykge1xuICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1NFR1VORE9QTEFOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fU0VHVU5ET1BMQU5PfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPICYmIHRoaXMucmVwb3J0ZS5tb2RvRmlqbyA9PSAnUCcpXG4gICAgICAgICAgfHwgdGhpcy50aXBvUmVwb3J0ZSA9PSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fUExBTlRJTExBICYmIHRoaXMucmVwb3J0ZS5kZXNjYXJnYXJGdWVudGUgIT0gJ1MnKXtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsKXtcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0VOVklPTUFTSVZPLFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9FTlZJT01BU0lWT30pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLnB1YmxpY2FjaW9uICYmIHRoaXMucmVwb3J0ZS5jYW1wb1B1YmxpY2Epe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fUFVCTElDQVIsXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX1BVQkxJQ0FSfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwgJiYgdGhpcy5yZXBvcnRlLnB1YmxpY2FjaW9uICYmIHRoaXMucmVwb3J0ZS5jYW1wb1B1YmxpY2EgKXtcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSLFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9DT1JSRU9QVUJMSUNBUn0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL3B0ZSBwcm9jZXNvIGV4dGVybm9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW1iaW9WYWxvckxpc3RhKGV2ZW50LCBwYXJhbWV0cm8pe1xuICAgIGlmIChldmVudC52YWx1ZSl7XG4gICAgICBsZXQgbGlzdGEgPSBldmVudC52YWx1ZS5zcGxpdCgnOicpXG4gICAgICBpZiAocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdOJyl7XG4gICAgICAgIHBhcmFtZXRyby51bmlvbkRUTy52YWxvciA9IHBhcnNlSW50KGxpc3RhWzBdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gbGlzdGFbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gIH1cbiAgXG4gIGNhbWJpb1NvcG9ydGVCYXNlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc29wb3J0ZUJhc2UgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlU29wb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7bGxhdmVUYWJsYTogdGhpcy5zb3BvcnRlQmFzZX0pKS5zdWJzY3JpYmUoYXJjaGl2b0Jhc2UgPT4ge1xuICAgICAgaWYgKGFyY2hpdm9CYXNlID09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zb3BvcnRlQmFzZSA9IGFyY2hpdm9CYXNlLmxsYXZlVGFibGE7XG5cdFx0XHR0aGlzLnJlcG9ydGUuYXJjaGl2b0luZGl2aWR1YWwgPSBhcmNoaXZvQmFzZS5hcmNoaXZvSW5kaXZpZHVhbDtcblx0XHRcdHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgY2FyZ2FyQ29ycmVvKCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jb3JyZW8gPSBkYXRhLmVtYWlsO1xuICAgIH0pXG4gIH1cblxuICBjYXJnYXJMaXN0YUVudHJhZGEoKXtcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZW50cmFkYXNQdW50b1Byb2Nlc28ubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLnBhcmFtZXRyb3MgPSB0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvOyAgXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XG4gICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xuICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5vYnRlbmVyTGlzdGFFbnRyYWRhRWplY3VjaW9uKHRoaXMucmVwb3J0ZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtZXRyb3MgPSBkYXRhO1xuICAgICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnKXtcbiAgICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIGVsZW1lbnQudW5pb25EVE8udmFsb3IgIT0gbnVsbCl7XG4gICAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB0cmFlclNlZ3VuZG9QbGFubygpe1xuICAgIGxldCB1c3VhcmlvID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnRWplY3VjaW9uUmVwb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7XG4gICAgICBhZGljaW9uYWRvOiB1c3VhcmlvLCBcbiAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBkYXRhO1xuICAgICAgICB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHMgPSB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aDtcbiAgICAgIH0pXG4gIH1cbiAgXG4gIHZlclNlZ3VuZG9QbGFubyhldmVudCl7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IGV2ZW50LmRhdGE7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbyA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvKSA6IG51bGxcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEpIDogbnVsbFxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSkgOiBudWxsXG4gICAgdGhpcy5vcGVyYWNpb24gPSAnaGlzdG9yaWNvJ1xuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xuICB9XG5cbiAgZWxpbWluYXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy5nZW5lcmFsUGlwZS5TSV9ERVNDLFxuICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29uZmlybWFyJyksXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5lbGltaW5hckVqZWN1Y2lvblJlcG9ydGUodGhpcy5lbGVtZW50b0JvcnJhcikuc3Vic2NyaWJlKGRhdGEgPT57XG4gICAgICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUilcbiAgICAgICAgICB0aGlzLnJlZ3Jlc2FyU2VndW5kb1BsYW5vKCk7XG4gICAgICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBkZXNjYXJnYXJBcmNoaXZvKCl7XG4gICAgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZS5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb0Jhc2ljby5lbmNyaXB0YXIodGhpcy5lbGVtZW50b0JvcnJhci5hcmNoaXZvKSkuc3Vic2NyaWJlKGJsb2IgPT4ge1xuICAgICAgXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmxcbiAgICAgIGxldCBwYXJ0ZXMgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmFyY2hpdm8uc3BsaXQoXCIuXCIpO1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IHBhcnRlc1twYXJ0ZXMubGVuZ3RoIC0gMV07XG4gICAgICBhLmRvd25sb2FkID0gdGhpcy51dGlsc1NlcnZpY2UuZ2VuZXJhckxsYXZlKCkgKyAnLicgKyBleHRlbnNpb247XG4gICAgICBhLmNsaWNrKCk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBjYW1iaW9UaXBvUmVwb3J0ZShldmVudCl7XG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IHRydWU7XG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1BMQU5USUxMQSAmJiB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyApe1xuICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtcbiAgICAgICAgcmVwb3J0ZUZ1ZW50ZTogdGhpcy5yZXBvcnRlLmxsYXZlLFxuICAgICAgICB0aXBvOidTJ1xuICAgICAgfSkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5saXN0YWRvQXJjaGl2b1NvcG9ydGUgPSBkYXRhO1xuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vc3RyYXJBcmNoaXZvc1NvcG9ydGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saXN0YWRvQXJjaGl2b1NvcG9ydGUgPSBbXTtcbiAgICAgICAgdGhpcy50aXBvQXJjaGl2byA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlcmFjaW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgICAvL3RoaXMuZGVzY2FyZ2FyQXJjaGl2byA9IG51bGw7XG4gICAgfSBcbiAgfVxuXG4gIGNhbWJpb1RpcG9BcmNoaXZvKGV2ZW50KXtcbiAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XG4gIH1cblxuICByZWdyZXNhclNlZ3VuZG9QbGFubygpe1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxuICAgIHRoaXMucGFuZWwgPSAnZW50cmFkYSdcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gIH1cblxuICBvY3VsdGFyKCl7XG4gICAgdGhpcy50aXBvUmVwb3J0ZSA9IG51bGw7XG4gICAgdGhpcy5tb3N0cmFyID0gZmFsc2U7XG4gICAgdGhpcy5yZWdyZXNhci5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHZhbGlkYXJDb250cm9sRnVuY2lvbmFsaWRhZCh2YWxvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEZ1bmNpb25hbGlkYWQuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3IpO1xuICB9XG5cbiAgc2VudGVuY2lhKCl7XG4gICAgdGhpcy5tb3N0cmFyUG9wdXBTZW50ZW5jaWEgPSB0cnVlXG4gIH1cblxuICByZWdyZXNhclNlbnRlbmNpYShldmVudCl7XG4gICAgdGhpcy5tb3N0cmFyUG9wdXBTZW50ZW5jaWEgPSBmYWxzZTtcbiAgfVxuXG4gIGVudmlhclNlZ3VuZG9QbGFubygpe1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcbiAgICB9KVxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZW52aWFyU2VndW5kb1BsYW5vKHtcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcbiAgICAgIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYSxcbiAgICAgIHRpcG9SZXBvcnRlOiB0aGlzLnRpcG9SZXBvcnRlLFxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcbiAgICAgIGNvcnJlbzogdGhpcy5jb3JyZW8sXG4gICAgfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKGRhdGEubWVuc2FqZSlcbiAgICB9KVxuICB9XG5cbiAgZGVzY2FyZ2FyUmVwb3J0ZSgpe1xuXG4gICAgaWYoJ0YnID09IHRoaXMudGlwb1JlcG9ydGUpe1xuICAgICAgdGhpcy5yZXBvcnRlLnRpcG9BcmNoaXZvID0gdGhpcy50aXBvQXJjaGl2bztcbiAgICB9XG5cbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmRlc2NhcmdhclJlcG9ydGUoe1xuICAgICAgcmVwb3J0ZTogdGhpcy5yZXBvcnRlLFxuICAgICAgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhLFxuICAgICAgdGlwb1JlcG9ydGU6IHRoaXMudGlwb1JlcG9ydGUsXG4gICAgICBvcGVyYWNpb246IHRoaXMub3BlcmFjaW9uLFxuICAgICAgY29ycmVvOiB0aGlzLmNvcnJlbyxcbiAgICAgIGVuZHBvaW50R2VuZXJhZG9yUmVwb3J0ZXM6ICcnXG4gICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT57XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpXG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgICAgIGlmICghZGF0YS5hcmNoaXZvKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihkYXRhLmFyY2hpdm8pO1xuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShkZWNvZGVkRGF0YS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuICAgICAgICAvLyBDcmVhIHVuIG9iamV0byBCbG9iIGNvbiBsb3MgYnl0ZXMgZGVjb2RpZmljYWRvcyB5IGVsIHRpcG8gTUlNRSBkZWwgYXJjaGl2b1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xuXG4gICAgICAgIC8vIENyZWEgdW5hIFVSTCBkZWwgb2JqZXRvIEJsb2JcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgICAvLyBDcmVhIHVuIGVubGFjZSBkZSBkZXNjYXJnYSB5IGhheiBjbGljIGVuIMOpbCBwYXJhIGluaWNpYXIgbGEgZGVzY2FyZ2FcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZGF0YS5ub21icmVBcmNoaXZvICArIGRhdGEuZXh0ZW5zaW9uO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG5cbiAgICAgICAgLy8gTGltcGlhIGxhIFVSTCBjcmVhZGFcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgXG4gIGRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKCl7XG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5kZXNjYXJnYXJSZXBvcnRlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT57XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihkYXRhLmFyY2hpdm8pO1xuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShkZWNvZGVkRGF0YS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuICAgICAgICAvLyBDcmVhIHVuIG9iamV0byBCbG9iIGNvbiBsb3MgYnl0ZXMgZGVjb2RpZmljYWRvcyB5IGVsIHRpcG8gTUlNRSBkZWwgYXJjaGl2b1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xuXG4gICAgICAgIC8vIENyZWEgdW5hIFVSTCBkZWwgb2JqZXRvIEJsb2JcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgICAvLyBDcmVhIHVuIGVubGFjZSBkZSBkZXNjYXJnYSB5IGhheiBjbGljIGVuIMOpbCBwYXJhIGluaWNpYXIgbGEgZGVzY2FyZ2FcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZGF0YS5ub21icmVBcmNoaXZvICsgJy4nICsgZGF0YS5leHRlbnNpb247XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcblxuICAgICAgICAvLyBMaW1waWEgbGEgVVJMIGNyZWFkYVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93RXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyLmVycm9yLm1lbnNhamVFdGlxdWV0YSkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdlbmVyYXJUYWJsYSgpe1xuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdlbmVyYXJUYWJsYSh7cmVwb3J0ZTogdGhpcy5yZXBvcnRlLCBwYXJhbWV0cm9zOiBsaXN0YUVudHJhZGF9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB2YXIgY29sdW1uYTogVGFibGVDb2x1bW47XG4gICAgICBkYXRhLmNvbHVtbmFzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbHVtbmEgPSB7XG4gICAgICAgICAgZmllbGQ6IGVsZW1lbnQubm9tYnJlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgaGVhZGVyOiBlbGVtZW50Lm5vbWJyZSxcbiAgICAgICAgICB3aWR0aDogMzAwLFxuICAgICAgICAgIGNhbk9yZGVyOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbHVtbmFzLnB1c2goY29sdW1uYSlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gZGF0YS5saXN0YVJlZ2lzdHJvO1xuICAgIH0pXG4gIH1cbn1cbiIsIjxwLWNvbmZpcm1Qb3B1cD48L3AtY29uZmlybVBvcHVwPlxuPHAtZGlhbG9nIGlkPSdwb3B1cFJlcG9ydGUnIGhlYWRlcj1cInt7J3JlcG9ydGVzZ2VuZXJhbGVzJyB8IHRyYW5zbGF0ZX19XCIgWyh2aXNpYmxlKV09XCJtb3N0cmFyXCIgKG9uU2hvdyk9XCJtb3N0cmFyUG9wdXAoKVwiXG4gICAgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzUwdncnfVwiIChvbkhpZGUpPVwib2N1bHRhcigpXCIgW21vZGFsXT1cInRydWVcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAnZW50cmFkYSdcIj5cbiAgICAgICAgPCEtLVNlZ3VuZG8gcGxhbm8tLT5cbiAgICAgICAgPHAtYWNjb3JkaW9uIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgW3NlbGVjdGVkXT1cInRydWVcIiBbaGVhZGVyXT1cIidzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJsaXN0YVNlZ3VuZG9QbGFuby5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhU2VndW5kb1BsYW5vXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtzY3JvbGxhYmxlXT1cInRydWVcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwicGFnaW5hdG9yLnJvd3NcIiBbdG90YWxSZWNvcmRzXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHNcIlxuICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHMgPiBwYWdpbmF0b3Iucm93c1wiIChvblJvd1NlbGVjdCk9XCJ2ZXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydlc3RhZG8nIHwgdHJhbnNsYXRlIH19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2ZlY2hhaW5pY2lhbCcgfCB0cmFuc2xhdGUgfX0gPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImVudHJhZGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlbnRyYWRhLm5vbWJyZUVzdGFkb319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlbnRyYWRhLmluaWNpYSB8IGRhdGU6ICdkZC9NTS95eXl5IGg6bW0gYSd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgIDwvcC1hY2NvcmRpb24+XG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICAqbmdJZj1cIm1vc3RyYXJQYXJhbWV0cm9zXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snZW50cmFkYScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwicGFyYW1ldHJvc1wiID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1wYXJhbWV0cm8+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwicGFyYW1ldHJvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+e3sgcGFyYW1ldHJvLnVuaW9uRFRPLmRlc2NyaXBjaW9uIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1QnIHx8IHBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRScpICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1UnICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnTicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdCJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInBhcmFtZXRyby5saXN0YVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJjYW1iaW9WYWxvckxpc3RhKCRldmVudCwgcGFyYW1ldHJvKVwiIFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLmxsYXZlTGlzdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdMJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+e3sgcGFyYW1ldHJvLnVuaW9uRFRPLmRlc2NyaXBjaW9uIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgPC9wLWZpZWxkc2V0PlxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cImdlbmVyYWNpb25lcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgZ2VuZXJhY2lvbmVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiAob25DbGljayk9XCJjYW1iaW9UaXBvUmVwb3J0ZSgkZXZlbnQpXCIgW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwidGlwb1JlcG9ydGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsb3IudmFsdWVcIiBbKG5nTW9kZWwpXT1cInRpcG9SZXBvcnRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci52YWx1ZVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wLWZpZWxkc2V0PlxuXG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICpuZ0lmPVwiJ0EnICE9IHRpcG9SZXBvcnRlICYmIG1vc3RyYXJRdWVEZXNlYUhhY2VyXCIgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPsK/UXXDqSBkZXNlYSBoYWNlcj88L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwidGlwb1JlcG9ydGUgJiYgJ0YnID09IHRpcG9SZXBvcnRlXCI+e3snc2VsZWNjaW9uZXRpcG9hcmNoaXZvZGVzZWFnZW5lcmFyJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG1hcGFUaXBvQXJjaGl2b3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb0FyY2hpdm8oJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLmNvZGlnb1wiIG5hbWU9XCJ0aXBvQXJjaGl2b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsb3IuY29kaWdvXCIgIFsobmdNb2RlbCldPVwidGlwb0FyY2hpdm9cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci5jb2RpZ29cIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLm5vbWJyZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyQXJjaGl2b3NTb3BvcnRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkRldGFsbGVyZXBvcnRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJsaXN0YWRvQXJjaGl2b1NvcG9ydGVcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIG9wdGlvbkxhYmVsPVwiZGVzY3JpcGNpb25cIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJsbGF2ZVRhYmxhXCIgWyhuZ01vZGVsKV09XCJzb3BvcnRlQmFzZVwiIChvbkNoYW5nZSk9XCJjYW1iaW9Tb3BvcnRlQmFzZSgkZXZlbnQpXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U29wb3J0ZSBCYXNlOjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlID09ICdGJyAmJiB0aXBvQXJjaGl2byB8fCB0aXBvUmVwb3J0ZSAhPSAnRicgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWQgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2Ygb3BlcmFjaW9uZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwib3BlcmFjaW9uXCIgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3BlcmFjaW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0UnXCI+XG4gICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJjb3JyZW9cIiB0eXBlPVwidGV4dFwiIFtkaXNhYmxlZF09XCJibG9xdWVhckNvcnJlb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eydjb3JyZW8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcC1maWVsZHNldD5cbiAgICAgICAgXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbiBwLWJ1dHRvbi1vdXRsaW5lZCBiYWNrZ3JvdW5kLTEwMFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ2VqZWNyZXBvOnNlbnRlbmNpYScpXCIgbGFiZWw9XCJWZXIgc2VudGVuY2lhXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1leWUtb3BlblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbnRlbmNpYSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0QnICYmIHJlcG9ydGUubW9tZW50byAhPSAnRCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyUmVwb3J0ZSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gPT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZ2VuZXJhclRhYmxhKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwhLS1wdGUgcHJvY2VzbyBleHRlcm5vLS0+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdNJyB8fCBvcGVyYWNpb24gPT0gJ01QJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ1AnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1mb2xkZXItb3BlblwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX3B1YmxpY2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09J1MnXCIgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19nZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInBhbmVsID09ICdyZXN1bHRhZG8nXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ2hpc3RvcmljbydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWJhc2UgbXQtMiBtbC0yXCI+e3snZGV0YWxsZScgfCB0cmFuc2xhdGV9fSB7eydzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlfX08L2g0PlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgZm9udC1zZW1pYm9sZCBmbGV4LXNocmluay0wIG1sLTRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZ3Jlc2FyU2VndW5kb1BsYW5vKClcIiBsYWJlbD1cInt7J2xpbmtfcmVncmVzYXInIHwgdHJhbnNsYXRlfX1cIiA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBJbnB1dGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTQgbGc6Y29sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuaW5pY2lhXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWluaWNpYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLnRlcm1pbmFcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCI+PC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2ZlY2hhZmluYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5ub21icmVFc3RhZG9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZXN0YWRvJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTIgbGc6Y29sLTEyXCIgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ0UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdtZW5zYWplJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwibWluLXctZnVsbCBwLWlucHV0dGV4dGFyZWEgcC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9XCI1XCIgY29scz1cIjMwXCIgcElucHV0VGV4dGFyZWEgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5hcmNoaXZvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24gcC1idXR0b24tcmFpc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnRvQm9ycmFyLmVzdGFkbyA9PSAnVCdcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQXJjaGl2bygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibWwtMiBwLWJ1dHRvbi1vdXRsaW5lZFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiA+XG4gICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwibGlzdGFSZWdpc3Ryb1wiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGlzdGFSZWdpc3Ryby5sZW5ndGhcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoID4gMTBcIiA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBjb2wuaGVhZGVyIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBlbnRyYWRhW2NvbC5maWVsZF0gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMyBmb250LW1lZGl1bSBlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9wLWRpYWxvZz5cbjxhcHAtcG9wdXAtc2VudGVuY2lhIFtyZXBvcnRlXT1cInJlcG9ydGVcIiBbcGFyYW1ldHJvc109XCJwYXJhbWV0cm9zXCIgW21vc3RyYXJQb3B1cF09XCJtb3N0cmFyUG9wdXBTZW50ZW5jaWFcIlxuICAgIChyZWdyZXNhcik9XCJyZWdyZXNhclNlbnRlbmNpYSgkZXZlbnQpXCI+PC9hcHAtcG9wdXAtc2VudGVuY2lhPiJdfQ==