@harbor/ui
Version:
Harbor shared UI components based on Clarity and Angular6
136 lines (135 loc) • 15.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Component, EventEmitter, Output } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { ConfirmationAcknowledgement } from './confirmation-state-message';
export class ConfirmationDialogComponent {
/**
* @param {?} translate
*/
constructor(translate) {
this.translate = translate;
this.opened = false;
this.dialogTitle = '';
this.dialogContent = '';
this.confirmAction = new EventEmitter();
this.cancelAction = new EventEmitter();
this.isDelete = false;
}
/**
* @param {?} msg
* @return {?}
*/
open(msg) {
this.dialogTitle = msg.title;
this.message = msg;
this.translate.get(this.dialogTitle).subscribe((res) => this.dialogTitle = res);
this.translate.get(msg.message, { 'param': msg.param }).subscribe((res) => {
this.dialogContent = res;
});
// Open dialog
this.buttons = msg.buttons;
this.opened = true;
}
/**
* @param {?} list
* @return {?}
*/
colorChange(list) {
if (!list.loading && !list.errorState) {
return 'green';
}
else if (!list.loading && list.errorState) {
return 'red';
}
else {
return '#666';
}
}
/**
* @param {?} errorSpan
* @return {?}
*/
toggleErrorTitle(errorSpan) {
errorSpan.style.display = (errorSpan.style.display === 'none') ? 'block' : 'none';
}
/**
* @return {?}
*/
close() {
this.opened = false;
}
/**
* @return {?}
*/
cancel() {
if (!this.message) {
// Inproper condition
this.close();
return;
}
/** @type {?} */
let data = this.message.data ? this.message.data : {};
/** @type {?} */
let target = this.message.targetId ? this.message.targetId : 0 /* EMPTY */;
this.cancelAction.emit(new ConfirmationAcknowledgement(2 /* CANCEL */, data, target));
this.isDelete = false;
this.close();
}
/**
* @return {?}
*/
confirm() {
if (!this.message) { // Inproper condition
// Inproper condition
this.close();
return;
}
/** @type {?} */
let data = this.message.data ? this.message.data : {};
/** @type {?} */
let target = this.message.targetId ? this.message.targetId : 0 /* EMPTY */;
/** @type {?} */
let message = new ConfirmationAcknowledgement(1 /* CONFIRMED */, data, target);
this.confirmAction.emit(message);
this.close();
}
}
ConfirmationDialogComponent.decorators = [
{ type: Component, args: [{
selector: 'confirmation-dialog',
template: "<clr-modal [(clrModalOpen)]=\"opened\" [clrModalClosable]=\"false\" [clrModalStaticBackdrop]=\"true\">\n <h3 class=\"modal-title\" class=\"confirmation-title\" style=\"margin-top: 0px;\">{{dialogTitle}}</h3>\n <div class=\"modal-body\">\n <div class=\"confirmation-icon-inline\">\n <clr-icon shape=\"warning\" class=\"is-warning\" size=\"64\"></clr-icon>\n </div>\n <div class=\"confirmation-content\">{{dialogContent}}</div>\n </div>\n <div class=\"modal-footer\" [ngSwitch]=\"buttons\">\n <ng-template [ngSwitchCase]=\"0\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\">{{'BUTTON.CONFIRM' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"1\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\">{{'BUTTON.NO' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\">{{ 'BUTTON.YES' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\" [hidden]=\"isDelete\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"confirm()\" [hidden]=\"isDelete\">{{'BUTTON.DELETE' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"3\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"cancel()\">{{'BUTTON.CLOSE' | translate}}</button>\n </ng-template>\n <ng-template [ngSwitchCase]=\"4\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancel()\" [hidden]=\"isDelete\">{{'BUTTON.CANCEL' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"confirm()\" [hidden]=\"isDelete\">{{'BUTTON.REPLICATE' | translate}}</button>\n </ng-template>\n </div>\n</clr-modal>",
styles: [".confirmation-icon-inline{display:inline-block}.confirmation-title{line-height:24px;color:#000;font-size:22px}.confirmation-content{font-size:14px;color:#565656;line-height:24px;display:inline-block;vertical-align:middle;width:80%;white-space:pre-wrap}.batchInfoUl{padding:20px;list-style-type:none}.batchInfoUl li{line-height:24px;border-bottom:1px solid #e8e8e8}.batchInfoUl li span:first-child{padding-right:20px;width:240px;display:inline-block;color:#666;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.batchInfoUl li span:last-child{width:220px;display:inline-block;color:#666}.batchInfoUl li span i{display:inline-block;line-height:1.2em;font-size:.8em;color:#999}.batchInfoUl li span a{cursor:pointer;text-decoration:underline}"]
}] }
];
/** @nocollapse */
ConfirmationDialogComponent.ctorParameters = () => [
{ type: TranslateService }
];
ConfirmationDialogComponent.propDecorators = {
confirmAction: [{ type: Output }],
cancelAction: [{ type: Output }]
};
if (false) {
/** @type {?} */
ConfirmationDialogComponent.prototype.opened;
/** @type {?} */
ConfirmationDialogComponent.prototype.dialogTitle;
/** @type {?} */
ConfirmationDialogComponent.prototype.dialogContent;
/** @type {?} */
ConfirmationDialogComponent.prototype.message;
/** @type {?} */
ConfirmationDialogComponent.prototype.buttons;
/** @type {?} */
ConfirmationDialogComponent.prototype.confirmAction;
/** @type {?} */
ConfirmationDialogComponent.prototype.cancelAction;
/** @type {?} */
ConfirmationDialogComponent.prototype.isDelete;
/** @type {?} */
ConfirmationDialogComponent.prototype.translate;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyYm9yL3VpLyIsInNvdXJjZXMiOlsic3JjL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVczRSxNQUFNOzs7O0lBV0YsWUFDWTtRQUFBLGNBQVMsR0FBVCxTQUFTO3NCQVhaLEtBQUs7MkJBQ0EsRUFBRTs2QkFDQSxFQUFFOzZCQUlRLElBQUksWUFBWSxFQUErQjs0QkFDaEQsSUFBSSxZQUFZLEVBQStCO3dCQUM3RCxLQUFLO0tBRzJCOzs7OztJQUUzQyxJQUFJLENBQUMsR0FBd0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztTQUM1QixDQUFDLENBQUM7O1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0tBQ3RCOzs7OztJQUdELFdBQVcsQ0FBQyxJQUFlO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQyxPQUFPLE9BQU8sQ0FBQztTQUNsQjthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekMsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0tBQ0o7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsU0FBYztRQUMzQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNyRjs7OztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztLQUN2Qjs7OztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTs7WUFFZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1NBQ1Y7O1FBRUQsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7O1FBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQTBCLENBQUM7UUFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsaUJBRWxELElBQUksRUFDSixNQUFNLENBQ1QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ2hCOzs7O0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUMscUJBQXFCOztZQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1NBQ1Y7O1FBRUQsSUFBSSxJQUFJLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7O1FBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQTBCLENBQUM7O1FBQ3ZGLElBQUksT0FBTyxHQUFHLElBQUksMkJBQTJCLG9CQUV6QyxJQUFJLEVBQ0osTUFBTSxDQUNULENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDaEI7OztZQXBGSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsMmtFQUFtRDs7YUFFdEQ7Ozs7WUFaUSxnQkFBZ0I7Ozs0QkFxQnBCLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxNyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpcm1hdGlvbk1lc3NhZ2UgfSBmcm9tICcuL2NvbmZpcm1hdGlvbi1tZXNzYWdlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudCB9IGZyb20gJy4vY29uZmlybWF0aW9uLXN0YXRlLW1lc3NhZ2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU3RhdGUsIENvbmZpcm1hdGlvblRhcmdldHMsIENvbmZpcm1hdGlvbkJ1dHRvbnMgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLmNvbnN0JztcblxuaW1wb3J0IHtCYXRjaEluZm99IGZyb20gJy4vY29uZmlybWF0aW9uLWJhdGNoLW1lc3NhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NvbmZpcm1hdGlvbi1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsgJy4vY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuc2NzcycgXVxufSlcblxuZXhwb3J0IGNsYXNzIENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB7XG4gICAgb3BlbmVkID0gZmFsc2U7XG4gICAgZGlhbG9nVGl0bGUgPSAnJztcbiAgICBkaWFsb2dDb250ZW50ID0gJyc7XG4gICAgbWVzc2FnZTogQ29uZmlybWF0aW9uTWVzc2FnZTtcbiAgICBidXR0b25zOiBDb25maXJtYXRpb25CdXR0b25zO1xuXG4gICAgQE91dHB1dCgpIGNvbmZpcm1BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudD4oKTtcbiAgICBAT3V0cHV0KCkgY2FuY2VsQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maXJtYXRpb25BY2tub3dsZWRnZW1lbnQ+KCk7XG4gICAgaXNEZWxldGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAgIG9wZW4obXNnOiBDb25maXJtYXRpb25NZXNzYWdlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSBtc2cudGl0bGU7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZztcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMuZGlhbG9nVGl0bGUpLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHRoaXMuZGlhbG9nVGl0bGUgPSByZXMpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQobXNnLm1lc3NhZ2UsIHsgJ3BhcmFtJzogbXNnLnBhcmFtIH0pLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udGVudCA9IHJlcztcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE9wZW4gZGlhbG9nXG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IG1zZy5idXR0b25zO1xuICAgICAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICBjb2xvckNoYW5nZShsaXN0OiBCYXRjaEluZm8pIHtcbiAgICAgICAgaWYgKCFsaXN0LmxvYWRpbmcgJiYgIWxpc3QuZXJyb3JTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICdncmVlbic7XG4gICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubG9hZGluZyAmJiBsaXN0LmVycm9yU3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAncmVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnIzY2Nic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVFcnJvclRpdGxlKGVycm9yU3BhbjogYW55KSB7XG4gICAgICAgIGVycm9yU3Bhbi5zdHlsZS5kaXNwbGF5ID0gKGVycm9yU3Bhbi5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICB9XG5cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBJbnByb3BlciBjb25kaXRpb25cbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkYXRhOiBhbnkgPSB0aGlzLm1lc3NhZ2UuZGF0YSA/IHRoaXMubWVzc2FnZS5kYXRhIDoge307XG4gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLm1lc3NhZ2UudGFyZ2V0SWQgPyB0aGlzLm1lc3NhZ2UudGFyZ2V0SWQgOiBDb25maXJtYXRpb25UYXJnZXRzLkVNUFRZO1xuICAgICAgICB0aGlzLmNhbmNlbEFjdGlvbi5lbWl0KG5ldyBDb25maXJtYXRpb25BY2tub3dsZWRnZW1lbnQoXG4gICAgICAgICAgICBDb25maXJtYXRpb25TdGF0ZS5DQU5DRUwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgdGFyZ2V0XG4gICAgICAgICkpO1xuICAgICAgICB0aGlzLmlzRGVsZXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBjb25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZSkgey8vIElucHJvcGVyIGNvbmRpdGlvblxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMubWVzc2FnZS5kYXRhID8gdGhpcy5tZXNzYWdlLmRhdGEgOiB7fTtcbiAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMubWVzc2FnZS50YXJnZXRJZCA/IHRoaXMubWVzc2FnZS50YXJnZXRJZCA6IENvbmZpcm1hdGlvblRhcmdldHMuRU1QVFk7XG4gICAgICAgIGxldCBtZXNzYWdlID0gbmV3IENvbmZpcm1hdGlvbkFja25vd2xlZGdlbWVudChcbiAgICAgICAgICAgIENvbmZpcm1hdGlvblN0YXRlLkNPTkZJUk1FRCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB0YXJnZXRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uLmVtaXQobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG59XG4iXX0=