@seniorsistemas/tmsx-angular-components 0.0.0-feature-tmsx-1741-7d4c9914 → 1.0.1

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.
@@ -259,9 +259,9 @@ GridEditableNestedComponent = __decorate([
259
259
  }),
260
260
  Component({
261
261
  selector: 'tmsx-grid-editable-nested',
262
- template: "<div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <s-button id=\"add-button\"\n data-cy=\"add-button\"\n priority=\"primary\" type=\"button\"\n [label]=\"'tmsx_com.tmsx_angular_components.add' | translate\"\n tooltip=\"{{'tmsx_com.tmsx_angular_components.add' | translate}} (Alt + Shift + N)\"\n [disabled]=\"!addEnabled\"\n (click)=\"onAdd()\">\n </s-button>\n <s-button\n *ngIf=\"!editing\"\n priority=\"primary\"\n iconClass=\"fa fa-edit\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_editar' | translate}}\"\n tooltip=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_editar' | translate}}\"\n [disabled]=\"!editEnabled\"\n sTieredMenu\n (click)=\"initAllRowsEdit()\"\n ></s-button>\n <s-button\n *ngIf=\"editing\"\n priority=\"primary\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_salvar' | translate}}\"\n iconClass=\"fa fa-check\"\n [disabled]=\"false\"\n (click)=\"onEditSave()\"\n ></s-button>\n <s-button\n *ngIf=\"editing\"\n priority=\"default\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_cancelar' | translate}}\"\n iconClass=\"fa fa-times\"\n [disabled]=\"false\"\n (click)=\"onEditCancel()\"\n ></s-button>\n <p-table\n selectionMode=\"single\"\n [(selection)]=\"selected\"\n [value]=\"gridData\"\n [columns]=\"gridColumns\"\n dataKey=\"id\"\n rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n [paginator]=\"true\"\n [totalRecords]=\"gridTotalRecords\"\n [lazy]=\"lazy\"\n (onLazyLoad)=\"updateGridData($event)\"\n *sLoadingState=\"gridLoading\"\n sortMode=\"multiple\"\n [frozenWidth]=\"frozenWidth\"\n [scrollable]=\"true\"\n [sTableFrozenPosition]=\"frozenPosition\"\n [sTableFrozenValue]=\"gridData\"\n editMode=\"row\"\n #table\n >\n <ng-template pTemplate=\"frozencolgroup\" let-columns>\n <colgroup>\n <col class=\"col50\" />\n <col *ngFor=\"let col of frozenColumns\" class=\"col200\" />\n <col class=\"frozenButton\" />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"frozenheader\">\n <tr>\n <th pResizableColumn scope=\"col\"></th>\n <th pResizableColumn *ngFor=\"let col of frozenColumns\" scope=\"col\">{{ col.header }}</th>\n <th pResizableColumn scope=\"col\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"frozenbody\" let-rowData let-expanded=\"expanded\">\n <tr [pSelectableRow]=\"rowData\">\n <td class=\"col50\" tabindex=\"0\" [sRowToggler]=\"rowData\">\n <i class=\"fa fa-{{ expanded ? 'minus' : 'plus' }} \"></i>\n </td>\n <td *ngFor=\"let col of frozenColumns\" class=\"colText\"\n tooltipPosition=\"top\" showDelay=\"500\"\n [innerHTML]=\"getSpanProp(rowData, col.field)\">\n </td>\n <td class=\"frozenButton\">\n <s-button\n id=\"edit-button\"\n data-cy=\"edit-button\"\n priority=\"default\"\n type=\"button\"\n size=\"small\"\n [auxiliary]=\"true\"\n [disabled]=\"false\"\n [model]=\"getActions(rowData)\">\n </s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" scope=\"col\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-expanded=\"expanded\" let-columns=\"columns\">\n <tr sNavigation tabindex=\"0\" [pEditableRow]=\"rowData\">\n <td\n *ngFor=\"let col of columns\"\n [ngClass]=\"editing? 'editPadding': ''\"\n pResizableColumn\n [pTooltip]=\"rowData[col.field]\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n tabindex=\"0\"\n class=\"col80 colText\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <div class=\"ui-fluid\">\n <ng-container [ngSwitch]=\"col.type\">\n <ng-container *ngSwitchCase=\"'Text'\">\n <span>{{ rowData[col.field] }}</span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Date'\">\n <p-calendar\n [(ngModel)]=\"rowData[col.field]\"\n appendTo=\"body\"\n [showIcon]=\"true\"\n [required]=\"true\"\n pTooltip=\"{{ calendarTooltipText }}\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"rowData[col.field]\"\n ></p-calendar>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Autocomplete'\">\n <p-autoComplete\n [(ngModel)]=\"rowData[col.field]\"\n [suggestions]=\"col.options\"\n appendTo=\"body\"\n (completeMethod)=\"filterOptions($event)\"\n [dropdown]=\"true\"\n [forceSelection]=\"true\"\n ></p-autoComplete>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Decimal'\">\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\"\n *ngIf=\"'MONETARIO' === rowData.tiposDados[col.field]\"\n >R$</span>\n <input sNumberInput [scale]=\"2\"\n alignTo=\"right\"\n thousandsSeparator=\".\"\n pInputText\n [(ngModel)]=\"rowData[col.field]\"\n (keydown)=\"onTab($event)\"\n />\n <span class=\"ui-inputgroup-addon\"\n *ngIf=\"'PERCENTUAL' === rowData.tiposDados[col.field]\"\n >%</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <input pInputText type=\"text\"\n [(ngModel)]=\"rowData[col.field]\"\n (keydown)=\"onTab($event)\"\n />\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"output\">\n <div [innerHTML]=\"getSpanProp(rowData, col.field, col.type)\"></div>\n </ng-template>\n </p-cellEditor>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData>\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"gridColumns.length + 1\">\n <p-table\n [value]=\"rowData.nestedGridData\"\n [columns]=\"rowData.nestedGridColumns\"\n dataKey=\"id\"\n rows=\"5\"\n [first]=\"getRowIndex()\"\n [rows]=\"getPageSize()\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n [paginator]=\"true\"\n [totalRecords]=\"rowData.nestedGridTotalRecords\"\n [responsive]=\"true\"\n [lazy]=\"true\"\n (onLazyLoad)=\"updateNestedGridData($event, rowData)\"\n sortMode=\"multiple\"\n *sLoadingState=\"rowData.nestedGridLoading\"\n >\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" scope=\"col\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr [pSelectableRow]=\"rowData\">\n <td *ngFor=\"let col of columns\" class=\"colText\">\n {{ formatData(col, rowData[col.field]) }}\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <span>\n {{ rowData.nestedGridTotalRecords }}\n {{'tmsx_com.tmsx_angular_components.grid_editable_nested_paging' | translate}}\n </span>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <span>\n {{ gridTotalRecords }}\n {{'tmsx_com.tmsx_angular_components.grid_editable_nested_paging' | translate}}\n </span>\n </ng-template>\n </p-table>\n </div>\n</div>\n",
262
+ template: "<div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <s-button id=\"add-button\"\n data-cy=\"add-button\"\n priority=\"primary\" type=\"button\"\n [label]=\"'tmsx_com.tmsx_angular_components.add' | translate\"\n tooltip=\"{{'tmsx_com.tmsx_angular_components.add' | translate}} (Alt + Shift + N)\"\n [disabled]=\"!addEnabled\"\n (click)=\"onAdd()\">\n </s-button>\n <s-button\n *ngIf=\"!editing\"\n priority=\"primary\"\n iconClass=\"fa fa-edit\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_editar' | translate}}\"\n tooltip=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_editar' | translate}}\"\n [disabled]=\"!editEnabled\"\n (click)=\"initAllRowsEdit()\"\n ></s-button>\n <s-button\n *ngIf=\"editing\"\n priority=\"primary\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_salvar' | translate}}\"\n iconClass=\"fa fa-check\"\n [disabled]=\"false\"\n (click)=\"onEditSave()\"\n ></s-button>\n <s-button\n *ngIf=\"editing\"\n priority=\"default\"\n label=\"{{'tmsx_com.tmsx_angular_components.grid_editable_nested_cancelar' | translate}}\"\n iconClass=\"fa fa-times\"\n [disabled]=\"false\"\n (click)=\"onEditCancel()\"\n ></s-button>\n <p-table\n selectionMode=\"single\"\n [(selection)]=\"selected\"\n [value]=\"gridData\"\n [columns]=\"gridColumns\"\n dataKey=\"id\"\n rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n [paginator]=\"true\"\n [totalRecords]=\"gridTotalRecords\"\n [lazy]=\"lazy\"\n (onLazyLoad)=\"updateGridData($event)\"\n *sLoadingState=\"gridLoading\"\n sortMode=\"multiple\"\n [frozenWidth]=\"frozenWidth\"\n [scrollable]=\"true\"\n [sTableFrozenPosition]=\"frozenPosition\"\n [sTableFrozenValue]=\"gridData\"\n editMode=\"row\"\n #table\n >\n <ng-template pTemplate=\"frozencolgroup\" let-columns>\n <colgroup>\n <col class=\"col50\" />\n <col *ngFor=\"let col of frozenColumns\" class=\"col200\" />\n <col class=\"frozenButton\" />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"frozenheader\">\n <tr>\n <th pResizableColumn scope=\"col\"></th>\n <th pResizableColumn *ngFor=\"let col of frozenColumns\" scope=\"col\">{{ col.header }}</th>\n <th pResizableColumn scope=\"col\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"frozenbody\" let-rowData let-expanded=\"expanded\">\n <tr [pSelectableRow]=\"rowData\">\n <td class=\"col50\" tabindex=\"0\" [sRowToggler]=\"rowData\">\n <i class=\"fa fa-{{ expanded ? 'minus' : 'plus' }} \"></i>\n </td>\n <td *ngFor=\"let col of frozenColumns\" class=\"colText\"\n tooltipPosition=\"top\" showDelay=\"500\"\n [innerHTML]=\"getSpanProp(rowData, col.field)\">\n </td>\n <td class=\"frozenButton\">\n <s-button\n id=\"edit-button\"\n data-cy=\"edit-button\"\n priority=\"default\"\n type=\"button\"\n size=\"small\"\n [auxiliary]=\"true\"\n [disabled]=\"false\"\n [model]=\"getActions(rowData)\">\n </s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\" [style.width]=\"col.width\" />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" scope=\"col\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-expanded=\"expanded\" let-columns=\"columns\">\n <tr sNavigation tabindex=\"0\" [pEditableRow]=\"rowData\">\n <td\n *ngFor=\"let col of columns\"\n [ngClass]=\"editing? 'editPadding': ''\"\n pResizableColumn\n [pTooltip]=\"rowData[col.field]\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n tabindex=\"0\"\n class=\"col80 colText\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <div class=\"ui-fluid\">\n <ng-container [ngSwitch]=\"col.type\">\n <ng-container *ngSwitchCase=\"'Text'\">\n <span>{{ rowData[col.field] }}</span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Date'\">\n <p-calendar\n [(ngModel)]=\"rowData[col.field]\"\n appendTo=\"body\"\n [showIcon]=\"true\"\n [required]=\"true\"\n pTooltip=\"{{ calendarTooltipText }}\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"rowData[col.field]\"\n ></p-calendar>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Autocomplete'\">\n <p-autoComplete\n [(ngModel)]=\"rowData[col.field]\"\n [suggestions]=\"col.options\"\n appendTo=\"body\"\n (completeMethod)=\"filterOptions($event)\"\n [dropdown]=\"true\"\n [forceSelection]=\"true\"\n ></p-autoComplete>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Decimal'\">\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\"\n *ngIf=\"'MONETARIO' === rowData.tiposDados[col.field]\"\n >R$</span>\n <input sNumberInput [scale]=\"2\"\n alignTo=\"right\"\n thousandsSeparator=\".\"\n pInputText\n [(ngModel)]=\"rowData[col.field]\"\n (keydown)=\"onTab($event)\"\n />\n <span class=\"ui-inputgroup-addon\"\n *ngIf=\"'PERCENTUAL' === rowData.tiposDados[col.field]\"\n >%</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <input pInputText type=\"text\"\n [(ngModel)]=\"rowData[col.field]\"\n (keydown)=\"onTab($event)\"\n />\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"output\">\n <div [innerHTML]=\"getSpanProp(rowData, col.field, col.type)\"></div>\n </ng-template>\n </p-cellEditor>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData>\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"gridColumns.length + 1\">\n <p-table\n [value]=\"rowData.nestedGridData\"\n [columns]=\"rowData.nestedGridColumns\"\n dataKey=\"id\"\n rows=\"5\"\n [first]=\"getRowIndex()\"\n [rows]=\"getPageSize()\"\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\n [paginator]=\"true\"\n [totalRecords]=\"rowData.nestedGridTotalRecords\"\n [responsive]=\"true\"\n [lazy]=\"true\"\n (onLazyLoad)=\"updateNestedGridData($event, rowData)\"\n sortMode=\"multiple\"\n *sLoadingState=\"rowData.nestedGridLoading\"\n >\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" scope=\"col\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr [pSelectableRow]=\"rowData\">\n <td *ngFor=\"let col of columns\" class=\"colText\">\n {{ formatData(col, rowData[col.field]) }}\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <span>\n {{ rowData.nestedGridTotalRecords }}\n {{'tmsx_com.tmsx_angular_components.grid_editable_nested_paging' | translate}}\n </span>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <span>\n {{ gridTotalRecords }}\n {{'tmsx_com.tmsx_angular_components.grid_editable_nested_paging' | translate}}\n </span>\n </ng-template>\n </p-table>\n </div>\n</div>\n",
263
263
  styles: [":host ::ng-deep div.contents{margin-top:15px}input{max-width:100%}.col50{width:50px}.col80{width:80px}.col200{width:200px}.colText{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.frozenButton{width:70px;padding:5px}.editPadding{padding-top:8px;padding-bottom:9px}"]
264
264
  })
