UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

142 lines 20.2 kB
import { Component, Injector, Input } from '@angular/core'; import { CoreBaseComponent } from '../../../common/base.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../../../tooltip/tooltip.directive"; import * as i3 from "../layered-icon.component"; import * as i4 from "../layer/icon-layer.component"; function StatusIconComponent_sme_icon_layer_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "sme-icon-layer", 3); } if (rf & 2) { const layer_r1 = ctx.$implicit; const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵproperty("size", ctx_r0.size)("ngClass", layer_r1); } } export var StatusIconType; (function (StatusIconType) { StatusIconType["Critical"] = "critical"; StatusIconType["Error"] = "error"; StatusIconType["Warning"] = "warning"; StatusIconType["Progress"] = "progress"; StatusIconType["Info"] = "info"; StatusIconType["Success"] = "success"; StatusIconType["Unknown"] = "unknown"; })(StatusIconType || (StatusIconType = {})); (function (StatusIconType) { const statusIconTypes = [ StatusIconType.Critical, StatusIconType.Error, StatusIconType.Warning, StatusIconType.Progress, StatusIconType.Info, StatusIconType.Success, StatusIconType.Unknown ]; function fromString(value) { const defaultStatusIconType = StatusIconType.Unknown; if (MsftSme.isNullOrWhiteSpace(value)) { return defaultStatusIconType; } value = value.toLowerCase(); return statusIconTypes.find(type => type.toLowerCase() === value) || defaultStatusIconType; } function fromBindableType(value) { if (typeof (value) === 'string') { return fromString(value); } return value; } StatusIconType.fromBindableType = fromBindableType; function getIconLayers(iconType) { switch (iconType) { case StatusIconType.Critical: return ['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull']; case StatusIconType.Error: return ['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid']; case StatusIconType.Warning: return ['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid']; case StatusIconType.Progress: return ['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid']; case StatusIconType.Info: return ['sme-icon', 'sme-color-info', 'sme-icon-infoSolid']; case StatusIconType.Success: return ['sme-icon', 'sme-color-success', 'sme-icon-completedSolid']; case StatusIconType.Unknown: return ['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid']; } } StatusIconType.getIconLayers = getIconLayers; })(StatusIconType || (StatusIconType = {})); export class StatusIconComponent extends CoreBaseComponent { constructor(injector) { super(injector); this.localStrings = this.strings.MsftSmeShell.Angular.StatusIcon; } /** * The source name to use for logging */ get logSourceName() { return 'StatusIconComponent'; } /** * Input binding for the status icon type */ set status(type) { const layers = []; switch (type) { case StatusIconType.Critical: layers.push(['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull']); this.statusString = this.localStrings.Critical; break; case StatusIconType.Error: layers.push(['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid']); this.statusString = this.localStrings.Error; break; case StatusIconType.Warning: layers.push(['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid']); this.statusString = this.localStrings.Warning; break; case StatusIconType.Progress: layers.push(['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid']); this.statusString = this.localStrings.Progress; break; case StatusIconType.Info: layers.push(['sme-icon', 'sme-color-info', 'sme-icon-infoSolid']); this.statusString = this.localStrings.Info; break; case StatusIconType.Success: layers.push(['sme-icon', 'sme-color-success', 'sme-icon-completedSolid']); this.statusString = this.localStrings.Success; break; case StatusIconType.Unknown: layers.push(['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid']); this.statusString = this.localStrings.Unknown; break; } this.layers = layers; } } /** @nocollapse */ StatusIconComponent.ɵfac = function StatusIconComponent_Factory(t) { return new (t || StatusIconComponent)(i0.ɵɵdirectiveInject(i0.Injector)); }; /** @nocollapse */ StatusIconComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: StatusIconComponent, selectors: [["sme-status-icon"]], inputs: { size: "size", status: "status" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [["aria-hidden", "true", 3, "size", "title"], [3, "size", "ngClass", 4, "ngFor", "ngForOf"], [1, "sme-screen-reader"], [3, "size", "ngClass"]], template: function StatusIconComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "sme-layered-icon", 0); i0.ɵɵtemplate(1, StatusIconComponent_sme_icon_layer_1_Template, 1, 2, "sme-icon-layer", 1); i0.ɵɵelementEnd(); i0.ɵɵelementStart(2, "div", 2); i0.ɵɵtext(3); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵproperty("size", ctx.size)("title", ctx.statusString); i0.ɵɵadvance(1); i0.ɵɵproperty("ngForOf", ctx.layers); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate(ctx.statusString); } }, dependencies: [i1.NgClass, i1.NgForOf, i2.TooltipDirective, i3.LayeredIconComponent, i4.IconLayerComponent], encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StatusIconComponent, [{ type: Component, args: [{ selector: 'sme-status-icon', template: "<sme-layered-icon [size]=\"size\" aria-hidden=\"true\" [title]=\"statusString\">\r\n <sme-icon-layer [size]=\"size\" *ngFor=\"let layer of layers\" [ngClass]=\"layer\"></sme-icon-layer>\r\n</sme-layered-icon>\r\n<!-- in scan mode screen reader does not focus on the layered-icon properly to read the title -->\r\n<div class=\"sme-screen-reader\">{{ statusString }}</div>\r\n" }] }], function () { return [{ type: i0.Injector }]; }, { size: [{ type: Input }], status: [{ type: Input }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvaWNvbi9sYXllcmVkLWljb24vc3RhdHVzL3N0YXR1cy1pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7SUNBakUsb0NBQThGOzs7O0lBQTlFLGtDQUFhLHFCQUFBOztBREUvQixNQUFNLENBQU4sSUFBWSxjQVFYO0FBUkQsV0FBWSxjQUFjO0lBQ3RCLHVDQUFxQixDQUFBO0lBQ3JCLGlDQUFlLENBQUE7SUFDZixxQ0FBbUIsQ0FBQTtJQUNuQix1Q0FBcUIsQ0FBQTtJQUNyQiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQVJXLGNBQWMsS0FBZCxjQUFjLFFBUXpCO0FBRUQsV0FBYyxjQUFjO0lBR3hCLE1BQU0sZUFBZSxHQUFHO1FBQ3BCLGNBQWMsQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsQ0FBQyxLQUFLO1FBQ3BCLGNBQWMsQ0FBQyxPQUFPO1FBQ3RCLGNBQWMsQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsQ0FBQyxJQUFJO1FBQ25CLGNBQWMsQ0FBQyxPQUFPO1FBQ3RCLGNBQWMsQ0FBQyxPQUFPO0tBQ3pCLENBQUM7SUFDRixTQUFTLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxD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aEMsMkNBQTBFO1FBQ3hFLDBGQUE4RjtRQUNoRyxpQkFBbUI7UUFFbkIsOEJBQStCO1FBQUEsWUFBa0I7UUFBQSxpQkFBTTs7UUFKckMsK0JBQWEsMkJBQUE7UUFDbUIsZUFBUztRQUFULG9DQUFTO1FBRzVCLGVBQWtCO1FBQWxCLHNDQUFrQjs7dUZEK0RwQyxtQkFBbUI7Y0FKL0IsU0FBUzsyQkFDSSxpQkFBaUI7MkRBZ0JwQixJQUFJO2tCQURWLEtBQUs7WUFPSyxNQUFNO2tCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGVudW0gU3RhdHVzSWNvblR5cGUge1xyXG4gICAgQ3JpdGljYWwgPSAnY3JpdGljYWwnLFxyXG4gICAgRXJyb3IgPSAnZXJyb3InLFxyXG4gICAgV2FybmluZyA9ICd3YXJuaW5nJyxcclxuICAgIFByb2dyZXNzID0gJ3Byb2dyZXNzJyxcclxuICAgIEluZm8gPSAnaW5mbycsXHJcbiAgICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gICAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgbW9kdWxlIFN0YXR1c0ljb25UeXBlIHtcclxuICAgIGV4cG9ydCB0eXBlIEJpbmRhYmxlID0gU3RhdHVzSWNvblR5cGUgfCAnY3JpdGljYWwnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdwcm9ncmVzcycgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAndW5rbm93bic7XHJcblxyXG4gICAgY29uc3Qgc3RhdHVzSWNvblR5cGVzID0gW1xyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLkNyaXRpY2FsLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLkVycm9yLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLldhcm5pbmcsXHJcbiAgICAgICAgU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3MsXHJcbiAgICAgICAgU3RhdHVzSWNvblR5cGUuSW5mbyxcclxuICAgICAgICBTdGF0dXNJY29uVHlwZS5TdWNjZXNzLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLlVua25vd25cclxuICAgIF07XHJcbiAgICBmdW5jdGlvbiBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBTdGF0dXNJY29uVHlwZSB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFN0YXR1c0ljb25UeXBlID0gU3RhdHVzSWNvblR5cGUuVW5rbm93bjtcclxuXHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JXaGl0ZVNwYWNlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFN0YXR1c0ljb25UeXBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBzdGF0dXNJY29uVHlwZXMuZmluZCh0eXBlID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWUpIHx8IGRlZmF1bHRTdGF0dXNJY29uVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZnJvbUJpbmRhYmxlVHlwZSh2YWx1ZTogQmluZGFibGUpOiBTdGF0dXNJY29uVHlwZSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0SWNvbkxheWVycyhpY29uVHlwZTogU3RhdHVzSWNvblR5cGUpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgc3dpdGNoIChpY29uVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkNyaXRpY2FsOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWNyaXRpY2FsJywgJ3NtZS1pY29uLXN0YXR1c0Vycm9yRnVsbCddO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWVycm9yJywgJ3NtZS1pY29uLWNyaXRpY2FsRXJyb3JTb2xpZCddO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydzbWUtaWNvbicsICdzbWUtY29sb3Itd2FybmluZycsICdzbWUtaWNvbi13YXJuaW5nU29saWQnXTtcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1wcm9ncmVzcycsICdzbWUtaWNvbi1zeW5jU3RhdHVzU29saWQnXTtcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5JbmZvOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWluZm8nLCAnc21lLWljb24taW5mb1NvbGlkJ107XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1zdWNjZXNzJywgJ3NtZS1pY29uLWNvbXBsZXRlZFNvbGlkJ107XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuVW5rbm93bjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1uZXV0cmFsJywgJ3NtZS1pY29uLXVua25vd25Tb2xpZCddO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zdGF0dXMtaWNvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLWljb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGF0dXNJY29uQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1N0YXR1c0ljb25Db21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5wdXQgYmluZGluZyBmb3IgdGhlIHNpemUgb2YgdGhlIGljb24gaW4gcGl4ZWxzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2l6ZTogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5wdXQgYmluZGluZyBmb3IgdGhlIHN0YXR1cyBpY29uIHR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgc3RhdHVzKHR5cGU6IFN0YXR1c0ljb25UeXBlKSB7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gW107XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuQ3JpdGljYWw6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1jcml0aWNhbCcsICdzbWUtaWNvbi1zdGF0dXNFcnJvckZ1bGwnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuQ3JpdGljYWw7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIGxheWVycy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWVycm9yJywgJ3NtZS1pY29uLWNyaXRpY2FsRXJyb3JTb2xpZCddXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNTdHJpbmcgPSB0aGlzLmxvY2FsU3RyaW5ncy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci13YXJuaW5nJywgJ3NtZS1pY29uLXdhcm5pbmdTb2xpZCddXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNTdHJpbmcgPSB0aGlzLmxvY2FsU3RyaW5ncy5XYXJuaW5nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1wcm9ncmVzcycsICdzbWUtaWNvbi1zeW5jU3RhdHVzU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuUHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5JbmZvOlxyXG4gICAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgWydzbWUtaWNvbicsICdzbWUtY29sb3ItaW5mbycsICdzbWUtaWNvbi1pbmZvU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuSW5mbztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLlN1Y2Nlc3M6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1zdWNjZXNzJywgJ3NtZS1pY29uLWNvbXBsZXRlZFNvbGlkJ11cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXR1c1N0cmluZyA9IHRoaXMubG9jYWxTdHJpbmdzLlN1Y2Nlc3M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Vbmtub3duOlxyXG4gICAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgWydzbWUtaWNvbicsICdzbWUtY29sb3ItbmV1dHJhbCcsICdzbWUtaWNvbi11bmtub3duU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuVW5rbm93bjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxheWVycyA9IGxheWVycztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgaWNvbiBsYXllcnMgdXNlZCB0byBidWlsZCB0aGUgc3RhdHVzIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxheWVyczogYW55W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgc3RhdGUgb2YgdGhlIGljb24gYXMgYSBsb2NhbGl6ZWQgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXNTdHJpbmc6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIGxvY2FsU3RyaW5ncyA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5TdGF0dXNJY29uO1xyXG59XHJcbiIsIjxzbWUtbGF5ZXJlZC1pY29uIFtzaXplXT1cInNpemVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbdGl0bGVdPVwic3RhdHVzU3RyaW5nXCI+XHJcbiAgPHNtZS1pY29uLWxheWVyIFtzaXplXT1cInNpemVcIiAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCIgW25nQ2xhc3NdPVwibGF5ZXJcIj48L3NtZS1pY29uLWxheWVyPlxyXG48L3NtZS1sYXllcmVkLWljb24+XHJcbjwhLS0gaW4gc2NhbiBtb2RlIHNjcmVlbiByZWFkZXIgZG9lcyBub3QgZm9jdXMgb24gdGhlIGxheWVyZWQtaWNvbiBwcm9wZXJseSB0byByZWFkIHRoZSB0aXRsZSAtLT5cclxuPGRpdiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgc3RhdHVzU3RyaW5nIH19PC9kaXY+XHJcbiJdfQ==