@knora/action
Version:
Knora ui module: action
213 lines • 27.5 kB
JavaScript
import * as tslib_1 from "tslib";
import { Component, Input } from '@angular/core';
import { Location } from '@angular/common';
import { ActivatedRoute, Router } from '@angular/router';
// import defaultMsgs from '../../assets/i18n/statusMsg.json';
import { StatusMsg } from '../../assets/i18n/statusMsg';
/**
* @ignore
* Data type for messages
*/
var KuiMessageData = /** @class */ (function () {
function KuiMessageData() {
}
return KuiMessageData;
}());
export { KuiMessageData };
/**
* Message component to handle notes, warning and error messages.
* If you set the paramater `[short]="true"` it shows a smaller message. It can be used to give feedbacks in a form e.g. update process: show success or error message.
*
*/
var MessageComponent = /** @class */ (function () {
function MessageComponent(_router, _location, _activatedRoute, _status) {
this._router = _router;
this._location = _location;
this._activatedRoute = _activatedRoute;
this._status = _status;
/**
* Message type: KuiMessageData or ApiServiceError
*
* @param {KuiMessageData | ApiServiceError} message This type needs at least a status number (0-511). In this case, or if type is ApiServiceError, it takes the default status messages from the list of HTTP status codes (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
*/
this.message = new KuiMessageData();
/**
* Show short message only: it can be used in form to show if a post was successfull or not.
*
* @param {boolean} [short]
*/
this.short = false;
/**
* Show medium message: a message box without footnote and withou links.
*
* @param {boolean} [medium]
*/
this.medium = false;
this.isLoading = true;
this.showLinks = false;
// disable message
this.disable = false;
/*
* @ignore
* default link list, which will be used in message content to give a user some possibilities
* what he can do in the case of an error
*
*/
this.links = {
title: 'You have the following possibilities now',
list: [
{
label: 'go to the start page',
route: '/',
icon: 'keyboard_arrow_right'
},
{
label: 'try to login',
route: '/login',
icon: 'keyboard_arrow_right'
},
{
label: 'go back',
route: '<--',
icon: 'keyboard_arrow_left'
}
]
};
this.footnote = {
text: 'If you think it\'s a mistake, please',
team: {
dasch: '<a href=\'https://discuss.dasch.swiss\' target=\'_blank\'> inform the DaSCH developer team.</a>'
}
};
}
MessageComponent.prototype.ngOnInit = function () {
var _this = this;
this.statusMsg = this._status.default;
if (!this.message) {
this._activatedRoute.data.subscribe(function (data) {
_this.message.status = data.status;
});
}
this.message = this.setMessage(this.message);
this.isLoading = false;
};
MessageComponent.prototype.setMessage = function (msg) {
var tmpMsg = {};
var s = msg.status === 0 ? 503 : msg.status;
tmpMsg.status = s;
tmpMsg.route = msg.route;
tmpMsg.statusMsg = msg.statusMsg;
tmpMsg.statusText = msg.statusText;
tmpMsg.route = msg.route;
tmpMsg.footnote = msg.footnote;
switch (true) {
case s > 0 && s < 300:
// the message is a note
tmpMsg.type = 'note';
tmpMsg.statusMsg =
msg.statusMsg !== undefined
? msg.statusMsg
: this.statusMsg[s].message;
tmpMsg.statusText =
msg.statusText !== undefined
? msg.statusText
: this.statusMsg[s].description;
// console.log('the message is a note');
break;
case s >= 300 && s < 400:
// the message is a warning
tmpMsg.type = 'warning';
tmpMsg.statusMsg =
msg.statusMsg !== undefined
? msg.statusMsg
: this.statusMsg[s].message;
tmpMsg.statusText =
msg.statusText !== undefined
? msg.statusText
: this.statusMsg[s].description;
// console.log('the message is a warning');
break;
case s >= 400 && s < 500:
// the message is a client side (app) error
// console.error('the message is a client side (app) error', s);
tmpMsg.type = 'error';
tmpMsg.statusMsg =
msg.statusMsg !== undefined
? msg.statusMsg
: this.statusMsg[s].message;
tmpMsg.statusText =
msg.statusText !== undefined
? msg.statusText
: this.statusMsg[s].description;
tmpMsg.footnote =
msg.footnote !== undefined
? msg.footnote
: this.footnote.text + ' ' + this.footnote.team.dasch;
this.showLinks = !this.medium;
break;
case s >= 500 && s < 600:
// the message is a server side (api) error
// console.error('the message is a server side (api) error');
tmpMsg.type = 'error';
tmpMsg.statusMsg =
msg.statusMsg !== undefined
? msg.statusMsg
: this.statusMsg[s].message;
tmpMsg.statusText =
msg.statusText !== undefined
? msg.statusText
: this.statusMsg[s].description;
tmpMsg.footnote =
this.footnote.text + ' ' + this.footnote.team.dasch;
this.showLinks = false;
break;
default:
// no default configuration?
break;
}
return tmpMsg;
};
MessageComponent.prototype.goToLocation = function (route) {
if (route === '<--') {
this._location.back();
}
else {
this._router.navigate([route]);
}
};
MessageComponent.prototype.closeMessage = function () {
this.disable = !this.disable;
};
MessageComponent.ctorParameters = function () { return [
{ type: Router },
{ type: Location },
{ type: ActivatedRoute },
{ type: StatusMsg }
]; };
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", KuiMessageData)
], MessageComponent.prototype, "message", void 0);
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Boolean)
], MessageComponent.prototype, "short", void 0);
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Boolean)
], MessageComponent.prototype, "medium", void 0);
MessageComponent = tslib_1.__decorate([
Component({
selector: 'kui-message',
template: "<mat-card *ngIf=\"!short\" class=\"fix-width kui-message\" [ngClass]=\"'kui-' + message?.type\">\n\n <mat-card-subtitle class=\"message-subtitle\">\n <span class=\"left\">{{message?.type | uppercase }} {{message?.status}} | {{message?.statusMsg}}</span>\n <!-- <mat-icon class=\"right\">{{message?.type}}</mat-icon> -->\n </mat-card-subtitle>\n\n <mat-card-title class=\"message-title\" [innerHtml]=\"message?.statusText\"></mat-card-title>\n\n <mat-card-content class=\"message-content\">\n <mat-list *ngIf=\"message?.route\">\n <mat-list-item>\n <a [href]=\"message?.route\" target=\"_blank\">\n → {{message?.route}}\n </a>\n </mat-list-item>\n </mat-list>\n\n <mat-list *ngIf=\"showLinks\">\n <p>{{links.title}}</p>\n <mat-list-item *ngFor=\"let item of links.list\" class=\"link\" (click)=\"goToLocation(item.route)\">\n <mat-icon mat-list-icon>{{item.icon}}</mat-icon>\n <p mat-line>{{item.label}}</p>\n </mat-list-item>\n </mat-list>\n\n </mat-card-content>\n\n <mat-card-footer *ngIf=\"!medium\" class=\"message-footnote\" [innerHtml]=\"message?.footnote\"></mat-card-footer>\n\n</mat-card>\n\n<mat-card *ngIf=\"short && !disable\" class=\"fix-width kui-short-message\" [ngClass]=\"'kui-' + message?.type\"\n (click)=\"closeMessage()\">\n\n <div class=\"kui-panel\">\n <span class=\"kui-short-message-text\">\n {{message?.statusText}}\n </span>\n <span class=\"fill-remaining-space\"></span>\n <!-- <button mat-icon-button (click)=\"closeMessage()\">\n <mat-icon>close</mat-icon>\n </button> -->\n </div>\n\n</mat-card>\n",
styles: [".kui-panel{display:-webkit-box;display:flex;box-sizing:border-box;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;white-space:nowrap}.fill-remaining-space{flex-basis:auto;-webkit-box-flex:1;flex-grow:1;flex-shrink:1}.kui-error{background-color:rgba(244,67,54,.5)}.kui-warning{background-color:rgba(255,196,0,.5)}.kui-hint,.kui-note{background-color:rgba(0,105,92,.4)}.kui-error,.kui-hint,.kui-note,.kui-warning{margin:12px auto;max-width:640px}.kui-error .message-subtitle,.kui-hint .message-subtitle,.kui-note .message-subtitle,.kui-warning .message-subtitle{padding-bottom:12px}.kui-error .message-subtitle .left,.kui-hint .message-subtitle .left,.kui-note .message-subtitle .left,.kui-warning .message-subtitle .left{float:left;left:16px;position:absolute;text-align:left}.kui-error .message-subtitle .right,.kui-hint .message-subtitle .right,.kui-note .message-subtitle .right,.kui-warning .message-subtitle .right{float:right;right:16px;position:absolute;text-align:right}.kui-error .message-title,.kui-hint .message-title,.kui-note .message-title,.kui-warning .message-title{padding-top:12px}.kui-error .message-content,.kui-hint .message-content,.kui-note .message-content,.kui-warning .message-content{margin-bottom:48px;margin-top:48px}.kui-error .message-content .link,.kui-hint .message-content .link,.kui-note .message-content .link,.kui-warning .message-content .link{cursor:pointer}.kui-error .message-footnote,.kui-hint .message-footnote,.kui-note .message-footnote,.kui-warning .message-footnote{padding:24px}.kui-short-message .kui-short-message-text{font-weight:bolder;text-align:center}@media (max-width:576px){.kui-panel{white-space:normal}.kui-short-message .kui-short-message-text{text-align:left}}"]
}),
tslib_1.__metadata("design:paramtypes", [Router,
Location,
ActivatedRoute,
StatusMsg])
], MessageComponent);
return MessageComponent;
}());
export { MessageComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa25vcmEvYWN0aW9uLyIsInNvdXJjZXMiOlsibGliL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0g7SUFBQTtJQVNBLENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFURCxJQVNDOztBQUVEOzs7O0dBSUc7QUFNSDtJQXFFSSwwQkFDWSxPQUFlLEVBQ2YsU0FBbUIsRUFDbkIsZUFBK0IsRUFDL0IsT0FBa0I7UUFIbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLFlBQU8sR0FBUCxPQUFPLENBQVc7UUF4RTlCOzs7O1dBSUc7UUFDTSxZQUFPLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFFeEQ7Ozs7V0FJRztRQUNNLFVBQUssR0FBYSxLQUFLLENBQUM7UUFFakM7Ozs7V0FJRztRQUNNLFdBQU0sR0FBYSxLQUFLLENBQUM7UUFPbEMsY0FBUyxHQUFZLElBQUksQ0FBQztRQUUxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLGtCQUFrQjtRQUNsQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCOzs7OztXQUtHO1FBQ0gsVUFBSyxHQUFRO1lBQ1QsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksS0FBSyxFQUFF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QWM7cURBQXdCO0lBTy9DO1FBQVIsS0FBSyxFQUFFOzttREFBeUI7SUFPeEI7UUFBUixLQUFLLEVBQUU7O29EQUEwQjtJQXBCekIsZ0JBQWdCO1FBTDVCLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLDJ4REFBdUM7O1NBRTFDLENBQUM7aURBdUV1QixNQUFNO1lBQ0osUUFBUTtZQUNGLGNBQWM7WUFDdEIsU0FBUztPQXpFckIsZ0JBQWdCLENBd0w1QjtJQUFELHVCQUFDO0NBQUEsQUF4TEQsSUF3TEM7U0F4TFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuLy8gaW1wb3J0IGRlZmF1bHRNc2dzIGZyb20gJy4uLy4uL2Fzc2V0cy9pMThuL3N0YXR1c01zZy5qc29uJztcbmltcG9ydCB7IFN0YXR1c01zZyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9pMThuL3N0YXR1c01zZyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICogRGF0YSB0eXBlIGZvciBtZXNzYWdlc1xuICovXG5leHBvcnQgY2xhc3MgS3VpTWVzc2FnZURhdGEge1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c01zZz86IHN0cmluZztcbiAgICBzdGF0dXNUZXh0Pzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgcm91dGU/OiBzdHJpbmc7XG4gICAgZm9vdG5vdGU/OiBzdHJpbmc7XG4gICAgZXJyb3JJbmZvPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXNzYWdlIGNvbXBvbmVudCB0byBoYW5kbGUgbm90ZXMsIHdhcm5pbmcgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICogSWYgeW91IHNldCB0aGUgcGFyYW1hdGVyIGBbc2hvcnRdPVwidHJ1ZVwiYCBpdCBzaG93cyBhIHNtYWxsZXIgbWVzc2FnZS4gSXQgY2FuIGJlIHVzZWQgdG8gZ2l2ZSBmZWVkYmFja3MgaW4gYSBmb3JtIGUuZy4gdXBkYXRlIHByb2Nlc3M6IHNob3cgc3VjY2VzcyBvciBlcnJvciBtZXNzYWdlLlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrdWktbWVzc2FnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lc3NhZ2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBNZXNzYWdlIHR5cGU6IEt1aU1lc3NhZ2VEYXRhIG9yIEFwaVNlcnZpY2VFcnJvclxuICAgICAqXG4gICAgICogQHBhcmFtICB7S3VpTWVzc2FnZURhdGEgfCBBcGlTZXJ2aWNlRXJyb3J9IG1lc3NhZ2UgVGhpcyB0eXBlIG5lZWRzIGF0IGxlYXN0IGEgc3RhdHVzIG51bWJlciAoMC01MTEpLiBJbiB0aGlzIGNhc2UsIG9yIGlmIHR5cGUgaXMgQXBpU2VydmljZUVycm9yLCBpdCB0YWtlcyB0aGUgZGVmYXVsdCBzdGF0dXMgbWVzc2FnZXMgZnJvbSB0aGUgbGlzdCBvZiBIVFRQIHN0YXR1cyBjb2RlcyAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9IVFRQX3N0YXR1c19jb2RlcylcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZXNzYWdlOiBLdWlNZXNzYWdlRGF0YSA9IG5ldyBLdWlNZXNzYWdlRGF0YSgpO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBzaG9ydCBtZXNzYWdlIG9ubHk6IGl0IGNhbiBiZSB1c2VkIGluIGZvcm0gdG8gc2hvdyBpZiBhIHBvc3Qgd2FzIHN1Y2Nlc3NmdWxsIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAge2Jvb2xlYW59IFtzaG9ydF1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG9ydD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgbWVkaXVtIG1lc3NhZ2U6IGEgbWVzc2FnZSBib3ggd2l0aG91dCBmb290bm90ZSBhbmQgd2l0aG91IGxpbmtzLlxuICAgICAqXG4gICAgICogQHBhcmFtICB7Ym9vbGVhbn0gW21lZGl1bV1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZWRpdW0/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyAgICBtZXNzYWdlOiBNZXNzYWdlRGF0YTtcblxuICAgIC8vIHN0YXR1c01zZzogYW55ID0gZGVmYXVsdE1zZ3M7XG4gICAgc3RhdHVzTXNnOiBhbnk7XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgc2hvd0xpbmtzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBkaXNhYmxlIG1lc3NhZ2VcbiAgICBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBkZWZhdWx0IGxpbmsgbGlzdCwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIG1lc3NhZ2UgY29udGVudCB0byBnaXZlIGEgdXNlciBzb21lIHBvc3NpYmlsaXRpZXNcbiAgICAgKiB3aGF0IGhlIGNhbiBkbyBpbiB0aGUgY2FzZSBvZiBhbiBlcnJvclxuICAgICAqXG4gICAgICovXG4gICAgbGlua3M6IGFueSA9IHtcbiAgICAgICAgdGl0bGU6ICdZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIHBvc3NpYmlsaXRpZXMgbm93JyxcbiAgICAgICAgbGlzdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnZ28gdG8gdGhlIHN0YXJ0IHBhZ2UnLFxuICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2tleWJvYXJkX2Fycm93X3JpZ2h0J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ3RyeSB0byBsb2dpbicsXG4gICAgICAgICAgICAgICAgcm91dGU6ICcvbG9naW4nLFxuICAgICAgICAgICAgICAgIGljb246ICdrZXlib2FyZF9hcnJvd19yaWdodCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdnbyBiYWNrJyxcbiAgICAgICAgICAgICAgICByb3V0ZTogJzwtLScsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2tleWJvYXJkX2Fycm93X2xlZnQnXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xuXG4gICAgZm9vdG5vdGU6IGFueSA9IHtcbiAgICAgICAgdGV4dDogJ0lmIHlvdSB0aGluayBpdFxcJ3MgYSBtaXN0YWtlLCBwbGVhc2UnLFxuICAgICAgICB0ZWFtOiB7XG4gICAgICAgICAgICBkYXNjaDpcbiAgICAgICAgICAgICAgICAnPGEgaHJlZj1cXCdodHRwczovL2Rpc2N1c3MuZGFzY2guc3dpc3NcXCcgdGFyZ2V0PVxcJ19ibGFua1xcJz4gaW5mb3JtIHRoZSBEYVNDSCBkZXZlbG9wZXIgdGVhbS48L2E+J1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yIChcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgX2xvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIF9zdGF0dXM6IFN0YXR1c01zZ1xuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdGF0dXNNc2cgPSB0aGlzLl9zdGF0dXMuZGVmYXVsdDtcblxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPSBkYXRhLnN0YXR1cztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5zZXRNZXNzYWdlKHRoaXMubWVzc2FnZSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBzZXRNZXNzYWdlKG1zZzogS3VpTWVzc2FnZURhdGEpIHtcbiAgICAgICAgY29uc3QgdG1wTXNnOiBLdWlNZXNzYWdlRGF0YSA9IDxLdWlNZXNzYWdlRGF0YT57fTtcblxuICAgICAgICBjb25zdCBzOiBudW1iZXIgPSBtc2cuc3RhdHVzID09PSAwID8gNTAzIDogbXNnLnN0YXR1cztcblxuICAgICAgICB0bXBNc2cuc3RhdHVzID0gcztcbiAgICAgICAgdG1wTXNnLnJvdXRlID0gbXNnLnJvdXRlO1xuICAgICAgICB0bXBNc2cuc3RhdHVzTXNnID0gbXNnLnN0YXR1c01zZztcbiAgICAgICAgdG1wTXNnLnN0YXR1c1RleHQgPSBtc2cuc3RhdHVzVGV4dDtcbiAgICAgICAgdG1wTXNnLnJvdXRlID0gbXNnLnJvdXRlO1xuICAgICAgICB0bXBNc2cuZm9vdG5vdGUgPSBtc2cuZm9vdG5vdGU7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIHMgPiAwICYmIHMgPCAzMDA6XG4gICAgICAgICAgICAgICAgLy8gdGhlIG1lc3NhZ2UgaXMgYSBub3RlXG4gICAgICAgICAgICAgICAgdG1wTXNnLnR5cGUgPSAnbm90ZSc7XG4gICAgICAgICAgICAgICAgdG1wTXNnLnN0YXR1c01zZyA9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5zdGF0dXNNc2cgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBtc2cuc3RhdHVzTXNnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc3RhdHVzTXNnW3NdLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG1wTXNnLnN0YXR1c1RleHQgPVxuICAgICAgICAgICAgICAgICAgICBtc2cuc3RhdHVzVGV4dCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG1zZy5zdGF0dXNUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc3RhdHVzTXNnW3NdLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGUgbWVzc2FnZSBpcyBhIG5vdGUnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgcyA+PSAzMDAgJiYgcyA8IDQwMDpcbiAgICAgICAgICAgICAgICAvLyB0aGUgbWVzc2FnZSBpcyBhIHdhcm5pbmdcbiAgICAgICAgICAgICAgICB0bXBNc2cudHlwZSA9ICd3YXJuaW5nJztcbiAgICAgICAgICAgICAgICB0bXBNc2cuc3RhdHVzTXNnID1cbiAgICAgICAgICAgICAgICAgICAgbXNnLnN0YXR1c01zZyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG1zZy5zdGF0dXNNc2dcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0dXNNc2dbc10ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0bXBNc2cuc3RhdHVzVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5zdGF0dXNUZXh0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbXNnLnN0YXR1c1RleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0dXNNc2dbc10uZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoZSBtZXNzYWdlIGlzIGEgd2FybmluZycpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHMgPj0gNDAwICYmIHMgPCA1MDA6XG4gICAgICAgICAgICAgICAgLy8gdGhlIG1lc3NhZ2UgaXMgYSBjbGllbnQgc2lkZSAoYXBwKSBlcnJvclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ3RoZSBtZXNzYWdlIGlzIGEgY2xpZW50IHNpZGUgKGFwcCkgZXJyb3InLCBzKTtcbiAgICAgICAgICAgICAgICB0bXBNc2cudHlwZSA9ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgdG1wTXNnLnN0YXR1c01zZyA9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5zdGF0dXNNc2cgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBtc2cuc3RhdHVzTXNnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc3RhdHVzTXNnW3NdLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgdG1wTXNnLnN0YXR1c1RleHQgPVxuICAgICAgICAgICAgICAgICAgICBtc2cuc3RhdHVzVGV4dCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG1zZy5zdGF0dXNUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc3RhdHVzTXNnW3NdLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIHRtcE1zZy5mb290bm90ZSA9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5mb290bm90ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG1zZy5mb290bm90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmZvb3Rub3RlLnRleHQgKyAnICcgKyB0aGlzLmZvb3Rub3RlLnRlYW0uZGFzY2g7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TGlua3MgPSAhdGhpcy5tZWRpdW07XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgcyA+PSA1MDAgJiYgcyA8IDYwMDpcbiAgICAgICAgICAgICAgICAvLyB0aGUgbWVzc2FnZSBpcyBhIHNlcnZlciBzaWRlIChhcGkpIGVycm9yXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcigndGhlIG1lc3NhZ2UgaXMgYSBzZXJ2ZXIgc2lkZSAoYXBpKSBlcnJvcicpO1xuICAgICAgICAgICAgICAgIHRtcE1zZy50eXBlID0gJ2Vycm9yJztcbiAgICAgICAgICAgICAgICB0bXBNc2cuc3RhdHVzTXNnID1cbiAgICAgICAgICAgICAgICAgICAgbXNnLnN0YXR1c01zZyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG1zZy5zdGF0dXNNc2dcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0dXNNc2dbc10ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB0bXBNc2cuc3RhdHVzVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIG1zZy5zdGF0dXNUZXh0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbXNnLnN0YXR1c1RleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0dXNNc2dbc10uZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgdG1wTXNnLmZvb3Rub3RlID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290bm90ZS50ZXh0ICsgJyAnICsgdGhpcy5mb290bm90ZS50ZWFtLmRhc2NoO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpbmtzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIG5vIGRlZmF1bHQgY29uZmlndXJhdGlvbj9cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0bXBNc2c7XG4gICAgfVxuXG4gICAgZ29Ub0xvY2F0aW9uKHJvdXRlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHJvdXRlID09PSAnPC0tJykge1xuICAgICAgICAgICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLmRpc2FibGUgPSAhdGhpcy5kaXNhYmxlO1xuICAgIH1cbn1cbiJdfQ==