265
265
  ], GridEditableNestedComponent);
266
266
  export { GridEditableNestedComponent };
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0YWJsZS1uZXN0ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9ncmlkLWVkaXRhYmxlLW5lc3RlZC9ncmlkLWVkaXRhYmxlLW5lc3RlZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQ2pFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBVWxFLElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBaUNwQyxZQUNxQixpQkFBb0MsRUFDcEMsU0FBMkIsRUFDM0IsS0FBbUIsRUFDbkIsY0FBOEI7UUFIOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWxDekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFD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Q2pDO0lBQVQsTUFBTSxFQUFFOzJEQUFrQztBQUNqQztJQUFULE1BQU0sRUFBRTt5REFBZ0M7QUFDL0I7SUFBVCxNQUFNLEVBQUU7d0RBQStCO0FBRUQ7SUFBdEMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzswREFBc0I7QUFUbkQsMkJBQTJCO0lBUnZDLFVBQVUsQ0FBQztRQUNSLFVBQVUsRUFBRSxNQUFNO0tBQ3JCLENBQUM7SUFDRCxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLDI2WUFBb0Q7O0tBRXJELENBQUM7R0FDVywyQkFBMkIsQ0EwUXZDO1NBMVFZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdGFibGUsIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50LCBNZW51SXRlbSwgU29ydE1ldGEgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JpZENvbmZpZywgRnJvemVuQ29sdW1uIH0gZnJvbSAnLi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IEhvdGtleXNTZXJ2aWNlLCBIb3RrZXkgfSBmcm9tICdhbmd1bGFyMi1ob3RrZXlzJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG1zeC1ncmlkLWVkaXRhYmxlLW5lc3RlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWVkaXRhYmxlLW5lc3RlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtZWRpdGFibGUtbmVzdGVkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3JpZEVkaXRhYmxlTmVzdGVkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcHVibGljIGNvbmZpZyE6IEdyaWRDb25maWc7XG4gICAgQElucHV0KCkgbmVzdGVkRnVuY3Rpb24hOiAobGlzdFBhcmFtczogTGlzdFBhcmFtcywgcm93RGF0YTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIEBPdXRwdXQoKSBvcGVuRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBwYWdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKFwidGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJsZSE6IFRhYmxlO1xuICAgIHB1YmxpYyBjbG9uZWREYXRhOiB7IFtzOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHB1YmxpYyBncmlkTG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGVkaXRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbGF6eSA9IHRydWU7XG4gICAgcHVibGljIGRlbGV0ZUVuYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgZWRpdEVuYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgYWRkRW5hYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBkZXRhaWxzRW5hYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBjYWxlbmRhclRvb2x0aXBUZXh0ID0gJyc7XG4gICAgcHVibGljIGN1cnJlbnRMaXN0UGFyYW1zOiBMaXN0UGFyYW1zID0geyBwYWdlOiAwLCBzaXplOiA1LCBzb3J0OiBbXSB9O1xuXG4gICAgcHVibGljIGdyaWREYXRhOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyBncmlkQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgZ3JpZFRvdGFsUmVjb3JkcyA9IDA7XG4gICAgcHVibGljIHNlbGVjdGVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIG5lc3RlZEdyaWRMb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIGZyb3plblBvc2l0aW9uID0gJ2xlZnQnO1xuICAgIHB1YmxpYyBmcm96ZW5XaWR0aCA9ICcyMDBweCc7XG4gICAgcHVibGljIGZyb3plbkNvbHVtbnM6IEZyb3plbkNvbHVtbltdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhvdGtleXNTZXJ2aWNlOiBIb3RrZXlzU2VydmljZSxcbiAgICApIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJUb29sdGlwVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmdyaWRfZWRpdGFibGVfbmVzdGVkX2NhbGVuZGFyX3JlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5zZXRIb3RrZXlzKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgcHVibGljIGZvcm1hdERhdGEoY29sdW1uOiBhbnksIHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0R3JpZERhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBkYXRhLCBzaXplLCBjb2x1bW5zLCBmcm96ZW5Qb3NpdGlvbiwgZnJvemVuQ29sdW1ucywgZWRpdGluZywgbGF6eSxcbiAgICAgICAgICBkZWxldGVBY3Rpb25zRW5hYmxlZCwgZWRpdEVuYWJsZWQsIGFkZEVuYWJsZWQsIGVkaXRBY3Rpb25zRW5hYmxlZCB9ID0gdGhpcy5jb25maWc7XG5cbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGEgPz8gW107XG4gICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IHNpemUgPz8gMDtcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IGNvbHVtbnMgPz8gW107XG4gICAgICAgIHRoaXMuZnJvemVuUG9zaXRpb24gPSBmcm96ZW5Qb3NpdGlvbiA/PyAnbGVmdCc7XG4gICAgICAgIHRoaXMuZnJvemVuQ29sdW1ucyA9IGZyb3plbkNvbHVtbnMgPz8gW107XG4gICAgICAgIHRoaXMuZnJvemVuV2lkdGggPSB0aGlzLmNhbGN1bGF0ZUZyb3plbldpZHRoKHRoaXMuZnJvemVuQ29sdW1ucyk7XG5cbiAgICAgICAgdGhpcy5lZGl0aW5nID0gISFlZGl0aW5nO1xuICAgICAgICB0aGlzLmxhenkgPSAhIWxhenk7XG4gICAgICAgIHRoaXMuZGVsZXRlRW5hYmxlZCA9ICEhZGVsZXRlQWN0aW9uc0VuYWJsZWQ7XG4gICAgICAgIHRoaXMuZWRpdEVuYWJsZWQgPSAhIWVkaXRFbmFibGVkO1xuICAgICAgICB0aGlzLmFkZEVuYWJsZWQgPSAhIWFkZEVuYWJsZWQ7XG4gICAgICAgIHRoaXMuZGV0YWlsc0VuYWJsZWQgPSAhIWVkaXRBY3Rpb25zRW5hYmxlZDtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5uZXN0ZWRHcmlkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVGcm96ZW5XaWR0aChmcm96ZW5Db2x1bW5zOiBGcm96ZW5Db2x1bW5bXSk6IHN0cmluZyB7XG4gICAgICBjb25zdCBndXR0ZXIgPSAxMjA7XG4gICAgICBpZiAoIShmcm96ZW5Db2x1bW5zPy5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiAnMTIwcHgnO1xuICAgICAgfVxuICAgICAgY29uc3QgdG90YWxXaWR0aCA9IGZyb3plbkNvbHVtbnMucmVkdWNlKChzdW0sIGNvbCkgPT4gc3VtICsgZ3V0dGVyICsgKHBhcnNlSW50KGNvbC53aWR0aCwgMTApIHx8IDApLCAwKTtcbiAgICAgIHJldHVybiBgJHt0b3RhbFdpZHRofXB4YDtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKGRhdGE6IGFueSk6IE1lbnVJdGVtW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmVkaXQnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuZGV0YWlsc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Sb3dEZXRhaWxzKGRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBzZXBhcmF0b3I6IHRydWUgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmRlbGV0ZScpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5kZWxldGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShkYXRhLmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlR3JpZERhdGEoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3MgPyBldmVudC5yb3dzIDogMTA7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCA/IGV2ZW50LmZpcnN0IC8gc2l6ZSA6IDA7XG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmNsb25lZERhdGEgJiYgT2JqZWN0LmtleXModGhpcy5jbG9uZWREYXRhKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkRGF0YSA9IHt9O1xuICAgICAgICAgICAgdGhpcy50YWJsZS5lZGl0aW5nUm93S2V5cyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYWdpbmcuZW1pdCh7IHBhZ2UsIHNpemUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZU5lc3RlZEdyaWREYXRhKGV2ZW50OiBMYXp5TG9hZEV2ZW50LCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3MgPyBldmVudC5yb3dzIDogMTA7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCA/IGV2ZW50LmZpcnN0IC8gc2l6ZSA6IDA7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBldmVudC5tdWx0aVNvcnRNZXRhIHx8IFtdO1xuXG4gICAgICAgIHJvd0RhdGEubmVzdGVkR3JpZExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLm5lc3RlZEZ1bmN0aW9uKHsgcGFnZSwgc2l6ZSwgc29ydCB9LCByb3dEYXRhKTtcbiAgICB9XG5cbiAgICBvblRhYihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgZm9jdXNhYmxlcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICdwLWNlbGxFZGl0b3IgaW5wdXQsIHAtY2VsbEVkaXRvciB0ZXh0YXJlYSwgcC1jZWxsRWRpdG9yIFt0YWJpbmRleD1cIjBcIl0nXG4gICAgICAgICAgICApXG4gICAgICAgICkuZmlsdGVyKGVsID0+IGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZm9jdXNhYmxlcy5pbmRleE9mKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgbGV0IG5leHQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgbmV4dCA9IGZvY3VzYWJsZXNbY3VycmVudEluZGV4IC0gMV0gfHwgZm9jdXNhYmxlc1tmb2N1c2FibGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IGZvY3VzYWJsZXNbY3VycmVudEluZGV4ICsgMV0gfHwgZm9jdXNhYmxlc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICBuZXh0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHB1YmxpYyBnZXRSb3dJbmRleCgpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXMucGFnZSB8fCAwO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcy5zaXplIHx8IDA7XG4gICAgICAgIHJldHVybiBwYWdlICogc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemUgPz8gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlblJvd0RldGFpbHMoaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wZW5EZXRhaWxzLmVtaXQoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFkZCgpIHtcbiAgICAgICAgdGhpcy5hZGQuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRWRpdFNhdmUoKSB7XG4gICAgICAgIHRoaXMuc2F2ZUFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FZGl0Q2FuY2VsKCkge1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyb3cpID0+IHJvdy5pZCA9PT0gZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YVtpbmRleF0gPSB0aGlzLmNsb25lZERhdGFbZGF0YS5pZF07XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2xvbmVkRGF0YVtkYXRhLmlkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFibGUuY2FuY2VsUm93RWRpdChkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0QWxsUm93c0VkaXQoKSB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0gPSB7IC4uLmRhdGEgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmVBbGxSb3dzKCkge1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jbG9uZWREYXRhW2RhdGEuaWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50YWJsZS5jYW5jZWxSb3dFZGl0KGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMuZ3JpZERhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRSb3dEYXRhKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGFuUHJvcChvYmo6IGFueSwgcGF0aDogYW55LCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHlwZSA9IHR5cGU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy51dGlscy5nZXRQcm9wKG9iaiwgcGF0aCwgdHlwZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJzxzcGFuPjA8L3NwYW4+JyAgJiYgdHlwZSA9PT0gJ2RlY2ltYWwnKSB7XG4gICAgICAgICAgIHJldHVybiAnPHNwYW4+MCwwMDwvc3Bhbj4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb2JqLnRpcG9zRGFkb3MpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ01PTkVUQVJJTycgPT09IG9iai50aXBvc0RhZG9zW3BhdGhdKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1IkICcgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ1BFUkNFTlRVQUwnID09PSBvYmoudGlwb3NEYWRvc1twYXRoXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgJyAlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEhvdGtleXMoKSB7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UuYWRkKFxuICAgICAgICAgICAgbmV3IEhvdGtleShcbiAgICAgICAgICAgICAgICAnYWx0K3NoaWZ0K24nLFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFkZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbJ0lOUFVUJywgJ1NFTEVDVCcsICdURVhUQVJFQSddXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYXJhbXMge1xuICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBzb3J0PzogU29ydE1ldGFbXTtcbiAgICBmaWx0ZXJRdWVyeT86IHN0cmluZztcbiAgICBkaXNwbGF5RmllbGRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9keVBhcmFtcyB7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgIHNpemU/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IHN0cmluZztcbiAgICBmaWx0ZXI/OiBzdHJpbmc7XG4gICAgZGlzcGxheWZpZWxkcz86IHN0cmluZztcbn1cbiJdfQ==
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0YWJsZS1uZXN0ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9ncmlkLWVkaXRhYmxlLW5lc3RlZC9ncmlkLWVkaXRhYmxlLW5lc3RlZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQ2pFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBVWxFLElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBaUNwQyxZQUNxQixpQkFBb0MsRUFDcEMsU0FBMkIsRUFDM0IsS0FBbUIsRUFDbkIsY0FBOEI7UUFIOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWxDekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFD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Q2pDO0lBQVQsTUFBTSxFQUFFOzJEQUFrQztBQUNqQztJQUFULE1BQU0sRUFBRTt5REFBZ0M7QUFDL0I7SUFBVCxNQUFNLEVBQUU7d0RBQStCO0FBRUQ7SUFBdEMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQzswREFBc0I7QUFUbkQsMkJBQTJCO0lBUnZDLFVBQVUsQ0FBQztRQUNSLFVBQVUsRUFBRSxNQUFNO0tBQ3JCLENBQUM7SUFDRCxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLGs1WUFBb0Q7O0tBRXJELENBQUM7R0FDVywyQkFBMkIsQ0EwUXZDO1NBMVFZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdGFibGUsIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50LCBNZW51SXRlbSwgU29ydE1ldGEgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JpZENvbmZpZywgRnJvemVuQ29sdW1uIH0gZnJvbSAnLi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IEhvdGtleXNTZXJ2aWNlLCBIb3RrZXkgfSBmcm9tICdhbmd1bGFyMi1ob3RrZXlzJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG1zeC1ncmlkLWVkaXRhYmxlLW5lc3RlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWVkaXRhYmxlLW5lc3RlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtZWRpdGFibGUtbmVzdGVkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3JpZEVkaXRhYmxlTmVzdGVkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcHVibGljIGNvbmZpZyE6IEdyaWRDb25maWc7XG4gICAgQElucHV0KCkgbmVzdGVkRnVuY3Rpb24hOiAobGlzdFBhcmFtczogTGlzdFBhcmFtcywgcm93RGF0YTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xuICAgIEBPdXRwdXQoKSBvcGVuRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBwYWdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKFwidGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJsZSE6IFRhYmxlO1xuICAgIHB1YmxpYyBjbG9uZWREYXRhOiB7IFtzOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHB1YmxpYyBncmlkTG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGVkaXRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbGF6eSA9IHRydWU7XG4gICAgcHVibGljIGRlbGV0ZUVuYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgZWRpdEVuYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgYWRkRW5hYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBkZXRhaWxzRW5hYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBjYWxlbmRhclRvb2x0aXBUZXh0ID0gJyc7XG4gICAgcHVibGljIGN1cnJlbnRMaXN0UGFyYW1zOiBMaXN0UGFyYW1zID0geyBwYWdlOiAwLCBzaXplOiA1LCBzb3J0OiBbXSB9O1xuXG4gICAgcHVibGljIGdyaWREYXRhOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyBncmlkQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgZ3JpZFRvdGFsUmVjb3JkcyA9IDA7XG4gICAgcHVibGljIHNlbGVjdGVkOiBhbnlbXSA9IFtdO1xuXG4gICAgcHVibGljIG5lc3RlZEdyaWRMb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIGZyb3plblBvc2l0aW9uID0gJ2xlZnQnO1xuICAgIHB1YmxpYyBmcm96ZW5XaWR0aCA9ICcyMDBweCc7XG4gICAgcHVibGljIGZyb3plbkNvbHVtbnM6IEZyb3plbkNvbHVtbltdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhvdGtleXNTZXJ2aWNlOiBIb3RrZXlzU2VydmljZSxcbiAgICApIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJUb29sdGlwVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmdyaWRfZWRpdGFibGVfbmVzdGVkX2NhbGVuZGFyX3JlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5zZXRIb3RrZXlzKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgcHVibGljIGZvcm1hdERhdGEoY29sdW1uOiBhbnksIHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0R3JpZERhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBkYXRhLCBzaXplLCBjb2x1bW5zLCBmcm96ZW5Qb3NpdGlvbiwgZnJvemVuQ29sdW1ucywgZWRpdGluZywgbGF6eSxcbiAgICAgICAgICBkZWxldGVBY3Rpb25zRW5hYmxlZCwgZWRpdEVuYWJsZWQsIGFkZEVuYWJsZWQsIGVkaXRBY3Rpb25zRW5hYmxlZCB9ID0gdGhpcy5jb25maWc7XG5cbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGEgPz8gW107XG4gICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IHNpemUgPz8gMDtcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IGNvbHVtbnMgPz8gW107XG4gICAgICAgIHRoaXMuZnJvemVuUG9zaXRpb24gPSBmcm96ZW5Qb3NpdGlvbiA/PyAnbGVmdCc7XG4gICAgICAgIHRoaXMuZnJvemVuQ29sdW1ucyA9IGZyb3plbkNvbHVtbnMgPz8gW107XG4gICAgICAgIHRoaXMuZnJvemVuV2lkdGggPSB0aGlzLmNhbGN1bGF0ZUZyb3plbldpZHRoKHRoaXMuZnJvemVuQ29sdW1ucyk7XG5cbiAgICAgICAgdGhpcy5lZGl0aW5nID0gISFlZGl0aW5nO1xuICAgICAgICB0aGlzLmxhenkgPSAhIWxhenk7XG4gICAgICAgIHRoaXMuZGVsZXRlRW5hYmxlZCA9ICEhZGVsZXRlQWN0aW9uc0VuYWJsZWQ7XG4gICAgICAgIHRoaXMuZWRpdEVuYWJsZWQgPSAhIWVkaXRFbmFibGVkO1xuICAgICAgICB0aGlzLmFkZEVuYWJsZWQgPSAhIWFkZEVuYWJsZWQ7XG4gICAgICAgIHRoaXMuZGV0YWlsc0VuYWJsZWQgPSAhIWVkaXRBY3Rpb25zRW5hYmxlZDtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5uZXN0ZWRHcmlkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVGcm96ZW5XaWR0aChmcm96ZW5Db2x1bW5zOiBGcm96ZW5Db2x1bW5bXSk6IHN0cmluZyB7XG4gICAgICBjb25zdCBndXR0ZXIgPSAxMjA7XG4gICAgICBpZiAoIShmcm96ZW5Db2x1bW5zPy5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiAnMTIwcHgnO1xuICAgICAgfVxuICAgICAgY29uc3QgdG90YWxXaWR0aCA9IGZyb3plbkNvbHVtbnMucmVkdWNlKChzdW0sIGNvbCkgPT4gc3VtICsgZ3V0dGVyICsgKHBhcnNlSW50KGNvbC53aWR0aCwgMTApIHx8IDApLCAwKTtcbiAgICAgIHJldHVybiBgJHt0b3RhbFdpZHRofXB4YDtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKGRhdGE6IGFueSk6IE1lbnVJdGVtW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmVkaXQnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuZGV0YWlsc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Sb3dEZXRhaWxzKGRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBzZXBhcmF0b3I6IHRydWUgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLmRlbGV0ZScpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5kZWxldGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShkYXRhLmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlR3JpZERhdGEoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3MgPyBldmVudC5yb3dzIDogMTA7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCA/IGV2ZW50LmZpcnN0IC8gc2l6ZSA6IDA7XG4gICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmNsb25lZERhdGEgJiYgT2JqZWN0LmtleXModGhpcy5jbG9uZWREYXRhKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkRGF0YSA9IHt9O1xuICAgICAgICAgICAgdGhpcy50YWJsZS5lZGl0aW5nUm93S2V5cyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYWdpbmcuZW1pdCh7IHBhZ2UsIHNpemUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZU5lc3RlZEdyaWREYXRhKGV2ZW50OiBMYXp5TG9hZEV2ZW50LCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGV2ZW50LnJvd3MgPyBldmVudC5yb3dzIDogMTA7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBldmVudC5maXJzdCA/IGV2ZW50LmZpcnN0IC8gc2l6ZSA6IDA7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBldmVudC5tdWx0aVNvcnRNZXRhIHx8IFtdO1xuXG4gICAgICAgIHJvd0RhdGEubmVzdGVkR3JpZExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLm5lc3RlZEZ1bmN0aW9uKHsgcGFnZSwgc2l6ZSwgc29ydCB9LCByb3dEYXRhKTtcbiAgICB9XG5cbiAgICBvblRhYihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgZm9jdXNhYmxlcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICdwLWNlbGxFZGl0b3IgaW5wdXQsIHAtY2VsbEVkaXRvciB0ZXh0YXJlYSwgcC1jZWxsRWRpdG9yIFt0YWJpbmRleD1cIjBcIl0nXG4gICAgICAgICAgICApXG4gICAgICAgICkuZmlsdGVyKGVsID0+IGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZm9jdXNhYmxlcy5pbmRleE9mKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgbGV0IG5leHQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgbmV4dCA9IGZvY3VzYWJsZXNbY3VycmVudEluZGV4IC0gMV0gfHwgZm9jdXNhYmxlc1tmb2N1c2FibGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCA9IGZvY3VzYWJsZXNbY3VycmVudEluZGV4ICsgMV0gfHwgZm9jdXNhYmxlc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICBuZXh0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHB1YmxpYyBnZXRSb3dJbmRleCgpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXMucGFnZSB8fCAwO1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcy5zaXplIHx8IDA7XG4gICAgICAgIHJldHVybiBwYWdlICogc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnZVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemUgPz8gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlblJvd0RldGFpbHMoaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9wZW5EZXRhaWxzLmVtaXQoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFkZCgpIHtcbiAgICAgICAgdGhpcy5hZGQuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRWRpdFNhdmUoKSB7XG4gICAgICAgIHRoaXMuc2F2ZUFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FZGl0Q2FuY2VsKCkge1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyb3cpID0+IHJvdy5pZCA9PT0gZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YVtpbmRleF0gPSB0aGlzLmNsb25lZERhdGFbZGF0YS5pZF07XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2xvbmVkRGF0YVtkYXRhLmlkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFibGUuY2FuY2VsUm93RWRpdChkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0QWxsUm93c0VkaXQoKSB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0gPSB7IC4uLmRhdGEgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmVBbGxSb3dzKCkge1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb25lZERhdGFbZGF0YS5pZF0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jbG9uZWREYXRhW2RhdGEuaWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50YWJsZS5jYW5jZWxSb3dFZGl0KGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMuZ3JpZERhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRSb3dEYXRhKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGFuUHJvcChvYmo6IGFueSwgcGF0aDogYW55LCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHlwZSA9IHR5cGU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy51dGlscy5nZXRQcm9wKG9iaiwgcGF0aCwgdHlwZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJzxzcGFuPjA8L3NwYW4+JyAgJiYgdHlwZSA9PT0gJ2RlY2ltYWwnKSB7XG4gICAgICAgICAgIHJldHVybiAnPHNwYW4+MCwwMDwvc3Bhbj4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb2JqLnRpcG9zRGFkb3MpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ01PTkVUQVJJTycgPT09IG9iai50aXBvc0RhZG9zW3BhdGhdKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1IkICcgKyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ1BFUkNFTlRVQUwnID09PSBvYmoudGlwb3NEYWRvc1twYXRoXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgJyAlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEhvdGtleXMoKSB7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UuYWRkKFxuICAgICAgICAgICAgbmV3IEhvdGtleShcbiAgICAgICAgICAgICAgICAnYWx0K3NoaWZ0K24nLFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFkZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbJ0lOUFVUJywgJ1NFTEVDVCcsICdURVhUQVJFQSddXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYXJhbXMge1xuICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBzb3J0PzogU29ydE1ldGFbXTtcbiAgICBmaWx0ZXJRdWVyeT86IHN0cmluZztcbiAgICBkaXNwbGF5RmllbGRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9keVBhcmFtcyB7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgIHNpemU/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IHN0cmluZztcbiAgICBmaWx0ZXI/OiBzdHJpbmc7XG4gICAgZGlzcGxheWZpZWxkcz86IHN0cmluZztcbn1cbiJdfQ==
@@ -3,9 +3,8 @@ import { NgModule } from '@angular/core';
3
3
  import { TranslateModule } from '@ngx-translate/core';
