Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

vipera-npm-registry / motif-web-admin-core   js

Repository URL to install this package:

Version: 0.3.1 

/ esm2015 / lib / sections / Configuration / components / dialog / new-configuration-param-dialog.js

/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
 */
import { Component, EventEmitter, Output } from '@angular/core';
import { NGXLogger } from 'web-console-core';
import { dataTypesInfo } from '../shared/shared';
import { MotifACLService } from 'web-console-motif-acl';
/** @type {?} */
const LOG_TAG = '[NewConfigurationParamDialogComponent]';
/**
 * @record
 */
export function NewParamDialogResult() { }
if (false) {
    /** @type {?} */
    NewParamDialogResult.prototype.name;
    /** @type {?} */
    NewParamDialogResult.prototype.type;
    /** @type {?} */
    NewParamDialogResult.prototype.dynamic;
    /** @type {?} */
    NewParamDialogResult.prototype.encrypted;
    /** @type {?} */
    NewParamDialogResult.prototype.value;
}
/**
 * @record
 */
function DataTypeItem() { }
if (false) {
    /** @type {?} */
    DataTypeItem.prototype.name;
    /** @type {?} */
    DataTypeItem.prototype.code;
}
export class NewConfigurationParamDialogComponent {
    /**
     * @param {?} logger
     * @param {?} aclService
     */
    constructor(logger, aclService) {
        this.logger = logger;
        this.aclService = aclService;
        this.dropDownBooleanValues = [
            'true',
            'false'
        ];
        this.dataTypes = [
            { name: 'java.lang.String', code: 'java.lang.String' },
            { name: 'java.lang.Double', code: 'java.lang.Double' },
            { name: 'java.lang.Float', code: 'java.lang.Float' },
            { name: 'java.lang.Short', code: 'java.lang.Short' },
            { name: 'java.lang.Integer', code: 'java.lang.Integer' },
            { name: 'java.lang.Long', code: 'java.lang.Long' },
            { name: 'java.lang.Boolean', code: 'java.lang.Boolean' }
        ];
        this.defaultDataType = { name: 'Choose a data type...', code: null };
        this.confirm = new EventEmitter();
        this.cancel = new EventEmitter();
    }
    /**
     * @return {?}
     */
    ngOnInit() {
        this.logger.debug(LOG_TAG, 'Initializing...');
    }
    /**
     * @return {?}
     */
    show() {
        this.prepare();
        this.display = true;
    }
    /**
     * @return {?}
     */
    hide() {
        this.display = false;
    }
    /**
     * @private
     * @return {?}
     */
    prepare() {
        this.logger.debug(LOG_TAG, 'prepare called');
        // empty the fields
        this.name = '';
        this.type = null;
        this.dynamic = false;
        this.encrypted = false;
        this.value = '';
    }
    /**
     * @return {?}
     */
    onCancel() {
        this.display = false;
        this.cancel.emit();
    }
    /**
     * @return {?}
     */
    onConfirm() {
        if (!this.validate()) {
            return;
        }
        this.display = false;
        /** @type {?} */
        const event = {
            name: this.name,
            type: this.type.code,
            dynamic: this.dynamic,
            encrypted: this.encrypted,
            value: this.value
        };
        this.confirm.emit(event);
    }
    /**
     * @return {?}
     */
    get nameEditingWarningDisplay() {
        return this._nameEditingWarningDisplay;
    }
    /**
     * @return {?}
     */
    get typeEditingWarningDisplay() {
        return this._typeEditingWarningDisplay;
    }
    /**
     * @private
     * @return {?}
     */
    validate() {
        /** @type {?} */
        let validate = true;
        if (!this.name || this.name === '') {
            this._nameEditingWarningDisplay = true;
            validate = false;
        }
        else {
            this._nameEditingWarningDisplay = false;
        }
        if (!this.type || !this.type.code) {
            this._typeEditingWarningDisplay = true;
            validate = false;
        }
        else {
            this._typeEditingWarningDisplay = false;
        }
        return validate;
    }
    /**
     * @param {?} event
     * @return {?}
     */
    onTypeValueChange(event) {
        this.value = undefined;
        this.numericDecimals = dataTypesInfo[this.type.code].decimals;
        this.numericFormat = dataTypesInfo[this.type.code].format;
        this.validate();
    }
}
NewConfigurationParamDialogComponent.decorators = [
    { type: Component, args: [{
                selector: 'wa-configuration-section-new-config-param-dialog',
                template: "<p-dialog\n  #newItemDialog\n  [(visible)]=\"display\"\n  [modal]=\"true\"\n  [responsive]=\"true\"\n  [style]=\"{ width: '450px', minWidth: '400px' }\"\n  [minY]=\"70\"\n  [baseZIndex]=\"10000\"\n>\n  <p-header> New Configuration Parameter </p-header>\n\n  <div style=\"min-width: 350px;display:flex;flex-direction: column;\">\n    \n    <kendo-textbox-container\n      floatingLabel=\"Parameter Name\"\n      style=\"width: 100%;\"\n    >\n      <input kendoTextBox [(ngModel)]=\"name\" required />\n    </kendo-textbox-container>\n    <label class=\"warning-label\" *ngIf=\"nameEditingWarningDisplay\">Invalid name</label>\n\n    <kendo-dropdownlist \n      style=\"width: 100%;padding-top:10px;\"\n      [data]=\"dataTypes\" \n      [textField]=\"'name'\"\n      [valueField]=\"'code'\"\n      [(ngModel)]=\"type\" \n      [defaultItem]=\"defaultDataType\"\n      (valueChange)=\"onTypeValueChange($event)\"\n      [valuePrimitive]=\"false\"\n      [popupSettings]=\"{ 'popupClass' : 'wa-kui-combobox-popup', 'animate' : false }\">\n    </kendo-dropdownlist>\n    <label class=\"warning-label\" *ngIf=\"typeEditingWarningDisplay\">Invalid data type</label>\n\n  <label class=\"switch-control-label\"> \n      Dynamic\n  </label>\n  <p-inputSwitch [(ngModel)]=\"dynamic\"></p-inputSwitch>\n\n\n  <label class=\"switch-control-label\"> \n      Encrypted\n  </label>\n  <p-inputSwitch [(ngModel)]=\"encrypted\"></p-inputSwitch>\n\n  <label *ngIf=\"type && type.code\" class=\"switch-control-label\"> \n      Value\n  </label>\n  <input kendoTextBox *ngIf=\"type && type.code==='java.lang.String'\" [(ngModel)]=\"value\" required />\n  <kendo-numerictextbox *ngIf=\"type && (type.code==='java.lang.Short' ||\n      type.code==='java.lang.Integer'|| type.code==='java.lang.Long' || type.code==='java.lang.Float' || type.code==='java.lang.Double')\" \n    title=\"Value\"\n    [decimals]=\"numericDecimals\"  \n    [format]=\"numericFormat\"\n    [(ngModel)]=\"value\" required></kendo-numerictextbox>\n  <kendo-dropdownlist *ngIf=\"type && type.code==='java.lang.Boolean'\" \n    [data]=\"dropDownBooleanValues\"\n    [(ngModel)]=\"value\" required></kendo-dropdownlist>\n\n</div>\n\n  <p-footer>\n    <kendo-buttongroup look=\"flat\">\n      <button kendoButton [toggleable]=\"false\" (click)=\"onCancel();\">Cancel</button>\n      <button kendoButton [toggleable]=\"false\" [primary]=\"true\" (click)=\"onConfirm();\">Create</button>\n    </kendo-buttongroup>\n  </p-footer>\n\n</p-dialog>\n",
                styles: [".wa-services-section-newitem-dialog-channel-selector{padding-top:10px}.switch-control-label{padding-top:12px;display:flex;flex-direction:column}.switch-control-button{padding-top:5px}"]
            }] }
];
/** @nocollapse */
NewConfigurationParamDialogComponent.ctorParameters = () => [
    { type: NGXLogger },
    { type: MotifACLService }
];
NewConfigurationParamDialogComponent.propDecorators = {
    confirm: [{ type: Output }],
    cancel: [{ type: Output }]
};
if (false) {
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.dropDownBooleanValues;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.numericDecimals;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.numericFormat;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.dataTypes;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.defaultDataType;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.display;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.name;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.type;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.dynamic;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.encrypted;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.value;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype._nameEditingWarningDisplay;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype._typeEditingWarningDisplay;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.confirm;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.cancel;
    /**
     * @type {?}
     * @private
     */
    NewConfigurationParamDialogComponent.prototype.logger;
    /** @type {?} */
    NewConfigurationParamDialogComponent.prototype.aclService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNvbmZpZ3VyYXRpb24tcGFyYW0tZGlhbG9nLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW90aWYtd2ViLWFkbWluLWNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VjdGlvbnMvQ29uZmlndXJhdGlvbi9jb21wb25lbnRzL2RpYWxvZy9uZXctY29uZmlndXJhdGlvbi1wYXJhbS1kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW1ELFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O01BR2xELE9BQU8sR0FBRyx3Q0FBd0M7Ozs7QUFFeEQsMENBTUM7OztJQUxHLG9DQUFhOztJQUNiLG9DQUFhOztJQUNiLHVDQUFpQjs7SUFDakIseUNBQW1COztJQUNuQixxQ0FBYzs7Ozs7QUFHbEIsMkJBR0M7OztJQUZHLDRCQUFhOztJQUNiLDRCQUFhOztBQVFqQixNQUFNLE9BQU8sb0NBQW9DOzs7OztJQWlDN0MsWUFBb0IsTUFBaUIsRUFBUyxVQUEwQjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUEvQmpFLDBCQUFxQixHQUFrQjtZQUMxQyxNQUFNO1lBQ04sT0FBTztTQUNWLENBQUM7UUFLRixjQUFTLEdBQW1CO1lBQ3hCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBQztZQUNyRCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUM7WUFDckQsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFDO1lBQ25E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O1lBQ3ZDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDcEI7YUFBTTtZQUNILElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUM7U0FDM0M7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDOUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7OztZQWpISixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGtEQUFrRDtnQkFFNUQsdzhFQUFvRDs7YUFDdkQ7Ozs7WUF4QlEsU0FBUztZQUVULGVBQWU7OztzQkFxRG5CLE1BQU07cUJBQ04sTUFBTTs7OztJQTdCUCxxRUFHRTs7SUFFRiwrREFBMkI7O0lBQzNCLDZEQUF5Qjs7SUFFekIseURBUUU7O0lBQ0YsK0RBQThFOztJQUU5RSx1REFBaUI7O0lBQ2pCLG9EQUFhOztJQUNiLG9EQUFtQjs7SUFDbkIsdURBQWlCOztJQUNqQix5REFBbUI7O0lBQ25CLHFEQUFjOztJQUNkLDBFQUFvQzs7SUFDcEMsMEVBQW9DOztJQUVwQyx1REFBMkU7O0lBQzNFLHNEQUEwRDs7Ozs7SUFFOUMsc0RBQXlCOztJQUFFLDBEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR1hMb2dnZXIgfSBmcm9tICd3ZWItY29uc29sZS1jb3JlJztcbmltcG9ydCB7IGRhdGFUeXBlc0luZm8gfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkJztcbmltcG9ydCB7IE1vdGlmQUNMU2VydmljZSB9IGZyb20gJ3dlYi1jb25zb2xlLW1vdGlmLWFjbCc7XG5cblxuY29uc3QgTE9HX1RBRyA9ICdbTmV3Q29uZmlndXJhdGlvblBhcmFtRGlhbG9nQ29tcG9uZW50XSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3UGFyYW1EaWFsb2dSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZHluYW1pYzogYm9vbGVhbjtcbiAgICBlbmNyeXB0ZWQ6IGJvb2xlYW47XG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIERhdGFUeXBlSXRlbSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNvZGU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3YS1jb25maWd1cmF0aW9uLXNlY3Rpb24tbmV3LWNvbmZpZy1wYXJhbS1kaWFsb2cnLFxuICAgIHN0eWxlVXJsczogWycuL25ldy1jb25maWd1cmF0aW9uLXBhcmFtLWRpYWxvZy5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ldy1jb25maWd1cmF0aW9uLXBhcmFtLWRpYWxvZy5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBOZXdDb25maWd1cmF0aW9uUGFyYW1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIGRyb3BEb3duQm9vbGVhblZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAgICAgJ3RydWUnLFxuICAgICAgICAnZmFsc2UnXG4gICAgXTtcblxuICAgIG51bWVyaWNEZWNpbWFsczogdW5kZWZpbmVkO1xuICAgIG51bWVyaWNGb3JtYXQ6IHVuZGVmaW5lZDtcblxuICAgIGRhdGFUeXBlczogRGF0YVR5cGVJdGVtW10gPSBbXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5TdHJpbmcnLCBjb2RlOiAnamF2YS5sYW5nLlN0cmluZyd9LFxuICAgICAgICB7IG5hbWU6ICdqYXZhLmxhbmcuRG91YmxlJywgY29kZTogJ2phdmEubGFuZy5Eb3VibGUnfSxcbiAgICAgICAgeyBuYW1lOiAnamF2YS5sYW5nLkZsb2F0JywgY29kZTogJ2phdmEubGFuZy5GbG9hdCd9LFxuICAgICAgICB7IG5hbWU6ICdqYXZhLmxhbmcuU2hvcnQnLCBjb2RlOiAnamF2YS5sYW5nLlNob3J0J30sXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5JbnRlZ2VyJywgY29kZTogJ2phdmEubGFuZy5JbnRlZ2VyJ30sXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5Mb25nJywgY29kZTogJ2phdmEubGFuZy5Mb25nJ30sXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5Cb29sZWFuJywgY29kZTogJ2phdmEubGFuZy5Cb29sZWFuJ31cbiAgICBdO1xuICAgIGRlZmF1bHREYXRhVHlwZTogRGF0YVR5cGVJdGVtID0geyBuYW1lOiAnQ2hvb3NlIGEgZGF0YSB0eXBlLi4uJywgY29kZTogbnVsbCB9O1xuXG4gICAgZGlzcGxheTogYm9vbGVhbjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogRGF0YVR5cGVJdGVtO1xuICAgIGR5bmFtaWM6IGJvb2xlYW47XG4gICAgZW5jcnlwdGVkOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgX25hbWVFZGl0aW5nV2FybmluZ0Rpc3BsYXk6IGJvb2xlYW47XG4gICAgX3R5cGVFZGl0aW5nV2FybmluZ0Rpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgY29uZmlybTogRXZlbnRFbWl0dGVyPE5ld1BhcmFtRGlhbG9nUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgY2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyLCBwdWJsaWMgYWNsU2VydmljZTpNb3RpZkFDTFNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ0luaXRpYWxpemluZy4uLicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXBhcmUoKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZSgpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAncHJlcGFyZSBjYWxsZWQnKTtcbiAgICAgICAgLy8gZW1wdHkgdGhlIGZpZWxkc1xuICAgICAgICB0aGlzLm5hbWUgPSAnJztcbiAgICAgICAgdGhpcy50eXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5keW5hbWljID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5jcnlwdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGV2ZW50OiBOZXdQYXJhbURpYWxvZ1Jlc3VsdCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZS5jb2RlLFxuICAgICAgICAgICAgZHluYW1pYzogdGhpcy5keW5hbWljLFxuICAgICAgICAgICAgZW5jcnlwdGVkOiB0aGlzLmVuY3J5cHRlZCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29uZmlybS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXQgbmFtZUVkaXRpbmdXYXJuaW5nRGlzcGxheSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWVFZGl0aW5nV2FybmluZ0Rpc3BsYXk7XG4gICAgfVxuXG4gICAgZ2V0IHR5cGVFZGl0aW5nV2FybmluZ0Rpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlRWRpdGluZ1dhcm5pbmdEaXNwbGF5O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IHRydWU7XG4gICAgICAgIGlmICghdGhpcy5uYW1lICB8fCB0aGlzLm5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lRWRpdGluZ1dhcm5pbmdEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lRWRpdGluZ1dhcm5pbmdEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnR5cGUgIHx8ICF0aGlzLnR5cGUuY29kZSApIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGVFZGl0aW5nV2FybmluZ0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICAgICAgdmFsaWRhdGUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3R5cGVFZGl0aW5nV2FybmluZ0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdGU7XG4gICAgfVxuXG4gICAgb25UeXBlVmFsdWVDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5udW1lcmljRGVjaW1hbHMgPSBkYXRhVHlwZXNJbmZvW3RoaXMudHlwZS5jb2RlXS5kZWNpbWFscztcbiAgICAgICAgdGhpcy5udW1lcmljRm9ybWF0ID0gZGF0YVR5cGVzSW5mb1t0aGlzLnR5cGUuY29kZV0uZm9ybWF0O1xuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG59XG4iXX0=