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 / CountersAndThresholds / components / counter-infos-dashboard / counter-infos-dashboard-component.js

/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
 */
import { Component, ViewChild } from '@angular/core';
import { NGXLogger } from 'web-console-core';
import { WCNotificationCenter, NotificationType } from 'web-console-ui-kit';
import { saveAs } from '@progress/kendo-file-saver';
import { faFileImport, faDownload } from '@fortawesome/free-solid-svg-icons';
import { CountersService } from '@wa-motif-open-api/counters-thresholds-service';
import { WCSubscriptionHandler } from '../../../../components/Commons/wc-subscription-handler';
import { CounterInfosPaneComponent } from './panes/counter-infos-panes/counter-infos-pane-component';
import { ThresholdsPaneComponent } from './panes/thresholds-panes/thresholds-pane-component';
/** @type {?} */
const LOG_TAG = '[CounterInfosDashboard]';
/**
 * @record
 */
export function SelectionEvent() { }
if (false) {
    /** @type {?} */
    SelectionEvent.prototype.counterInfoName;
    /** @type {?} */
    SelectionEvent.prototype.data;
}
export class CounterInfosDashboardComponent {
    /**
     * @param {?} logger
     * @param {?} notificationCenter
     * @param {?} countersService
     */
    constructor(logger, notificationCenter, countersService) {
        this.logger = logger;
        this.notificationCenter = notificationCenter;
        this.countersService = countersService;
        this.faDownload = faDownload;
        this.faFileImport = faFileImport;
        this._subHandler = new WCSubscriptionHandler();
    }
    /**
     * @return {?}
     */
    ngOnInit() {
    }
    /**
     * @return {?}
     */
    ngOnDestroy() {
        this.logger.debug(LOG_TAG, 'ngOnDestroy ');
        this.freeMem();
    }
    /**
     * @return {?}
     */
    freeMem() {
        this._subHandler.unsubscribe();
    }
    /**
     * @param {?} selectionEvent
     * @return {?}
     */
    onCounterInfoSelectionChange(selectionEvent) {
        this.selectedCounterInfo = selectionEvent.counterInfoName;
    }
    /**
     * @return {?}
     */
    onExportClicked() {
        this.notificationCenter.post({
            name: 'CTExport',
            title: 'Counters & Thresholds Export',
            message: 'Exporting Counters & Thresholds...',
            type: NotificationType.Info
        });
        this._subHandler.add(this.countersService.downloadXml().subscribe((/**
         * @param {?} data
         * @return {?}
         */
        (data) => {
            this.logger.debug(LOG_TAG, 'Export done.', data);
            /** @type {?} */
            const blob = new Blob([data], { type: 'application/zip' });
            /** @type {?} */
            const fileName = 'counters_thresholds_' + new Date().getTime() + '.xml';
            this.logger.debug(LOG_TAG, 'Saving to: ', blob);
            saveAs(blob, fileName);
            // FileSaver.saveAs(blob, fileName);
            this.logger.debug(LOG_TAG, 'Log saved: ', fileName);
            this.notificationCenter.post({
                name: 'CTExport',
                title: 'Counters & Thresholds Export',
                message: 'Counter & Thresholds Exported.',
                type: NotificationType.Success
            });
        }), (/**
         * @param {?} error
         * @return {?}
         */
        (error) => {
            this.logger.error(LOG_TAG, 'Counters & Thresholds export error:', error);
            this.notificationCenter.post({
                name: 'CTExportError',
                title: 'Counters & Thresholds Export',
                message: 'Error exporting Counters & Thresholds:',
                type: NotificationType.Error,
                error: error,
                closable: true
            });
        })));
    }
    /**
     * @param {?} error
     * @return {?}
     */
    onUploadCTError(error) {
        this.notificationCenter.post({
            name: 'ImportCTError',
            title: 'Import Counters & Thresholds Error',
            message: 'Error importing Counters & Thresholds:',
            type: NotificationType.Error,
            error: error,
            closable: true
        });
    }
    /**
     * @param {?} event
     * @return {?}
     */
    uploadCT(event) {
        this.logger.debug(LOG_TAG, 'uploadAssetBundle : ', event);
        this.notificationCenter.post({
            name: 'ImportCTProgress',
            title: 'Import Counters & Thresholds',
            message: 'Importing Counters & Thresholds...',
            type: NotificationType.Info
        });
        this._subHandler.add(this.countersService.uploadXml(event.file).subscribe((/**
         * @param {?} result
         * @return {?}
         */
        (result) => {
            this._countersPane.onRefreshClicked();
            this.logger.debug(LOG_TAG, 'Bundle uploaded successfully: ', result);
            this.notificationCenter.post({
                name: 'UploadBundleSuccess',
                title: 'Upload Bundle',
                message: 'The bundle has been successfully uploaded.',
                type: NotificationType.Success
            });
        }), (/**
         * @param {?} error
         * @return {?}
         */
        (error) => {
            this.logger.error(LOG_TAG, 'Error uploading bundle: ', error);
            this.notificationCenter.post({
                name: 'UploadBundleError',
                title: 'Upload Bundle',
                message: 'Error uploading bundle:',
                type: NotificationType.Error,
                error: error,
                closable: true
            });
        })));
    }
}
CounterInfosDashboardComponent.decorators = [
    { type: Component, args: [{
                // tslint:disable-next-line:component-selector
                selector: 'wa-counter-infos-dashboard-component',
                template: "<div class=\"row spread\" title=\"\">\n    <div class=\"flex-toolbar\" style=\"display:flex;align-items: center;\">\n      <kendo-buttongroup look=\"flat\">\n        <button\n          kendoButton\n          motif-acl=\"com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:UPDATE:uploadXml\"\n          [toggleable]=\"false\"\n          (click)=\"onExportClicked()\"\n        >\n        <fa-icon [icon]=\"faDownload\"></fa-icon>Export\n        </button>\n        <button\n          kendoButton\n          motif-acl=\"com.vipera.osgi.bss.countersthresholds.api.rest.CountersThresholdsApi:READ:downloadXml\"\n          kendofileselect\n          tyle=\"file\"\n          [toggleable]=\"false\"\n          (click)=\"uploadSlideDownPanelEx.toggle()\">\n          <fa-icon [icon]=\"faFileImport\"></fa-icon>Import\n        </button>\n      </kendo-buttongroup>\n    </div>\n  </div>\n\n<div class=\"row\">\n  <wc-upload-panel #uploadSlideDownPanelEx (upload)=\"uploadCT($event)\" (uploadError)=\"onUploadCTError($event)\"></wc-upload-panel>\n</div>\n\n<div class=\"row fill\">\n  <kendo-splitter orientation=\"vertical\" style=\"border: none;\">\n    \n    <kendo-splitter-pane [scrollable]=\"false\" style=\"display:flex;\">\n        <wa-counter-infos-pane-component #countersPane [(ngModel)]=\"selectedCounterInfo\" style=\"flex:1;\"></wa-counter-infos-pane-component>\n      </kendo-splitter-pane>\n      \n      <kendo-splitter-pane [scrollable]=\"false\" style=\"display:flex;\">\n          <wa-thresholds-pane-component #thresholdsPane [counterInfo]=\"selectedCounterInfo\" style=\"flex:1;\"></wa-thresholds-pane-component>\n        </kendo-splitter-pane>\n\n    </kendo-splitter>\n\n</div>",
                styles: [".tab-sub-section-label{margin-top:10px;padding-top:10px;padding-bottom:10px}"]
            }] }
];
/** @nocollapse */
CounterInfosDashboardComponent.ctorParameters = () => [
    { type: NGXLogger },
    { type: WCNotificationCenter },
    { type: CountersService }
];
CounterInfosDashboardComponent.propDecorators = {
    _countersPane: [{ type: ViewChild, args: ['countersPane',] }],
    _thresholdsPane: [{ type: ViewChild, args: ['thresholdsPane',] }]
};
if (false) {
    /** @type {?} */
    CounterInfosDashboardComponent.prototype._countersPane;
    /** @type {?} */
    CounterInfosDashboardComponent.prototype._thresholdsPane;
    /** @type {?} */
    CounterInfosDashboardComponent.prototype.faDownload;
    /** @type {?} */
    CounterInfosDashboardComponent.prototype.faFileImport;
    /**
     * @type {?}
     * @private
     */
    CounterInfosDashboardComponent.prototype._subHandler;
    /** @type {?} */
    CounterInfosDashboardComponent.prototype.selectedCounterInfo;
    /**
     * @type {?}
     * @private
     */
    CounterInfosDashboardComponent.prototype.logger;
    /**
     * @type {?}
     * @private
     */
    CounterInfosDashboardComponent.prototype.notificationCenter;
    /**
     * @type {?}
     * @private
     */
    CounterInfosDashboardComponent.prototype.countersService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci1pbmZvcy1kYXNoYm9hcmQtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW90aWYtd2ViLWFkbWluLWNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VjdGlvbnMvQ291bnRlcnNBbmRUaHJlc2hvbGRzL2NvbXBvbmVudHMvY291bnRlci1pbmZvcy1kYXNoYm9hcmQvY291bnRlci1pbmZvcy1kYXNoYm9hcmQtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBcUIsZUFBZSxFQUEyQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzdJLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztNQUV2RixPQUFPLEdBQUcseUJBQXlCOzs7O0FBRXpDLG9DQUdDOzs7SUFGRyx5Q0FBd0I7O0lBQ3hCLDhCQUFTOztBQVNiLE1BQU0sT0FBTyw4QkFBOEI7Ozs7OztJQVl2QyxZQUNZLE1BQWlCLEVBQ2pCLGtCQUF3QyxFQUN4QyxlQUFnQztRQUZoQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FB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Z0JBQWdCLENBQUMsS0FBSztnQkFDNUIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osUUFBUSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OztZQS9ISixTQUFTLFNBQUM7O2dCQUVQLFFBQVEsRUFBRSxzQ0FBc0M7Z0JBRWhELHdyREFBdUQ7O2FBQzFEOzs7O1lBeEJRLFNBQVM7WUFDVCxvQkFBb0I7WUFNRCxlQUFlOzs7NEJBb0J0QyxTQUFTLFNBQUMsY0FBYzs4QkFDeEIsU0FBUyxTQUFDLGdCQUFnQjs7OztJQUQzQix1REFBb0U7O0lBQ3BFLHlEQUFzRTs7SUFFdEUsb0RBQXdCOztJQUN4QixzREFBNEI7Ozs7O0lBRTVCLHFEQUF5RTs7SUFFekUsNkRBQXlCOzs7OztJQUdyQixnREFBeUI7Ozs7O0lBQ3pCLDREQUFnRDs7Ozs7SUFDaEQseURBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdYTG9nZ2VyfSBmcm9tICd3ZWItY29uc29sZS1jb3JlJztcbmltcG9ydCB7IFdDTm90aWZpY2F0aW9uQ2VudGVyLCBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnd2ViLWNvbnNvbGUtdWkta2l0JztcbmltcG9ydCB7IFNlcnZpY2VDYXRhbG9nU2VsZWN0b3JEaWFsb2dDb21wb25lbnQsIFNlbGVjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9VSS9zZWxlY3RvcnMvc2VydmljZS1jYXRhbG9nLXNlbGVjdG9yL3NlcnZpY2UtY2F0YWxvZy1zZWxlY3Rvci1kaWFsb2cnO1xuaW1wb3J0IHsgU2VsZWN0aW9uRXZlbnQgYXMgQ291bnRlckluZm9TZWxlY3Rpb25FdmVudCB9IGZyb20gJy4uL2NvdW50ZXItaW5mb3MvY291bnRlci1pbmZvcy1jb21wb25lbnQnXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBXQ1VwbG9hZFBhbmVsRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL1VJL3djLXVwbG9hZC1wYW5lbC1jb21wb25lbnQnO1xuaW1wb3J0IHsgZmFGaWxlSW1wb3J0LCBmYURvd25sb2FkIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IENvdW50ZXJJbmZvRW50aXR5LCBDb3VudGVyc1NlcnZpY2UsIENvdW50ZXJJbmZvLCBDb3VudGVySW5mb1VwZGF0YWJsZUZpZWxkcyB9IGZyb20gJ0B3YS1tb3RpZi1vcGVuLWFwaS9jb3VudGVycy10aHJlc2hvbGRzLXNlcnZpY2UnO1xuaW1wb3J0IHsgV0NTdWJzY3JpcHRpb25IYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9Db21tb25zL3djLXN1YnNjcmlwdGlvbi1oYW5kbGVyJztcbmltcG9ydCB7IENvdW50ZXJJbmZvc1BhbmVDb21wb25lbnQgfSBmcm9tICcuL3BhbmVzL2NvdW50ZXItaW5mb3MtcGFuZXMvY291bnRlci1pbmZvcy1wYW5lLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHJlc2hvbGRzUGFuZUNvbXBvbmVudCB9IGZyb20gJy4vcGFuZXMvdGhyZXNob2xkcy1wYW5lcy90aHJlc2hvbGRzLXBhbmUtY29tcG9uZW50JztcblxuY29uc3QgTE9HX1RBRyA9ICdbQ291bnRlckluZm9zRGFzaGJvYXJkXSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uRXZlbnQge1xuICAgIGNvdW50ZXJJbmZvTmFtZTogc3RyaW5nO1xuICAgIGRhdGE6IGFueVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICd3YS1jb3VudGVyLWluZm9zLWRhc2hib2FyZC1jb21wb25lbnQnLFxuICAgIHN0eWxlVXJsczogWycuL2NvdW50ZXItaW5mb3MtZGFzaGJvYXJkLWNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvdW50ZXItaW5mb3MtZGFzaGJvYXJkLWNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb3VudGVySW5mb3NEYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBAVmlld0NoaWxkKCdjb3VudGVyc1BhbmUnKSBfY291bnRlcnNQYW5lOiBDb3VudGVySW5mb3NQYW5lQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3RocmVzaG9sZHNQYW5lJykgX3RocmVzaG9sZHNQYW5lOiBUaHJlc2hvbGRzUGFuZUNvbXBvbmVudDtcblxuICAgIGZhRG93bmxvYWQgPSBmYURvd25sb2FkO1xuICAgIGZhRmlsZUltcG9ydCA9IGZhRmlsZUltcG9ydDtcblxuICAgIHByaXZhdGUgX3N1YkhhbmRsZXI6IFdDU3Vic2NyaXB0aW9uSGFuZGxlciA9IG5ldyBXQ1N1YnNjcmlwdGlvbkhhbmRsZXIoKTtcblxuICAgIHNlbGVjdGVkQ291bnRlckluZm86IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkNlbnRlcjogV0NOb3RpZmljYXRpb25DZW50ZXIsXG4gICAgICAgIHByaXZhdGUgY291bnRlcnNTZXJ2aWNlOiBDb3VudGVyc1NlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRyAsICduZ09uRGVzdHJveSAnKTtcbiAgICAgICAgdGhpcy5mcmVlTWVtKCk7XG4gICAgfVxuXG4gICAgZnJlZU1lbSgpIHtcbiAgICAgICAgdGhpcy5fc3ViSGFuZGxlci51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uQ291bnRlckluZm9TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uRXZlbnQ6IENvdW50ZXJJbmZvU2VsZWN0aW9uRXZlbnQpe1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRlckluZm8gPSBzZWxlY3Rpb25FdmVudC5jb3VudGVySW5mb05hbWU7XG4gICAgfVxuXG4gICAgb25FeHBvcnRDbGlja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNlbnRlci5wb3N0KHtcbiAgICAgICAgICAgIG5hbWU6ICdDVEV4cG9ydCcsXG4gICAgICAgICAgICB0aXRsZTogJ0NvdW50ZXJzICYgVGhyZXNob2xkcyBFeHBvcnQnLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0V4cG9ydGluZyBDb3VudGVycyAmIFRocmVzaG9sZHMuLi4nLFxuICAgICAgICAgICAgdHlwZTogTm90aWZpY2F0aW9uVHlwZS5JbmZvXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3N1YkhhbmRsZXIuYWRkKHRoaXMuY291bnRlcnNTZXJ2aWNlLmRvd25sb2FkWG1sKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHICwgJ0V4cG9ydCBkb25lLicsIGRhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL3ppcCd9KTtcblxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAnY291bnRlcnNfdGhyZXNob2xkc18nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAnLnhtbCc7XG5cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcgLCAnU2F2aW5nIHRvOiAnLCBibG9iKTtcblxuICAgICAgICAgICAgc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgIC8vIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRyAsICdMb2cgc2F2ZWQ6ICcsIGZpbGVOYW1lKTtcblxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DZW50ZXIucG9zdCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NURXhwb3J0JyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NvdW50ZXJzICYgVGhyZXNob2xkcyBFeHBvcnQnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdDb3VudGVyICYgVGhyZXNob2xkcyBFeHBvcnRlZC4nLFxuICAgICAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihMT0dfVEFHICwgJ0NvdW50ZXJzICYgVGhyZXNob2xkcyBleHBvcnQgZXJyb3I6JywgZXJyb3IpO1xuXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNlbnRlci5wb3N0KHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ1RFeHBvcnRFcnJvcicsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb3VudGVycyAmIFRocmVzaG9sZHMgRXhwb3J0JyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnRXJyb3IgZXhwb3J0aW5nIENvdW50ZXJzICYgVGhyZXNob2xkczonLFxuICAgICAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuRXJyb3IsXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgb25VcGxvYWRDVEVycm9yKGVycm9yKXtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DZW50ZXIucG9zdCh7XG4gICAgICAgICAgICBuYW1lOiAnSW1wb3J0Q1RFcnJvcicsXG4gICAgICAgICAgICB0aXRsZTogJ0ltcG9ydCBDb3VudGVycyAmIFRocmVzaG9sZHMgRXJyb3InLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0Vycm9yIGltcG9ydGluZyBDb3VudGVycyAmIFRocmVzaG9sZHM6JyxcbiAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuRXJyb3IsXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGxvYWRDVChldmVudDogV0NVcGxvYWRQYW5lbEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICd1cGxvYWRBc3NldEJ1bmRsZSA6ICcsIGV2ZW50KTtcblxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNlbnRlci5wb3N0KHtcbiAgICAgICAgICAgIG5hbWU6ICdJbXBvcnRDVFByb2dyZXNzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnSW1wb3J0IENvdW50ZXJzICYgVGhyZXNob2xkcycsXG4gICAgICAgICAgICBtZXNzYWdlOiAnSW1wb3J0aW5nIENvdW50ZXJzICYgVGhyZXNob2xkcy4uLicsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkluZm9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc3ViSGFuZGxlci5hZGQodGhpcy5jb3VudGVyc1NlcnZpY2UudXBsb2FkWG1sKGV2ZW50LmZpbGUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3VudGVyc1BhbmUub25SZWZyZXNoQ2xpY2tlZCgpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ0J1bmRsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHk6ICcsIHJlc3VsdCk7XG5cbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2VudGVyLnBvc3Qoe1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVcGxvYWRCdW5kbGVTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ1VwbG9hZCBCdW5kbGUnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdUaGUgYnVuZGxlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZC4nLFxuICAgICAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihMT0dfVEFHLCAnRXJyb3IgdXBsb2FkaW5nIGJ1bmRsZTogJywgZXJyb3IpO1xuXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNlbnRlci5wb3N0KHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnVXBsb2FkQnVuZGxlRXJyb3InLFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnVXBsb2FkIEJ1bmRsZScsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ0Vycm9yIHVwbG9hZGluZyBidW5kbGU6JyxcbiAgICAgICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkVycm9yLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG59XG4iXX0=