4
4
  import { GridEditableNestedComponent } from './grid-editable-nested.component';
5
5
  import { TableModule as PrimeTableModule } from 'primeng/table';
6
- import { ButtonModule, LoadingStateModule, LocaleModule, NumberInputModule, TableModule, TooltipModule, BreadcrumbModule, ControlErrorsModule, CustomFieldsModule, DynamicFormModule, EmptyStateModule, TokenListModule, TieredMenuModule } from '@seniorsistemas/angular-components';
6
+ import { ButtonModule, LoadingStateModule, LocaleModule, NumberInputModule, TableModule, TooltipModule, BreadcrumbModule, ControlErrorsModule, CustomFieldsModule, DynamicFormModule, EmptyStateModule, TokenListModule, } from '@seniorsistemas/angular-components';
7
7
  import { ToastModule } from 'primeng/toast';
8
- import { TabMenuModule } from 'primeng/tabmenu';
9
8
  import { PanelModule } from 'primeng/panel';
10
9
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
10
  import { CommonModule } from '@angular/common';
@@ -13,7 +12,6 @@ import { InputTextModule } from 'primeng/inputtext';
13
12
  import { ConfirmDialogModule } from 'primeng/confirmdialog';
14
13
  import { CalendarModule } from 'primeng/calendar';
