UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

134 lines 19.3 kB
import { Component, Input, Optional } from '@angular/core'; import { toMoment } from '../../resources/types/nae-date-type'; import { DATE_TIME_FORMAT_STRING } from '../../moment/time-formats'; import { CaseMetaField } from '../../header/case-header/case-menta-enum'; import { AbstractPanelWithImmediateDataComponent } from '../abstract/panel-with-immediate-data'; import { take } from 'rxjs/operators'; import { getImmediateData } from '../../utility/get-immediate-data'; import { PermissionType } from '../../process/permissions'; import { FormControl } from '@angular/forms'; import * as i0 from "@angular/core"; import * as i1 from "../../resources/engine-endpoint/case-resource.service"; import * as i2 from "../../view/case-view/service/case-view-service"; import * as i3 from "../../snack-bar/services/snack-bar.service"; import * as i4 from "@ngx-translate/core"; import * as i5 from "../../logger/services/logger.service"; import * as i6 from "../../user/services/user.service"; import * as i7 from "@angular/common"; import * as i8 from "../../authorization/permission/permission.service"; import * as i9 from "../../header/services/overflow.service"; export class AbstractCasePanelComponent extends AbstractPanelWithImmediateDataComponent { _caseResourceService; _caseViewService; _snackBarService; _translateService; _log; _userService; _currencyPipe; _permissionService; _overflowService; case_; approval; responsiveBody = true; first; last; showCasePanelIcon = true; showDeleteMenu = false; textEllipsis = false; _approvalFormControl; constructor(_caseResourceService, _caseViewService, _snackBarService, _translateService, _log, _userService, _currencyPipe, _permissionService, _overflowService) { super(_translateService, _currencyPipe, _overflowService); this._caseResourceService = _caseResourceService; this._caseViewService = _caseViewService; this._snackBarService = _snackBarService; this._translateService = _translateService; this._log = _log; this._userService = _userService; this._currencyPipe = _currencyPipe; this._permissionService = _permissionService; this._overflowService = _overflowService; this._approvalFormControl = new FormControl(); } get approvalFormControl() { return this._approvalFormControl; } show(event) { event.stopPropagation(); return false; } getFeaturedMetaValue(selectedHeader) { switch (selectedHeader.fieldIdentifier) { case CaseMetaField.MONGO_ID: return { value: this.case_.stringId, icon: undefined, type: 'meta' }; case CaseMetaField.VISUAL_ID: return { value: this.case_.visualId, icon: undefined, type: 'meta' }; case CaseMetaField.TITLE: return { value: this.case_.title, icon: undefined, type: 'meta' }; case CaseMetaField.AUTHOR: return { value: this.case_.author.fullName, icon: 'account_circle', type: 'meta' }; case CaseMetaField.CREATION_DATE: return { value: toMoment(this.case_.creationDate).format(DATE_TIME_FORMAT_STRING), icon: 'event', type: 'meta' }; } } getFeaturedImmediateValue(selectedHeader) { const immediate = getImmediateData(this.case_, selectedHeader.fieldIdentifier); return this.parseImmediateValue(immediate); } deleteCase() { this._caseResourceService.deleteCase(this.case_.stringId).pipe(take(1)).subscribe((data) => { if (data.success) { this._snackBarService.openSuccessSnackBar(data.outcome.message === undefined ? this._translateService.instant('tasks.snackbar.caseDeleteSuccess') : data.outcome.message); this._caseViewService.reload(); } else if (data.error) { this.throwError(this._translateService.instant('tasks.snackbar.caseDeleteFailed')); } }, error => { this.throwError(this._translateService.instant('tasks.snackbar.caseDeleteFailed')); }); } canDelete() { return this._permissionService.hasCasePermission(this.case_, PermissionType.DELETE); } throwError(message) { this._snackBarService.openErrorSnackBar(message); this._log.error(message); } getMinWidth() { return (this._overflowService && this._overflowService.overflowMode) ? `${this._overflowService.columnWidth}px` : '0'; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractCasePanelComponent, deps: [{ token: i1.CaseResourceService }, { token: i2.CaseViewService }, { token: i3.SnackBarService }, { token: i4.TranslateService }, { token: i5.LoggerService }, { token: i6.UserService }, { token: i7.CurrencyPipe }, { token: i8.PermissionService }, { token: i9.OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractCasePanelComponent, selector: "ncc-abstract-case-panel", inputs: { case_: "case_", approval: "approval", responsiveBody: "responsiveBody", first: "first", last: "last", showCasePanelIcon: "showCasePanelIcon", showDeleteMenu: "showDeleteMenu", textEllipsis: "textEllipsis" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractCasePanelComponent, decorators: [{ type: Component, args: [{ selector: 'ncc-abstract-case-panel', template: '' }] }], ctorParameters: () => [{ type: i1.CaseResourceService }, { type: i2.CaseViewService }, { type: i3.SnackBarService }, { type: i4.TranslateService }, { type: i5.LoggerService }, { type: i6.UserService }, { type: i7.CurrencyPipe }, { type: i8.PermissionService }, { type: i9.OverflowService, decorators: [{ type: Optional }] }], propDecorators: { case_: [{ type: Input }], approval: [{ type: Input }], responsiveBody: [{ type: Input }], first: [{ type: Input }], last: [{ type: Input }], showCasePanelIcon: [{ type: Input }], showDeleteMenu: [{ type: Input }], textEllipsis: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY2FzZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3BhbmVsL2Nhc2UtcGFuZWwvYWJzdHJhY3QtY2FzZS1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFPdkUsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFOUYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBS2xFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBTTNDLE1BQU0sT0FBZ0IsMEJBQTJCLFNBQVEsdUNBQXVDO0lBYTVEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDWTtJQWxCNUIsS0FBSyxDQUFPO0lBQ1osUUFBUSxDQUFVO0lBQ3pCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsS0FBSyxDQUFVO0lBQ2YsSUFBSSxDQUFVO0lBQ2QsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNwQixvQkFBb0Is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LDBCQUEwQixnVEFGbEMsRUFBRTs7NEZBRU0sMEJBQTBCO2tCQUovQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkFzQjBCLFFBQVE7eUNBbEJmLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FzZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlJztcbmltcG9ydCB7dG9Nb21lbnR9IGZyb20gJy4uLy4uL3Jlc291cmNlcy90eXBlcy9uYWUtZGF0ZS10eXBlJztcbmltcG9ydCB7SGVhZGVyQ29sdW1ufSBmcm9tICcuLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1jb2x1bW4nO1xuaW1wb3J0IHtEQVRFX1RJTUVfRk9STUFUX1NUUklOR30gZnJvbSAnLi4vLi4vbW9tZW50L3RpbWUtZm9ybWF0cyc7XG5pbXBvcnQge0Nhc2VNZXRhRmllbGR9IGZyb20gJy4uLy4uL2hlYWRlci9jYXNlLWhlYWRlci9jYXNlLW1lbnRhLWVudW0nO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge0Nhc2VWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vdmlldy9jYXNlLXZpZXcvc2VydmljZS9jYXNlLXZpZXctc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge092ZXJmbG93U2VydmljZX0gZnJvbSAnLi4vLi4vaGVhZGVyL3NlcnZpY2VzL292ZXJmbG93LnNlcnZpY2UnO1xuaW1wb3J0IHtBYnN0cmFjdFBhbmVsV2l0aEltbWVkaWF0ZURhdGFDb21wb25lbnR9IGZyb20gJy4uL2Fic3RyYWN0L3BhbmVsLXdpdGgtaW1tZWRpYXRlLWRhdGEnO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2dldEltbWVkaWF0ZURhdGF9IGZyb20gJy4uLy4uL3V0aWxpdHkvZ2V0LWltbWVkaWF0ZS1kYXRhJztcbmltcG9ydCB7RmVhdHVyZWRWYWx1ZX0gZnJvbSAnLi4vYWJzdHJhY3QvZmVhdHVyZWQtdmFsdWUnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge0N1cnJlbmN5UGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtQZXJtaXNzaW9uVHlwZX0gZnJvbSAnLi4vLi4vcHJvY2Vzcy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LWNhc2UtcGFuZWwnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENhc2VQYW5lbENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0UGFuZWxXaXRoSW1tZWRpYXRlRGF0YUNvbXBvbmVudCB7XG5cblxuICAgIEBJbnB1dCgpIHB1YmxpYyBjYXNlXzogQ2FzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgYXBwcm92YWw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcmVzcG9uc2l2ZUJvZHkgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGZpcnN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd0Nhc2VQYW5lbEljb24gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHNob3dEZWxldGVNZW51ID0gZmFsc2U7XG4gICAgQElucHV0KCkgdGV4dEVsbGlwc2lzID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9hcHByb3ZhbEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxib29sZWFuIHwgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2Nhc2VSZXNvdXJjZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FzZVZpZXdTZXJ2aWNlOiBDYXNlVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2N1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9vdmVyZmxvd1NlcnZpY2U6IE92ZXJmbG93U2VydmljZSwpIHtcbiAgICAgICAgc3VwZXIoX3RyYW5zbGF0ZVNlcnZpY2UsIF9jdXJyZW5jeVBpcGUsIF9vdmVyZmxvd1NlcnZpY2UpO1xuICAgICAgICB0aGlzLl9hcHByb3ZhbEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcHJvdmFsRm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2w8Ym9vbGVhbiB8IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwcm92YWxGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdyhldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGZWF0dXJlZE1ldGFWYWx1ZShzZWxlY3RlZEhlYWRlcjogSGVhZGVyQ29sdW1uKTogRmVhdHVyZWRWYWx1ZSB7XG4gICAgICAgIHN3aXRjaCAoc2VsZWN0ZWRIZWFkZXIuZmllbGRJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBjYXNlIENhc2VNZXRhRmllbGQuTU9OR09fSUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogdGhpcy5jYXNlXy5zdHJpbmdJZCwgaWNvbjogdW5kZWZpbmVkLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgY2FzZSBDYXNlTWV0YUZpZWxkLlZJU1VBTF9JRDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0aGlzLmNhc2VfLnZpc3VhbElkLCBpY29uOiB1bmRlZmluZWQsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICBjYXNlIENhc2VNZXRhRmllbGQuVElUTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogdGhpcy5jYXNlXy50aXRsZSwgaWNvbjogdW5kZWZpbmVkLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgY2FzZSBDYXNlTWV0YUZpZWxkLkFVVEhPUjpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0aGlzLmNhc2VfLmF1dGhvci5mdWxsTmFtZSwgaWNvbjogJ2FjY291bnRfY2lyY2xlJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgQ2FzZU1ldGFGaWVsZC5DUkVBVElPTl9EQVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b01vbWVudCh0aGlzLmNhc2VfLmNyZWF0aW9uRGF0ZSkuZm9ybWF0KERBVEVfVElNRV9GT1JNQVRfU1RSSU5HKSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2V2ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21ldGEnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGZWF0dXJlZEltbWVkaWF0ZVZhbHVlKHNlbGVjdGVkSGVhZGVyOiBIZWFkZXJDb2x1bW4pOiBGZWF0dXJlZFZhbHVlIHtcbiAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gZ2V0SW1tZWRpYXRlRGF0YSh0aGlzLmNhc2VfLCBzZWxlY3RlZEhlYWRlci5maWVsZElkZW50aWZpZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUltbWVkaWF0ZVZhbHVlKGltbWVkaWF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZUNhc2UoKSB7XG4gICAgICAgIHRoaXMuX2Nhc2VSZXNvdXJjZVNlcnZpY2UuZGVsZXRlQ2FzZSh0aGlzLmNhc2VfLnN0cmluZ0lkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZGF0YTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5TdWNjZXNzU25hY2tCYXIoZGF0YS5vdXRjb21lLm1lc3NhZ2UgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFza3Muc25hY2tiYXIuY2FzZURlbGV0ZVN1Y2Nlc3MnKVxuICAgICAgICAgICAgICAgICAgICA6IGRhdGEub3V0Y29tZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYXNlVmlld1NlcnZpY2UucmVsb2FkKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IodGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5jYXNlRGVsZXRlRmFpbGVkJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLnRocm93RXJyb3IodGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5jYXNlRGVsZXRlRmFpbGVkJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuRGVsZXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuaGFzQ2FzZVBlcm1pc3Npb24odGhpcy5jYXNlXywgUGVybWlzc2lvblR5cGUuREVMRVRFKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRocm93RXJyb3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0JhcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5fbG9nLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNaW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9vdmVyZmxvd1NlcnZpY2UgJiYgdGhpcy5fb3ZlcmZsb3dTZXJ2aWNlLm92ZXJmbG93TW9kZSkgPyBgJHt0aGlzLl9vdmVyZmxvd1NlcnZpY2UuY29sdW1uV2lkdGh9cHhgIDogJzAnO1xuICAgIH1cbn1cbiJdfQ==