@seniorsistemas/tmsx-angular-components 1.0.0 → 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.
- package/bundles/seniorsistemas-tmsx-angular-components.umd.js +75 -22
- package/bundles/seniorsistemas-tmsx-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-tmsx-angular-components.umd.min.js +1 -15
- package/bundles/seniorsistemas-tmsx-angular-components.umd.min.js.map +1 -1
- package/components/painel-processamento/painel-processamento.component.d.ts +4 -1
- package/esm2015/components/grid-editable-nested/grid-editable-nested.component.js +2 -2
- package/esm2015/components/grid-editable-nested/grid-editable-nested.module.js +2 -7
- package/esm2015/components/painel-processamento/painel-processamento.component.js +51 -16
- package/esm5/components/grid-editable-nested/grid-editable-nested.component.js +2 -2
- package/esm5/components/grid-editable-nested/grid-editable-nested.module.js +2 -7
- package/esm5/components/painel-processamento/painel-processamento.component.js +70 -16
- package/fesm2015/seniorsistemas-tmsx-angular-components.js +53 -22
- package/fesm2015/seniorsistemas-tmsx-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-tmsx-angular-components.js +72 -22
- package/fesm5/seniorsistemas-tmsx-angular-components.js.map +1 -1
- package/package.json +4 -4
- package/seniorsistemas-tmsx-angular-components.metadata.json +1 -1
|
@@ -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,
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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.
|
|
61
|
-
this.
|
|
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.
|
|
68
|
-
this.
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL3Rtc3gtYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wYWluZWwtcHJvY2Vzc2FtZW50by9wYWluZWwtcHJvY2Vzc2FtZW50by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQ0FBcUMsRUFBeUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4SSxPQUFPLEVBQVUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBVWpGLElBQWEsNEJBQTRCLEdBQXpDLE1BQWEsNEJBQTRCO0lBb0JyQyxZQUNxQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWxCdEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxRQUFRLENBQUM7UUFDckIsY0FBUyxHQUFHLENBQUMsQ0FBQztJQUlqQixDQUFDO0lBRUwsUUFBUTtRQUNK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QVUsRUFBRSxFQUFFO2dCQUNkLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO2FBQ25DO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO2dCQUN6RSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUN2QixVQUFVLEVBQUUsRUFBRTtnQkFDZCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsTUFBTTthQUNuQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQTs7WUFyTG1DLGdCQUFnQjs7O0FBbkJ2QztJQUFSLEtBQUssRUFBRTs0REFBNEI7QUFDMUI7SUFBVCxNQUFNLEVBQUU7Z0VBQWlDO0FBQ2hDO0lBQVQsTUFBTSxFQUFFOytEQUFnQztBQUpoQyw0QkFBNEI7SUFSeEMsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztJQUNELFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSwyQkFBMkI7UUFDckMseTRGQUFvRDs7S0FFckQsQ0FBQztHQUNXLDRCQUE0QixDQTBNeEM7U0ExTVksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMsIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzVHJhbnNsYXRpb25NYXAsIFByb2Nlc3NhbWVudG9HcmlkLCBQcm9jZXNzYW1lbnRvSW5wdXQgfSBmcm9tICcuL3Byb2Nlc3NhbWVudG8nO1xuaW1wb3J0IHsgQ29sdW1uLCBFbnVtQ29sdW1uRmllbGRUeXBlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0bXN4LXBhaW5lbC1wcm9jZXNzYW1lbnRvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhaW5lbC1wcm9jZXNzYW1lbnRvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFpbmVsLXByb2Nlc3NhbWVudG8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYWluZWxQcm9jZXNzYW1lbnRvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHBhcmFtczogUHJvY2Vzc2FtZW50b0lucHV0O1xuICAgIEBPdXRwdXQoKSBwcm9jZXNzYWRvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjb25jbHVpZG8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgZ3JpZERhdGE6IFByb2Nlc3NhbWVudG9HcmlkW107XG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBDb2x1bW5bXTtcblxuICAgIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuICAgIHB1YmxpYyBzdWNjZXNzQ291bnQgPSAwO1xuICAgIHB1YmxpYyBmYWlsZWRDb3VudCA9IDA7XG4gICAgcHVibGljIHBlbmRpbmdDb3VudCA9IDA7XG4gICAgcHVibGljIHN1Y2Nlc3NQcm9ncmVzcyA9ICcwJSc7XG4gICAgcHVibGljIGZhaWxlZFByb2dyZXNzID0gJzAlJztcbiAgICBwdWJsaWMgcGVuZGluZ1Byb2dyZXNzID0gJzEwMCUnO1xuICAgIHB1YmxpYyBwcm9jZXNzaW5nUHJvZ3Jlc3MgPSAnMCUnO1xuICAgIHB1YmxpYyBzb3J0RmllbGQgPSAnc3RhdHVzJztcbiAgICBwdWJsaWMgc29ydE9yZGVyID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0UGFuZWwoKTtcbiAgICB9XG5cbiAgICBpbml0UGFuZWwoKSB7XG4gICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSB0aGlzLmdldEdyaWRDb2x1bW4oKTtcbiAgICAgICAgdGhpcy5pbml0R3JpZCgpO1xuICAgICAgICB0aGlzLmluaXRQcm9ncmVzc0JhcigpO1xuICAgIH1cblxuICAgIGluaXRQcm9ncmVzc0JhcigpIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzUHJvZ3Jlc3MgPSAnMCUnO1xuICAgICAgICB0aGlzLmZhaWxlZFByb2dyZXNzID0gJzAlJztcbiAgICAgICAgdGhpcy5wZW5kaW5nUHJvZ3Jlc3MgPSAnMTAwJSc7XG4gICAgICAgIHRoaXMucHJvY2Vzc2luZ1Byb2dyZXNzID0gJzAlJztcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnBhcmFtcy5yZWdpc3Ryb3MubGVuZ3RoO1xuICAgICAgICB0aGlzLnBlbmRpbmdDb3VudCA9IHRoaXMudG90YWxSZWNvcmRzO1xuXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcy5xdWFudGlkYWRlQ2hhbWFkYXNTaW11bHRhbmVhcyA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0FsbFJlY29yZHNXaXRoUExpbWl0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNQcm9jZXNzUmVjb3JkKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEdyaWQoKSB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHRoaXMucGFyYW1zLnJlZ2lzdHJvcy5tYXAocmVnaXN0cm8gPT4gKHtcbiAgICAgICAgICAgIHJlZ2lzdHJvLFxuICAgICAgICAgICAgc3RhdHVzOiBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5QRU5ESU5HLFxuICAgICAgICAgICAgbGFiZWw6IHJlZ2lzdHJvLmRlc2NyaWNhb1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSb3dTdWNjZXNzKHJvdzogYW55LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgIHRoaXMucGVuZGluZ0NvdW50LS07XG4gICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdywgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuU1VDQ0VTUyk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2Fkby5lbWl0KHJvdyk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVJvd0Vycm9yKHJvdzogYW55LCBpbmRleDogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mYWlsZWRDb3VudCsrO1xuICAgICAgICB0aGlzLnBlbmRpbmdDb3VudC0tO1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyhyb3csIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLkZBSUxFRCwgbWVzc2FnZSk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2Fkby5lbWl0KHJvdyk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3NCYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNQcm9jZXNzUmVjb3JkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NvdW50IDwgMSkge1xuICAgICAgICAgICAgdGhpcy5jb25jbHVpZG8uZW1pdCgnb2snKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyh0aGlzLmdyaWREYXRhW2luZGV4XSwgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuUFJPQ0VTU0lORyk7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IHRoaXMucGFyYW1zLnJlZ2lzdHJvc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZChpdGVtID0+IGl0ZW0ucmVnaXN0cm8gPT09IHJlY29yZCk7XG5cbiAgICAgICAgaWYgKHJlY29yZC5hcGlFbnZpbykge1xuICAgICAgICAgICAgcmVjb3JkLmFwaUVudmlvKHJlY29yZC5vYmpFbnZpbylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSb3dTdWNjZXNzKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zeW5jUHJvY2Vzc1JlY29yZChpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm93RXJyb3Iocm93LCBpbmRleCwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN5bmNQcm9jZXNzUmVjb3JkKGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmFpbGVkQ291bnQgPSB0aGlzLnBlbmRpbmdDb3VudDtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NvdW50ID0gMDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3RhdHVzKHJvdyxcbiAgICAgICAgICAgICAgICAgRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuRkFJTEVELFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLnBhaW5lbF9wcm9jZXNzYW1lbnRvX2FwaV9lcnJvcicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9ncmVzc0JhcigpO1xuICAgICAgICAgICAgdGhpcy5jb25jbHVpZG8uZW1pdCgnZXJybycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcHJvY2Vzc0FsbFJlY29yZHNXaXRoUExpbWl0KCkge1xuICAgICAgY29uc3QgcExpbWl0ID0gcmVxdWlyZSgncC1saW1pdCcpO1xuICAgICAgY29uc3QgbGltaXQgPSBwTGltaXQodGhpcy5wYXJhbXMucXVhbnRpZGFkZUNoYW1hZGFzU2ltdWx0YW5lYXMpO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLnBhcmFtcy5yZWdpc3Ryb3MubWFwKChyZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBsaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5yZWdpc3RybyA9PT0gcmVjb3JkKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVJvd1N0YXR1cyhyb3csIEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlBST0NFU1NJTkcpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWNvcmQuYXBpRW52aW8ocmVjb3JkLm9iakVudmlvKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93U3VjY2Vzcyhyb3csIGluZGV4KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHJlY29yZCwgcmVzdWx0IH07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93RXJyb3Iocm93LCBpbmRleCwgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgcmVjb3JkLCBlcnJvciB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICB0aGlzLmNvbmNsdWlkby5lbWl0KHJlc3VsdHMpO1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcm9ncmVzc0JhcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc1dpZHRoID0gKHRoaXMuc3VjY2Vzc0NvdW50IC8gdGhpcy50b3RhbFJlY29yZHMpICogMTAwO1xuICAgICAgICBjb25zdCBmYWlsZWRXaWR0aCA9ICh0aGlzLmZhaWxlZENvdW50IC8gdGhpcy50b3RhbFJlY29yZHMpICogMTAwO1xuICAgICAgICBjb25zdCBwZW5kaW5nV2lkdGggPSAodGhpcy5wZW5kaW5nQ291bnQgLyB0aGlzLnRvdGFsUmVjb3JkcykgKiAxMDA7XG4gICAgICAgIHRoaXMucHJvY2Vzc2luZ1Byb2dyZXNzID0gYCR7KHN1Y2Nlc3NXaWR0aCArIGZhaWxlZFdpZHRoKX0lYDtcblxuICAgICAgICB0aGlzLnN1Y2Nlc3NQcm9ncmVzcyA9IGAke3N1Y2Nlc3NXaWR0aH0lYDtcbiAgICAgICAgdGhpcy5mYWlsZWRQcm9ncmVzcyA9IGAke2ZhaWxlZFdpZHRofSVgO1xuICAgICAgICB0aGlzLnBlbmRpbmdQcm9ncmVzcyA9IGAke3BlbmRpbmdXaWR0aH0lYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUm93U3RhdHVzKHJvdzogYW55LCBzdGF0dXM6IEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHJvdy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICByb3cubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zb3J0R3JpZERhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRHcmlkRGF0YSgpIHtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzT3JkZXIgPSB7XG4gICAgICAgICAgICAgICAgW0VudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLkZBSUxFRF06IDEsXG4gICAgICAgICAgICAgICAgW0VudW1Qcm9jZXNzYW1lbnRvU3RhdHVzLlBST0NFU1NJTkddOiAyLFxuICAgICAgICAgICAgICAgIFtFbnVtUHJvY2Vzc2FtZW50b1N0YXR1cy5TVUNDRVNTXTogMyxcbiAgICAgICAgICAgICAgICBbRW51bVByb2Nlc3NhbWVudG9TdGF0dXMuUEVORElOR106IDRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5zb3J0RmllbGQgPT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0dXNPcmRlclthLnN0YXR1cyBhcyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1c10gLSBzdGF0dXNPcmRlcltiLnN0YXR1cyBhcyBFbnVtUHJvY2Vzc2FtZW50b1N0YXR1c10pICogdGhpcy5zb3J0T3JkZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbEEgPSBhW3RoaXMuc29ydEZpZWxkXSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxCID0gYlt0aGlzLnNvcnRGaWVsZF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbEEubG9jYWxlQ29tcGFyZSh2YWxCKSAqIHRoaXMuc29ydE9yZGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGF0YShyb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpZWxkID09PSAnc3RhdHVzJykge1xuICAgICAgICAgICAgbGV0IHRleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KEVudW1Qcm9jZXNzYW1lbnRvU3RhdHVzVHJhbnNsYXRpb25NYXBbcm93RGF0YS5zdGF0dXMgYXMgRW51bVByb2Nlc3NhbWVudG9TdGF0dXNdKTtcbiAgICAgICAgICAgIGlmIChyb3dEYXRhLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0ZXh0ICs9IGA6ICR7cm93RGF0YS5tZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93RGF0YVtmaWVsZF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsYXNzU3RhdHVzKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAoZmllbGQgIT09ICdzdGF0dXMnKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAgYHN0YXR1cyAke3Jvd0RhdGFbZmllbGRdLnRvTG93ZXJDYXNlKCl9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JpZENvbHVtbigpOiBDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6ICdsYWJlbCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd0bXN4X2NvbS50bXN4X2FuZ3VsYXJfY29tcG9uZW50cy5yZWdpc3RybycpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiAnNTAlJyB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3Rtc3hfY29tLnRtc3hfYW5ndWxhcl9jb21wb25lbnRzLnN0YXR1cycpLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiAnNTAlJyB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==
|