15
14
  import { DropdownModule } from 'primeng/dropdown';
16
- import { TabViewModule } from 'primeng/tabview';
17
15
  import { SharedModule } from 'primeng/api';
18
16
  import { TooltipModule as PrimeTooltipModule } from 'primeng/tooltip';
19
17
  import { AutoCompleteModule } from 'primeng/autocomplete';
@@ -37,13 +35,10 @@ GridEditableNestedModule = __decorate([
37
35
  DynamicFormModule,
38
36
  EmptyStateModule,
39
37
  TokenListModule,
40
- TieredMenuModule,
41
38
  // PrimeNG modules
42
39
  ToastModule,
43
40
  PrimeTableModule,
44
41
  PrimeTooltipModule,
45
- TabMenuModule,
46
- TabViewModule,
47
42
  PanelModule,
48
43
  InputTextModule,
49
44
  ConfirmDialogModule,
@@ -66,4 +61,4 @@ GridEditableNestedModule = __decorate([
66
61
  })
67
62
  ], GridEditableNestedModule);
68
63
  export { GridEditableNestedModule };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0YWJsZS1uZXN0ZWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9ncmlkLWVkaXRhYmxlLW5lc3RlZC9ncmlkLWVkaXRhYmxlLW5lc3RlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUNILFlBQVksRUFDWixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGdCQUFnQixFQUNuQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxJQUFJLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBK0NsRCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtDQUFHLENBQUE7QUFBM0Isd0JBQXdCO0lBN0NwQyxRQUFRLENBQUM7UUFDTixPQUFPLEVBQUU7WUFDTCxZQUFZO1lBQ1osWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUN2QixlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsZ0JBQWdCO1lBRWhCLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsYUFBYTtZQUNiLFdBQVc7WUFDWCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxjQUFjO1lBQ2QsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBRWQsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxtQkFBbUI7U0FDdEI7UUFDRCxZQUFZLEVBQUU7WUFDViwyQkFBMkI7U0FDOUI7UUFDRCxTQUFTLEVBQUUsRUFBRTtRQUNiLE9BQU8sRUFBRTtZQUNMLDJCQUEyQjtTQUM5QjtLQUNKLENBQUM7R0FDVyx3QkFBd0IsQ0FBRztTQUEzQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEdyaWRFZGl0YWJsZU5lc3RlZENvbXBvbmVudCB9IGZyb20gJy4vZ3JpZC1lZGl0YWJsZS1uZXN0ZWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIGFzIFByaW1lVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcblxuaW1wb3J0IHtcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgTG9hZGluZ1N0YXRlTW9kdWxlLFxuICAgIExvY2FsZU1vZHVsZSxcbiAgICBOdW1iZXJJbnB1dE1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgQ29udHJvbEVycm9yc01vZHVsZSxcbiAgICBDdXN0b21GaWVsZHNNb2R1bGUsXG4gICAgRHluYW1pY0Zvcm1Nb2R1bGUsXG4gICAgRW1wdHlTdGF0ZU1vZHVsZSxcbiAgICBUb2tlbkxpc3RNb2R1bGUsXG4gICAgVGllcmVkTWVudU1vZHVsZVxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IFRhYk1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYm1lbnUnO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhbmVsJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBUYWJWaWV3TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJ2aWV3JztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgYXMgUHJpbWVUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIExvY2FsZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgICBUYWJsZU1vZHVsZSxcbiAgICAgICAgVG9vbHRpcE1vZHVsZSxcbiAgICAgICAgTG9hZGluZ1N0YXRlTW9kdWxlLFxuICAgICAgICBOdW1iZXJJbnB1dE1vZHVsZSxcbiAgICAgICAgQnJlYWRjcnVtYk1vZHVsZSxcbiAgICAgICAgQ29udHJvbEVycm9yc01vZHVsZSxcbiAgICAgICAgQ3VzdG9tRmllbGRzTW9kdWxlLFxuICAgICAgICBEeW5hbWljRm9ybU1vZHVsZSxcbiAgICAgICAgRW1wdHlTdGF0ZU1vZHVsZSxcbiAgICAgICAgVG9rZW5MaXN0TW9kdWxlLFxuICAgICAgICBUaWVyZWRNZW51TW9kdWxlLFxuXG4gICAgICAgIC8vIFByaW1lTkcgbW9kdWxlc1xuICAgICAgICBUb2FzdE1vZHVsZSxcbiAgICAgICAgUHJpbWVUYWJsZU1vZHVsZSxcbiAgICAgICAgUHJpbWVUb29sdGlwTW9kdWxlLFxuICAgICAgICBUYWJNZW51TW9kdWxlLFxuICAgICAgICBUYWJWaWV3TW9kdWxlLFxuICAgICAgICBQYW5lbE1vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxuICAgICAgICBDYWxlbmRhck1vZHVsZSxcbiAgICAgICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIFNoYXJlZE1vZHVsZSxcbiAgICAgICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBDaGVja2JveE1vZHVsZSxcblxuICAgICAgICAvLyBBbmd1bGFyIG1vZHVsZXNcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBHcmlkRWRpdGFibGVOZXN0ZWRDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgR3JpZEVkaXRhYmxlTmVzdGVkQ29tcG9uZW50LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRFZGl0YWJsZU5lc3RlZE1vZHVsZSB7fVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0YWJsZS1uZXN0ZWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9ncmlkLWVkaXRhYmxlLW5lc3RlZC9ncmlkLWVkaXRhYmxlLW5lc3RlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEUsT0FBTyxFQUNILFlBQVksRUFDWixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxHQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQTRDbEQsSUFBYSx3QkFBd0IsR0FBckMsTUFBYSx3QkFBd0I7Q0FBRyxDQUFBO0FBQTNCLHdCQUF3QjtJQTFDcEMsUUFBUSxDQUFDO1FBQ04sT0FBTyxFQUFFO1lBQ0wsWUFBWTtZQUNaLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDdkIsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUVmLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsY0FBYztZQUNkLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsY0FBYztZQUVkLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsbUJBQW1CO1NBQ3RCO1FBQ0QsWUFBWSxFQUFFO1lBQ1YsMkJBQTJCO1NBQzlCO1FBQ0QsU0FBUyxFQUFFLEVBQUU7UUFDYixPQUFPLEVBQUU7WUFDTCwyQkFBMkI7U0FDOUI7S0FDSixDQUFDO0dBQ1csd0JBQXdCLENBQUc7U0FBM0Isd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHcmlkRWRpdGFibGVOZXN0ZWRDb21wb25lbnQgfSBmcm9tICcuL2dyaWQtZWRpdGFibGUtbmVzdGVkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSBhcyBQcmltZVRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5cbmltcG9ydCB7XG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIExvYWRpbmdTdGF0ZU1vZHVsZSxcbiAgICBMb2NhbGVNb2R1bGUsXG4gICAgTnVtYmVySW5wdXRNb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIENvbnRyb2xFcnJvcnNNb2R1bGUsXG4gICAgQ3VzdG9tRmllbGRzTW9kdWxlLFxuICAgIER5bmFtaWNGb3JtTW9kdWxlLFxuICAgIEVtcHR5U3RhdGVNb2R1bGUsXG4gICAgVG9rZW5MaXN0TW9kdWxlLFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSBhcyBQcmltZVRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgQ2hlY2tib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NoZWNrYm94JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTG9jYWxlTW9kdWxlLmZvckNoaWxkKCksXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIFRhYmxlTW9kdWxlLFxuICAgICAgICBUb29sdGlwTW9kdWxlLFxuICAgICAgICBMb2FkaW5nU3RhdGVNb2R1bGUsXG4gICAgICAgIE51bWJlcklucHV0TW9kdWxlLFxuICAgICAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JzTW9kdWxlLFxuICAgICAgICBDdXN0b21GaWVsZHNNb2R1bGUsXG4gICAgICAgIER5bmFtaWNGb3JtTW9kdWxlLFxuICAgICAgICBFbXB0eVN0YXRlTW9kdWxlLFxuICAgICAgICBUb2tlbkxpc3RNb2R1bGUsXG5cbiAgICAgICAgLy8gUHJpbWVORyBtb2R1bGVzXG4gICAgICAgIFRvYXN0TW9kdWxlLFxuICAgICAgICBQcmltZVRhYmxlTW9kdWxlLFxuICAgICAgICBQcmltZVRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFBhbmVsTW9kdWxlLFxuICAgICAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgICAgIENvbmZpcm1EaWFsb2dNb2R1bGUsXG4gICAgICAgIENhbGVuZGFyTW9kdWxlLFxuICAgICAgICBEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgU2hhcmVkTW9kdWxlLFxuICAgICAgICBBdXRvQ29tcGxldGVNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuXG4gICAgICAgIC8vIEFuZ3VsYXIgbW9kdWxlc1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEdyaWRFZGl0YWJsZU5lc3RlZENvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW10sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBHcmlkRWRpdGFibGVOZXN0ZWRDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZEVkaXRhYmxlTmVzdGVkTW9kdWxlIHt9XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { __decorate } from "tslib";
