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 

/ esm5 / 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 {?} */
var 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;
}
var NewConfigurationParamDialogComponent = /** @class */ (function () {
    function NewConfigurationParamDialogComponent(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 {?}
     */
    NewConfigurationParamDialogComponent.prototype.ngOnInit = /**
     * @return {?}
     */
    function () {
        this.logger.debug(LOG_TAG, 'Initializing...');
    };
    /**
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.show = /**
     * @return {?}
     */
    function () {
        this.prepare();
        this.display = true;
    };
    /**
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.hide = /**
     * @return {?}
     */
    function () {
        this.display = false;
    };
    /**
     * @private
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.prepare = /**
     * @private
     * @return {?}
     */
    function () {
        this.logger.debug(LOG_TAG, 'prepare called');
        // empty the fields
        this.name = '';
        this.type = null;
        this.dynamic = false;
        this.encrypted = false;
        this.value = '';
    };
    /**
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.onCancel = /**
     * @return {?}
     */
    function () {
        this.display = false;
        this.cancel.emit();
    };
    /**
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.onConfirm = /**
     * @return {?}
     */
    function () {
        if (!this.validate()) {
            return;
        }
        this.display = false;
        /** @type {?} */
        var event = {
            name: this.name,
            type: this.type.code,
            dynamic: this.dynamic,
            encrypted: this.encrypted,
            value: this.value
        };
        this.confirm.emit(event);
    };
    Object.defineProperty(NewConfigurationParamDialogComponent.prototype, "nameEditingWarningDisplay", {
        get: /**
         * @return {?}
         */
        function () {
            return this._nameEditingWarningDisplay;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(NewConfigurationParamDialogComponent.prototype, "typeEditingWarningDisplay", {
        get: /**
         * @return {?}
         */
        function () {
            return this._typeEditingWarningDisplay;
        },
        enumerable: true,
        configurable: true
    });
    /**
     * @private
     * @return {?}
     */
    NewConfigurationParamDialogComponent.prototype.validate = /**
     * @private
     * @return {?}
     */
    function () {
        /** @type {?} */
        var 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 {?}
     */
    NewConfigurationParamDialogComponent.prototype.onTypeValueChange = /**
     * @param {?} event
     * @return {?}
     */
    function (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 = function () { return [
        { type: NGXLogger },
        { type: MotifACLService }
    ]; };
    NewConfigurationParamDialogComponent.propDecorators = {
        confirm: [{ type: Output }],
        cancel: [{ type: Output }]
    };
    return NewConfigurationParamDialogComponent;
}());
export { NewConfigurationParamDialogComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNvbmZpZ3VyYXRpb24tcGFyYW0tZGlhbG9nLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW90aWYtd2ViLWFkbWluLWNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VjdGlvbnMvQ29uZmlndXJhdGlvbi9jb21wb25lbnRzL2RpYWxvZy9uZXctY29uZmlndXJhdGlvbi1wYXJhbS1kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW1ELFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0lBR2xELE9BQU8sR0FBRyx3Q0FBd0M7Ozs7QUFFeEQsMENBTUM7OztJQUxHLG9DQUFhOztJQUNiLG9DQUFhOztJQUNiLHVDQUFpQjs7SUFDakIseUNBQW1COztJQUNuQixxQ0FBYzs7Ozs7QUFHbEIsMkJBR0M7OztJQUZHLDRCQUFhOztJQUNiLDRCQUFhOztBQUdqQjtJQXNDSSw4Q0FBb0IsTUFBaUIsRUFBUyxVQUEwQjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUEvQmpFLDBCQUFxQixHQUFrQjtZQUMxQyxNQUFNO1lBQ04sT0FBTztTQUNWLENBQUM7UUFLRixjQUFTLEdBQW1CO1lBQ3hCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBQztZQUNyRCxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUM7WUFDckQsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFDO1lBQ25ELEVBQUUsSUFBSSxFQUFFLGlCQUFp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aWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HWExvZ2dlciB9IGZyb20gJ3dlYi1jb25zb2xlLWNvcmUnO1xuaW1wb3J0IHsgZGF0YVR5cGVzSW5mbyB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQnO1xuaW1wb3J0IHsgTW90aWZBQ0xTZXJ2aWNlIH0gZnJvbSAnd2ViLWNvbnNvbGUtbW90aWYtYWNsJztcblxuXG5jb25zdCBMT0dfVEFHID0gJ1tOZXdDb25maWd1cmF0aW9uUGFyYW1EaWFsb2dDb21wb25lbnRdJztcblxuZXhwb3J0IGludGVyZmFjZSBOZXdQYXJhbURpYWxvZ1Jlc3VsdCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBkeW5hbWljOiBib29sZWFuO1xuICAgIGVuY3J5cHRlZDogYm9vbGVhbjtcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRGF0YVR5cGVJdGVtIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY29kZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3dhLWNvbmZpZ3VyYXRpb24tc2VjdGlvbi1uZXctY29uZmlnLXBhcmFtLWRpYWxvZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmV3LWNvbmZpZ3VyYXRpb24tcGFyYW0tZGlhbG9nLnNjc3MnXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmV3LWNvbmZpZ3VyYXRpb24tcGFyYW0tZGlhbG9nLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5ld0NvbmZpZ3VyYXRpb25QYXJhbURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgZHJvcERvd25Cb29sZWFuVmFsdWVzOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICAgICAndHJ1ZScsXG4gICAgICAgICdmYWxzZSdcbiAgICBdO1xuXG4gICAgbnVtZXJpY0RlY2ltYWxzOiB1bmRlZmluZWQ7XG4gICAgbnVtZXJpY0Zvcm1hdDogdW5kZWZpbmVkO1xuXG4gICAgZGF0YVR5cGVzOiBEYXRhVHlwZUl0ZW1bXSA9IFtcbiAgICAgICAgeyBuYW1lOiAnamF2YS5sYW5nLlN0cmluZycsIGNvZGU6ICdqYXZhLmxhbmcuU3RyaW5nJ30sXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5Eb3VibGUnLCBjb2RlOiAnamF2YS5sYW5nLkRvdWJsZSd9LFxuICAgICAgICB7IG5hbWU6ICdqYXZhLmxhbmcuRmxvYXQnLCBjb2RlOiAnamF2YS5sYW5nLkZsb2F0J30sXG4gICAgICAgIHsgbmFtZTogJ2phdmEubGFuZy5TaG9ydCcsIGNvZGU6ICdqYXZhLmxhbmcuU2hvcnQnfSxcbiAgICAgICAgeyBuYW1lOiAnamF2YS5sYW5nLkludGVnZXInLCBjb2RlOiAnamF2YS5sYW5nLkludGVnZXInfSxcbiAgICAgICAgeyBuYW1lOiAnamF2YS5sYW5nLkxvbmcnLCBjb2RlOiAnamF2YS5sYW5nLkxvbmcnfSxcbiAgICAgICAgeyBuYW1lOiAnamF2YS5sYW5nLkJvb2xlYW4nLCBjb2RlOiAnamF2YS5sYW5nLkJvb2xlYW4nfVxuICAgIF07XG4gICAgZGVmYXVsdERhdGFUeXBlOiBEYXRhVHlwZUl0ZW0gPSB7IG5hbWU6ICdDaG9vc2UgYSBkYXRhIHR5cGUuLi4nLCBjb2RlOiBudWxsIH07XG5cbiAgICBkaXNwbGF5OiBib29sZWFuO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBEYXRhVHlwZUl0ZW07XG4gICAgZHluYW1pYzogYm9vbGVhbjtcbiAgICBlbmNyeXB0ZWQ6IGJvb2xlYW47XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBfbmFtZUVkaXRpbmdXYXJuaW5nRGlzcGxheTogYm9vbGVhbjtcbiAgICBfdHlwZUVkaXRpbmdXYXJuaW5nRGlzcGxheTogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBjb25maXJtOiBFdmVudEVtaXR0ZXI8TmV3UGFyYW1EaWFsb2dSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXIsIHB1YmxpYyBhY2xTZXJ2aWNlOk1vdGlmQUNMU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnSW5pdGlhbGl6aW5nLi4uJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJlcGFyZSgpO1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlKCkge1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdwcmVwYXJlIGNhbGxlZCcpO1xuICAgICAgICAvLyBlbXB0eSB0aGUgZmllbGRzXG4gICAgICAgIHRoaXMubmFtZSA9ICcnO1xuICAgICAgICB0aGlzLnR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLmR5bmFtaWMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbmNyeXB0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQ29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXZlbnQ6IE5ld1BhcmFtRGlhbG9nUmVzdWx0ID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLmNvZGUsXG4gICAgICAgICAgICBkeW5hbWljOiB0aGlzLmR5bmFtaWMsXG4gICAgICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuZW5jcnlwdGVkLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb25maXJtLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldCBuYW1lRWRpdGluZ1dhcm5pbmdEaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZUVkaXRpbmdXYXJuaW5nRGlzcGxheTtcbiAgICB9XG5cbiAgICBnZXQgdHlwZUVkaXRpbmdXYXJuaW5nRGlzcGxheSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGVFZGl0aW5nV2FybmluZ0Rpc3BsYXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gdHJ1ZTtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUgIHx8IHRoaXMubmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVFZGl0aW5nV2FybmluZ0Rpc3BsYXkgPSB0cnVlO1xuICAgICAgICAgICAgdmFsaWRhdGUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVFZGl0aW5nV2FybmluZ0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudHlwZSAgfHwgIXRoaXMudHlwZS5jb2RlICkge1xuICAgICAgICAgICAgdGhpcy5fdHlwZUVkaXRpbmdXYXJuaW5nRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICB2YWxpZGF0ZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdHlwZUVkaXRpbmdXYXJuaW5nRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZTtcbiAgICB9XG5cbiAgICBvblR5cGVWYWx1ZUNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm51bWVyaWNEZWNpbWFscyA9IGRhdGFUeXBlc0luZm9bdGhpcy50eXBlLmNvZGVdLmRlY2ltYWxzO1xuICAgICAgICB0aGlzLm51bWVyaWNGb3JtYXQgPSBkYXRhVHlwZXNJbmZvW3RoaXMudHlwZS5jb2RlXS5mb3JtYXQ7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICB9XG5cbn1cbiJdfQ==