1
+ import { __awaiter, __decorate } from "tslib";
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { Component, Injectable, Input, Output, EventEmitter } from '@angular/core';
4
4
  import { EnumProcessamentoStatus, EnumProcessamentoStatusTranslationMap } from './processamento';
@@ -36,7 +36,12 @@ let PainelProcessamentoComponent = class PainelProcessamentoComponent {
36
36
  this.processingProgress = '0%';
37
37
  this.totalRecords = this.params.registros.length;
38
38
  this.pendingCount = this.totalRecords;
39
- this.processRecord(0);
39
+ if (this.params.quantidadeChamadasSimultaneas > 1) {
40
+ this.processAllRecordsWithPLimit();
41
+ }
42
+ else {
43
+ this.syncProcessRecord(0);
44
+ }
40
45
  }
41
46
  initGrid() {
42
47
  this.gridData = [];
@@ -46,7 +51,21 @@ let PainelProcessamentoComponent = class PainelProcessamentoComponent {
46
51
  label: registro.descricao
47
52
  }));
48
53
  }
49
- processRecord(index) {
54
+ updateRowSuccess(row, index) {
55
+ this.successCount++;
56
+ this.pendingCount--;
57
+ this.updateRowStatus(row, EnumProcessamentoStatus.SUCCESS);
58
+ this.processado.emit(row);
59
+ this.updateProgressBar();
60
+ }
61
+ updateRowError(row, index, message) {
62
+ this.failedCount++;
63
+ this.pendingCount--;
64
+ this.updateRowStatus(row, EnumProcessamentoStatus.FAILED, message);
65
+ this.processado.emit(row);
66
+ this.updateProgressBar();
67
+ }
68
+ syncProcessRecord(index) {
50
69
  if (this.pendingCount < 1) {
51
70
  this.concluido.emit('ok');
52
71
  return;
@@ -57,19 +76,11 @@ let PainelProcessamentoComponent = class PainelProcessamentoComponent {
57
76
  if (record.apiEnvio) {
58
77
  record.apiEnvio(record.objEnvio)
59
78
  .subscribe(() => {
60
- this.successCount++;
61
- this.pendingCount--;
62
- this.updateRowStatus(row, EnumProcessamentoStatus.SUCCESS);
63
- this.processado.emit(row);
64
- this.updateProgressBar();
65
- this.processRecord(index + 1);
79
+ this.updateRowSuccess(row, index);
80
+ this.syncProcessRecord(index + 1);
66
81
  }, (error) => {
67
- this.failedCount++;
68
- this.pendingCount--;
69
- this.updateRowStatus(row, EnumProcessamentoStatus.FAILED, error.message);
70
- this.processado.emit(row);
71
- this.updateProgressBar();
72
- this.processRecord(index + 1);
82
+ this.updateRowError(row, index, error.message);
83
+ this.syncProcessRecord(index + 1);
73
84
  });
74
85
  }
75
86
  else {
@@ -80,6 +91,30 @@ let PainelProcessamentoComponent = class PainelProcessamentoComponent {
80
91
  this.concluido.emit('erro');
81
92
  }
82
93
  }
94
+ processAllRecordsWithPLimit() {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const pLimit = require('p-limit');
97
+ const limit = pLimit(this.params.quantidadeChamadasSimultaneas);
98
+ const promises = this.params.registros.map((record, index) => {
99
+ return limit(() => __awaiter(this, void 0, void 0, function* () {
100
+ const row = this.gridData.find(item => item.registro === record);
101
+ this.updateRowStatus(row, EnumProcessamentoStatus.PROCESSING);
102
+ try {
103
+ const result = yield record.apiEnvio(record.objEnvio).toPromise();
104
+ this.updateRowSuccess(row, index);
105
+ return { success: true, record, result };
106
+ }
107
+ catch (error) {
108
+ this.updateRowError(row, index, error.message);
109
+ return { success: false, record, error };
110
+ }
111
+ }));
112
+ });
113
+ const results = yield Promise.all(promises);
114
+ this.concluido.emit(results);
115
+ return results;
116
+ });
117
+ }
83
118
  updateProgressBar() {
84
119
  const successWidth = (this.successCount / this.totalRecords) * 100;
85
120
  const failedWidth = (this.failedCount / this.totalRecords) * 100;
@@ -173,4 +208,4 @@ PainelProcessamentoComponent = __decorate([
173
208
  })
174
209
  ], PainelProcessamentoComponent);
175
210
  export { PainelProcessamentoComponent };
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wYWluZWwtcHJvY2Vzc2FtZW50by9wYWluZWwtcHJvY2Vzc2FtZW50by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQ0FBcUMsRUFBeUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4SSxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBVWpGLElBQWEsNEJBQTRCLEdBQXpDLE1BQWEsNEJBQTRCO0lBb0JyQyxZQUNxQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWxCdEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFDckIsY0FBUyxHQUFHLENBQUMsQ0FBQztJQUlqQixDQUFDO0lBRUwsUUFBUTtRQUNK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QUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0lBQ0QsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLDJCQUEyQjtRQUNyQyx5NEZBQW9EOztLQUVyRCxDQUFDO0dBQ1csNEJBQTRCLENBdUt4QztTQXZLWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdGFibGUsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cywgRW51bVByb2Nlc3NhbWVudG9TdGF0dXNUcmFuc2xhdGlvbk1hcCwgUHJvY2Vzc2FtZW50b0dyaWQsIFByb2Nlc3NhbWVudG9JbnB1dCB9IGZyb20gJy4vcHJvY2Vzc2FtZW50byc7XG5pbXBvcnQgeyBDb2x1bW4sIEVudW1Db2x1bW5GaWVsZFR5cGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rtc3gtcGFpbmVsLXByb2Nlc3NhbWVudG8nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWluZWwtcHJvY2Vzc2FtZW50by5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhaW5lbFByb2Nlc3NhbWVudG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgcGFyYW1zOiBQcm9jZXNzYW1lbnRvSW5wdXQ7XG4gICAgQE91dHB1dCgpIHByb2Nlc3NhZG8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGNvbmNsdWlkbyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBncmlkRGF0YTogUHJvY2Vzc2FtZW50b0dyaWRbXTtcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnM6IENvbHVtbltdO1xuXG4gICAgcHVibGljIHRvdGFsUmVjb3JkcyA9IDA7XG4gICAgcHVibGljIHN1Y2Nlc3NDb3VudCA9IDA7XG4gICAgcHVibGljIGZhaWxlZENvdW50ID0gMDtcbiAgICBwdWJsaWMgcGVuZGluZ0NvdW50ID0gMDtcbiAgICBwdWJsaWMgc3VjY2Vzc1Byb2dyZXNzID0gJzAlJztcbiAgICBwdWJsaWMgZmFpbGVkUHJvZ3Jlc3MgPSAnMCUnO1xuICAgIHB1YmxpYyBwZW5kaW5nUHJvZ3Jlc3MgPSAnMTAwJSc7XG4gICAgcHVibGljIHByb2Nlc3NpbmdQcm9ncmVzcyA9ICcwJSc7XG4gICAgcHVibGljIHNvcnRGaWVsZCA9ICdzdGF0dXMnO1xuICAgIHB1YmxpYyBzb3J0T3JkZXIgPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRQYW5lbCgpO1xuICAgIH1cblxuICAgIGluaXRQYW5lbCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IHRoaXMuZ2V0R3JpZENvbHVtbigpO1xuICAgICAgICB0aGlzLmluaXRHcmlkKCk7XG4gICAgICAgIHRoaXMuaW5pdFByb2dyZXNzQmFyKCk7XG4gICAgfVxuXG4gICAgaW5pdFByb2dyZXNzQmFyKCkge1xuICAgICAgICB0aGlzLnN1Y2Nlc3NQcm9ncmVzcyA9ICcwJSc7XG4gICAgICAgIHRoaXMuZmFpbGVkUHJvZ3Jlc3MgPSAnMCUnO1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9ncmVzcyA9ICcxMDAlJztcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nUHJvZ3Jlc3MgPSAnMCUnO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucGFyYW1zLnJlZ2lzdHJvcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucGVuZGluZ0NvdW50ID0gdGhpcy50b3RhbFJlY29yZHM7XG4gICAgICAgIHRoaXMucHJvY2Vzc1JlY29yZCgwKTtcbiAgICB9XG5cbiAgICBpbml0R3JpZCgpIHtcbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmdyaWREYXRhID0gdGhpcy5wYXJhbXMucmVnaXN0cm9zLm1hcChyZWdpc3RybyA9PiAoe1xuICAgICAgICAgICAgcmVnaXN0cm8sXG4gICAgICAgICAgICBzdGF0dXM6IEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgICAgICBsYWJlbDogcmVnaXN0cm8uZGVzY3JpY2FvXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NSZWNvcmQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wZW5kaW5nQ291bnQgPCAxKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmNsdWlkby5lbWl0KCdvaycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHRoaXMuZ3JpZERhdGFbaW5kZXhdLCBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5QUk9DRVNTSU5HKTtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gdGhpcy5wYXJhbXMucmVnaXN0cm9zW2luZGV4XTtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5yZWdpc3RybyA9PT0gcmVjb3JkKTtcblxuICAgICAgICBpZiAocmVjb3JkLmFwaUVudmlvKSB7XG4gICAgICAgICAgICByZWNvcmQuYXBpRW52aW8ocmVjb3JkLm9iakVudmlvKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0NvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdywgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc2Fkby5lbWl0KHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVjb3JkKGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWxlZENvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0NvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdywgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuRkFJTEVELCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzYWRvLmVtaXQocm93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzc0JhcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NSZWNvcmQoaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mYWlsZWRDb3VudCA9IHRoaXMucGVuZGluZ0NvdW50O1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQ291bnQgPSAwO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSb3dTdGF0dXMocm93LFxuICAgICAgICAgICAgICAgICBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5GQUlMRUQsXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgndG1zeF9jb20udG1zeF9hbmd1bGFyX2NvbXBvbmVudHMucGFpbmVsX3Byb2Nlc3NhbWVudG9fYXBpX2Vycm9yJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByb2dyZXNzQmFyKCk7XG4gICAgICAgICAgICB0aGlzLmNvbmNsdWlkby5lbWl0KCdlcnJvJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByb2dyZXNzQmFyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdWNjZXNzV2lkdGggPSAodGhpcy5zdWNjZXNzQ291bnQgLyB0aGlzLnRvdGFsUmVjb3JkcykgKiAxMDA7XG4gICAgICAgIGNvbnN0IGZhaWxlZFdpZHRoID0gKHRoaXMuZmFpbGVkQ291bnQgLyB0aGlzLnRvdGFsUmVjb3JkcykgKiAxMDA7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdXaWR0aCA9ICh0aGlzLnBlbmRpbmdDb3VudCAvIHRoaXMudG90YWxSZWNvcmRzKSAqIDEwMDtcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nUHJvZ3Jlc3MgPSBgJHsoc3VjY2Vzc1dpZHRoICsgZmFpbGVkV2lkdGgpfSVgO1xuXG4gICAgICAgIHRoaXMuc3VjY2Vzc1Byb2dyZXNzID0gYCR7c3VjY2Vzc1dpZHRofSVgO1xuICAgICAgICB0aGlzLmZhaWxlZFByb2dyZXNzID0gYCR7ZmFpbGVkV2lkdGh9JWA7XG4gICAgICAgIHRoaXMucGVuZGluZ1Byb2dyZXNzID0gYCR7cGVuZGluZ1dpZHRofSVgO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSb3dTdGF0dXMocm93OiBhbnksIHN0YXR1czogRW51bVByb2Nlc3NhbWVudG9TdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgcm93LnN0YXR1cyA9IHN0YXR1cztcbiAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJvdy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnRHcmlkRGF0YSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEdyaWREYXRhKCkge1xuICAgICAgICB0aGlzLmdyaWREYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXNPcmRlciA9IHtcbiAgICAgICAgICAgICAgICBbRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuRkFJTEVEXTogMSxcbiAgICAgICAgICAgICAgICBbRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuUFJPQ0VTU0lOR106IDIsXG4gICAgICAgICAgICAgICAgW0VudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlNVQ0NFU1NdOiAzLFxuICAgICAgICAgICAgICAgIFtFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5QRU5ESU5HXTogNFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNvcnRGaWVsZCA9PT0gJ3N0YXR1cycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHN0YXR1c09yZGVyW2Euc3RhdHVzIGFzIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzXSAtIHN0YXR1c09yZGVyW2Iuc3RhdHVzIGFzIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzXSkgKiB0aGlzLnNvcnRPcmRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsQSA9IGFbdGhpcy5zb3J0RmllbGRdIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbEIgPSBiW3RoaXMuc29ydEZpZWxkXSB8fCAnJztcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsQS5sb2NhbGVDb21wYXJlKHZhbEIpICogdGhpcy5zb3J0T3JkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAoZmllbGQgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgICBsZXQgdGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoRW51bVByb2Nlc3NhbWVudG9TdGF0dXNUcmFuc2xhdGlvbk1hcFtyb3dEYXRhLnN0YXR1cyBhcyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1c10pO1xuICAgICAgICAgICAgaWYgKHJvd0RhdGEubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRleHQgKz0gYDogJHtyb3dEYXRhLm1lc3NhZ2V9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dEYXRhW2ZpZWxkXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2xhc3NTdGF0dXMocm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChmaWVsZCAhPT0gJ3N0YXR1cycpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICBgc3RhdHVzICR7cm93RGF0YVtmaWVsZF0udG9Mb3dlckNhc2UoKX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcmlkQ29sdW1uKCk6IENvbHVtbltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLnJlZ2lzdHJvJyksXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgd2lkdGg6ICc1MCUnIH0sXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdzdGF0dXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgndG1zeF9jb20udG1zeF9hbmd1bGFyX2NvbXBvbmVudHMuc3RhdHVzJyksXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgd2lkdGg6ICc1MCUnIH0sXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkdcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuIl19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wYWluZWwtcHJvY2Vzc2FtZW50by9wYWluZWwtcHJvY2Vzc2FtZW50by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQ0FBcUMsRUFBeUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4SSxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBVWpGLElBQWEsNEJBQTRCLEdBQXpDLE1BQWEsNEJBQTRCO0lBb0JyQyxZQUNxQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWxCdEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFDckIsY0FBUyxHQUFHLENBQUMsQ0FBQztJQUlqQixDQUFDO0lBRUwsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV0QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3RDO2FBQU07WUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRCxRQUFRO1lBQ1IsTUFBTSxFQUFFLHVCQUF1QixDQUFDLE9BQU87WUFDdkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1NBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVEsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFRLEVBQUUsS0FBYSxFQUFFLE9BQWU7UUFDM0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWE7UUFDbkMsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBRWpFLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNqQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7aUJBQy9CLFNBQVMsQ0FDTixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FDSixDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFDbkIsdUJBQXVCLENBQUMsTUFBTSxFQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpRUFBaUUsQ0FBQyxDQUM1RixDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUssMkJBQTJCOztZQUMvQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNELE9BQU8sS0FBSyxDQUFDLEdBQVMsRUFBRTtvQkFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO29CQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDOUQsSUFBSTt3QkFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7cUJBQzFDO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztxQkFDMUM7Z0JBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7S0FBQTtJQUVPLGlCQUFpQjtRQUNyQixNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNuRSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNqRSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxZQUFZLEdBQUcsQ0FBQztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsV0FBVyxHQUFHLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLFlBQVksR0FBRyxDQUFDO0lBQzlDLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBUSxFQUFFLE1BQStCLEVBQUUsT0FBZ0I7UUFDOUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxPQUFPLEVBQUU7WUFDVCxHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FBRztnQkFDaEIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2FBQ3ZDLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO2dCQUM3QixPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFpQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFpQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ2pJO2lCQUFNO2dCQUNILE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDcEQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBWSxFQUFFLEtBQWE7UUFDdEMsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3BCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLE9BQU8sQ0FBQyxNQUFpQyxDQUFDLENBQUMsQ0FBQztZQUNwSCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQztZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVksRUFBRSxLQUFhO1FBQzdDLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBUSxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFTSxhQUFhO1FBQ2hCLE9BQU87WUFDSDtnQkFDSSxLQUFLLEVBQUUsT0FBTztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUM7Z0JBQzNFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ3ZCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO2FBQ25DO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO2dCQUN6RSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUN2QixVQUFVLEVBQUUsRUFBRTtnQkFDZCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsTUFBTTthQUNuQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQTs7WUFyTG1DLGdCQUFnQjs7O0FBbkJ2QztJQUFSLEtBQUssRUFBRTs0REFBNEI7QUFDMUI7SUFBVCxNQUFNLEVBQUU7Z0VBQWlDO0FBQ2hDO0lBQVQsTUFBTSxFQUFFOytEQUFnQztBQUpoQyw0QkFBNEI7SUFSeEMsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztJQUNELFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSwyQkFBMkI7UUFDckMseTRGQUFvRDs7S0FFckQsQ0FBQztHQUNXLDRCQUE0QixDQTBNeEM7U0ExTVksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMsIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzVHJhbnNsYXRpb25NYXAsIFByb2Nlc3NhbWVudG9HcmlkLCBQcm9jZXNzYW1lbnRvSW5wdXQgfSBmcm9tICcuL3Byb2Nlc3NhbWVudG8nO1xuaW1wb3J0IHsgQ29sdW1uLCBFbnVtQ29sdW1uRmllbGRUeXBlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0bXN4LXBhaW5lbC1wcm9jZXNzYW1lbnRvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhaW5lbC1wcm9jZXNzYW1lbnRvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYWluZWxQcm9jZXNzYW1lbnRvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHBhcmFtczogUHJvY2Vzc2FtZW50b0lucHV0O1xuICAgIEBPdXRwdXQoKSBwcm9jZXNzYWRvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjb25jbHVpZG8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgZ3JpZERhdGE6IFByb2Nlc3NhbWVudG9HcmlkW107XG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBDb2x1bW5bXTtcblxuICAgIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuICAgIHB1YmxpYyBzdWNjZXNzQ291bnQgPSAwO1xuICAgIHB1YmxpYyBmYWlsZWRDb3VudCA9IDA7XG4gICAgcHVibGljIHBlbmRpbmdDb3VudCA9IDA7XG4gICAgcHVibGljIHN1Y2Nlc3NQcm9ncmVzcyA9ICcwJSc7XG4gICAgcHVibGljIGZhaWxlZFByb2dyZXNzID0gJzAlJztcbiAgICBwdWJsaWMgcGVuZGluZ1Byb2dyZXNzID0gJzEwMCUnO1xuICAgIHB1YmxpYyBwcm9jZXNzaW5nUHJvZ3Jlc3MgPSAnMCUnO1xuICAgIHB1YmxpYyBzb3J0RmllbGQgPSAnc3RhdHVzJztcbiAgICBwdWJsaWMgc29ydE9yZGVyID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0UGFuZWwoKTtcbiAgICB9XG5cbiAgICBpbml0UGFuZWwoKSB7XG4gICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSB0aGlzLmdldEdyaWRDb2x1bW4oKTtcbiAgICAgICAgdGhpcy5pbml0R3JpZCgpO1xuICAgICAgICB0aGlzLmluaXRQcm9ncmVzc0JhcigpO1xuICAgIH1cblxuICAgIGluaXRQcm9ncmVzc0JhcigpIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzUHJvZ3Jlc3MgPSAnMCUnO1xuICAgICAgICB0aGlzLmZhaWxlZFByb2dyZXNzID0gJzAlJztcbiAgICAgICAgdGhpcy5wZW5kaW5nUHJvZ3Jlc3MgPSAnMTAwJSc7XG4gICAgICAgIHRoaXMucHJvY2Vzc2luZ1Byb2dyZXNzID0gJzAlJztcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBhcmFtcy5yZWdpc3Ryb3MubGVuZ3RoO1xuICAgICAgICB0aGlzLnBlbmRpbmdDb3VudCA9IHRoaXMudG90YWxSZWNvcmRzO1xuXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcy5xdWFudGlkYWRlQ2hhbWFkYXNTaW11bHRhbmVhcyA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0FsbFJlY29yZHNXaXRoUExpbWl0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNQcm9jZXNzUmVjb3JkKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEdyaWQoKSB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHRoaXMucGFyYW1zLnJlZ2lzdHJvcy5tYXAocmVnaXN0cm8gPT4gKHtcbiAgICAgICAgICAgIHJlZ2lzdHJvLFxuICAgICAgICAgICAgc3RhdHVzOiBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5QRU5ESU5HLFxuICAgICAgICAgICAgbGFiZWw6IHJlZ2lzdHJvLmRlc2NyaWNhb1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSb3dTdWNjZXNzKHJvdzogYW55LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgIHRoaXMucGVuZGluZ0NvdW50LS07XG4gICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdywgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuU1VDQ0VTUyk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2Fkby5lbWl0KHJvdyk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVJvd0Vycm9yKHJvdzogYW55LCBpbmRleDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mYWlsZWRDb3VudCsrO1xuICAgICAgICB0aGlzLnBlbmRpbmdDb3VudC0tO1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyhyb3csIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLkZBSUxFRCwgbWVzc2FnZSk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2Fkby5lbWl0KHJvdyk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNQcm9jZXNzUmVjb3JkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NvdW50IDwgMSkge1xuICAgICAgICAgICAgdGhpcy5jb25jbHVpZG8uZW1pdCgnb2snKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyh0aGlzLmdyaWREYXRhW2luZGV4XSwgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuUFJPQ0VTU0lORyk7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IHRoaXMucGFyYW1zLnJlZ2lzdHJvc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZChpdGVtID0+IGl0ZW0ucmVnaXN0cm8gPT09IHJlY29yZCk7XG5cbiAgICAgICAgaWYgKHJlY29yZC5hcGlFbnZpbykge1xuICAgICAgICAgICAgcmVjb3JkLmFwaUVudmlvKHJlY29yZC5vYmpFbnZpbylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSb3dTdWNjZXNzKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jUHJvY2Vzc1JlY29yZChpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm93RXJyb3Iocm93LCBpbmRleCwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNQcm9jZXNzUmVjb3JkKGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmFpbGVkQ291bnQgPSB0aGlzLnBlbmRpbmdDb3VudDtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NvdW50ID0gMDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdyxcbiAgICAgICAgICAgICAgICAgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuRkFJTEVELFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLnBhaW5lbF9wcm9jZXNzYW1lbnRvX2FwaV9lcnJvcicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzc0JhcigpO1xuICAgICAgICAgICAgdGhpcy5jb25jbHVpZG8uZW1pdCgnZXJybycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcHJvY2Vzc0FsbFJlY29yZHNXaXRoUExpbWl0KCkge1xuICAgICAgY29uc3QgcExpbWl0ID0gcmVxdWlyZSgncC1saW1pdCcpO1xuICAgICAgY29uc3QgbGltaXQgPSBwTGltaXQodGhpcy5wYXJhbXMucXVhbnRpZGFkZUNoYW1hZGFzU2ltdWx0YW5lYXMpO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLnBhcmFtcy5yZWdpc3Ryb3MubWFwKChyZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBsaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5yZWdpc3RybyA9PT0gcmVjb3JkKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyhyb3csIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlBST0NFU1NJTkcpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWNvcmQuYXBpRW52aW8ocmVjb3JkLm9iakVudmlvKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3VjY2Vzcyhyb3csIGluZGV4KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHJlY29yZCwgcmVzdWx0IH07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93RXJyb3Iocm93LCBpbmRleCwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgcmVjb3JkLCBlcnJvciB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICB0aGlzLmNvbmNsdWlkby5lbWl0KHJlc3VsdHMpO1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcm9ncmVzc0JhcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc1dpZHRoID0gKHRoaXMuc3VjY2Vzc0NvdW50IC8gdGhpcy50b3RhbFJlY29yZHMpICogMTAwO1xuICAgICAgICBjb25zdCBmYWlsZWRXaWR0aCA9ICh0aGlzLmZhaWxlZENvdW50IC8gdGhpcy50b3RhbFJlY29yZHMpICogMTAwO1xuICAgICAgICBjb25zdCBwZW5kaW5nV2lkdGggPSAodGhpcy5wZW5kaW5nQ291bnQgLyB0aGlzLnRvdGFsUmVjb3JkcykgKiAxMDA7XG4gICAgICAgIHRoaXMucHJvY2Vzc2luZ1Byb2dyZXNzID0gYCR7KHN1Y2Nlc3NXaWR0aCArIGZhaWxlZFdpZHRoKX0lYDtcblxuICAgICAgICB0aGlzLnN1Y2Nlc3NQcm9ncmVzcyA9IGAke3N1Y2Nlc3NXaWR0aH0lYDtcbiAgICAgICAgdGhpcy5mYWlsZWRQcm9ncmVzcyA9IGAke2ZhaWxlZFdpZHRofSVgO1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9ncmVzcyA9IGAke3BlbmRpbmdXaWR0aH0lYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUm93U3RhdHVzKHJvdzogYW55LCBzdGF0dXM6IEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHJvdy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICByb3cubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zb3J0R3JpZERhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRHcmlkRGF0YSgpIHtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzT3JkZXIgPSB7XG4gICAgICAgICAgICAgICAgW0VudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLkZBSUxFRF06IDEsXG4gICAgICAgICAgICAgICAgW0VudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlBST0NFU1NJTkddOiAyLFxuICAgICAgICAgICAgICAgIFtFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5TVUNDRVNTXTogMyxcbiAgICAgICAgICAgICAgICBbRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuUEVORElOR106IDRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5zb3J0RmllbGQgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0dXNPcmRlclthLnN0YXR1cyBhcyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1c10gLSBzdGF0dXNPcmRlcltiLnN0YXR1cyBhcyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1c10pICogdGhpcy5zb3J0T3JkZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbEEgPSBhW3RoaXMuc29ydEZpZWxkXSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxCID0gYlt0aGlzLnNvcnRGaWVsZF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbEEubG9jYWxlQ29tcGFyZSh2YWxCKSAqIHRoaXMuc29ydE9yZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF0YShyb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpZWxkID09PSAnc3RhdHVzJykge1xuICAgICAgICAgICAgbGV0IHRleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzVHJhbnNsYXRpb25NYXBbcm93RGF0YS5zdGF0dXMgYXMgRW51bVByb2Nlc3NhbWVudG9TdGF0dXNdKTtcbiAgICAgICAgICAgIGlmIChyb3dEYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ICs9IGA6ICR7cm93RGF0YS5tZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93RGF0YVtmaWVsZF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsYXNzU3RhdHVzKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAoZmllbGQgIT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAgYHN0YXR1cyAke3Jvd0RhdGFbZmllbGRdLnRvTG93ZXJDYXNlKCl9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JpZENvbHVtbigpOiBDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdsYWJlbCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd0bXN4X2NvbS50bXN4X2FuZ3VsYXJfY29tcG9uZW50cy5yZWdpc3RybycpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiAnNTAlJyB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLnN0YXR1cycpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiAnNTAlJyB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==