@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
339 lines • 44.2 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, Injector, Input } from '@angular/core';
import { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';
import { CoreBaseComponent } from '../common/base.component';
import { DialogChangeEvent, DialogService } from '../dialog/dialog.service';
import { StatusIconType } from '../icon/layered-icon/status/status-icon.component';
import { AlertBarService, AlertSeverity } from './alert-bar.service';
import * as i0 from "@angular/core";
import * as i1 from "./alert-bar.service";
import * as i2 from "../dialog/dialog.service";
import * as i3 from "@angular/common";
import * as i4 from "@angular/router";
import * as i5 from "../icon/layered-icon/status/status-icon.component";
import * as i6 from "../tooltip/tooltip.directive";
const _c0 = function (a0, a1) { return { "sme-icon-chevronDown": a0, "sme-icon-chevronRight": a1 }; };
function AlertBarComponent_div_1_span_3_Template(rf, ctx) { if (rf & 1) {
const _r8 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "span", 18);
i0.ɵɵlistener("click", function AlertBarComponent_div_1_span_3_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const alert_r1 = i0.ɵɵnextContext().$implicit; const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.clickExpand($event, alert_r1)); });
i0.ɵɵelementEnd();
} if (rf & 2) {
const alert_r1 = i0.ɵɵnextContext().$implicit;
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c0, alert_r1.isExpanded, !alert_r1.isExpanded))("title", ctx_r2.strings.MsftSmeShell.Angular.AlertBar.Expand);
} }
function AlertBarComponent_div_1_p_12_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "p", 19);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const alert_r1 = i0.ɵɵnextContext().$implicit;
i0.ɵɵattribute("aria-label", alert_r1.message);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", alert_r1.message, " ");
} }
function AlertBarComponent_div_1_p_13_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "p", 19);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const alert_r1 = i0.ɵɵnextContext().$implicit;
i0.ɵɵattribute("aria-label", alert_r1.message);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", alert_r1.message, " ");
} }
function AlertBarComponent_div_1_label_14_div_1_a_1_Template(rf, ctx) { if (rf & 1) {
const _r18 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "a", 23);
i0.ɵɵlistener("click", function AlertBarComponent_div_1_label_14_div_1_a_1_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const link_r13 = i0.ɵɵnextContext().$implicit; const ctx_r16 = i0.ɵɵnextContext(3); link_r13.event(); return i0.ɵɵresetView(ctx_r16.stopClickPropagation($event)); });
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const link_r13 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", link_r13.displayText, " ");
} }
function AlertBarComponent_div_1_label_14_div_1_div_2_a_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 27);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const link_r13 = i0.ɵɵnextContext(2).$implicit;
i0.ɵɵproperty("href", link_r13.uri, i0.ɵɵsanitizeUrl);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", link_r13.displayText, " ");
} }
function AlertBarComponent_div_1_label_14_div_1_div_2_a_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 28);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const link_r13 = i0.ɵɵnextContext(2).$implicit;
i0.ɵɵproperty("routerLink", link_r13.uri);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", link_r13.displayText, " ");
} }
function AlertBarComponent_div_1_label_14_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
const _r25 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 24);
i0.ɵɵlistener("click", function AlertBarComponent_div_1_label_14_div_1_div_2_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r24.stopClickPropagation($event)); });
i0.ɵɵtemplate(1, AlertBarComponent_div_1_label_14_div_1_div_2_a_1_Template, 2, 2, "a", 25);
i0.ɵɵtemplate(2, AlertBarComponent_div_1_label_14_div_1_div_2_a_2_Template, 2, 2, "a", 26);
i0.ɵɵelementEnd();
} if (rf & 2) {
const link_r13 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", link_r13.isExternalLink);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !link_r13.isExternalLink);
} }
function AlertBarComponent_div_1_label_14_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div");
i0.ɵɵtemplate(1, AlertBarComponent_div_1_label_14_div_1_a_1_Template, 2, 1, "a", 21);
i0.ɵɵtemplate(2, AlertBarComponent_div_1_label_14_div_1_div_2_Template, 3, 2, "div", 22);
i0.ɵɵelementEnd();
} if (rf & 2) {
const link_r13 = ctx.$implicit;
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", link_r13.event);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !link_r13.event && link_r13.uri);
} }
function AlertBarComponent_div_1_label_14_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "label");
i0.ɵɵtemplate(1, AlertBarComponent_div_1_label_14_div_1_Template, 3, 2, "div", 20);
i0.ɵɵelementEnd();
} if (rf & 2) {
const alert_r1 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", alert_r1.links);
} }
function AlertBarComponent_div_1_Template(rf, ctx) { if (rf & 1) {
const _r29 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 2);
i0.ɵɵlistener("click", function AlertBarComponent_div_1_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r29); const alert_r1 = restoredCtx.$implicit; const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.openNotificationDetails(alert_r1)); });
i0.ɵɵelementStart(1, "div", 3);
i0.ɵɵelement(2, "sme-status-icon", 4);
i0.ɵɵtemplate(3, AlertBarComponent_div_1_span_3_Template, 1, 5, "span", 5);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(4, "div", 6)(5, "div", 7)(6, "div", 8)(7, "p", 9);
i0.ɵɵtext(8);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(9, "p", 10);
i0.ɵɵtext(10);
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(11, "div", 3);
i0.ɵɵtemplate(12, AlertBarComponent_div_1_p_12_Template, 2, 2, "p", 11);
i0.ɵɵtemplate(13, AlertBarComponent_div_1_p_13_Template, 2, 2, "p", 11);
i0.ɵɵtemplate(14, AlertBarComponent_div_1_label_14_Template, 2, 1, "label", 12);
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(15, "div", 13)(16, "div", 14);
i0.ɵɵtext(17);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(18, "div", 15);
i0.ɵɵtext(19);
i0.ɵɵelementEnd()()();
i0.ɵɵelementStart(20, "div", 3)(21, "button", 16);
i0.ɵɵlistener("click", function AlertBarComponent_div_1_Template_button_click_21_listener() { const restoredCtx = i0.ɵɵrestoreView(_r29); const alert_r1 = restoredCtx.$implicit; const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.dismiss(alert_r1)); });
i0.ɵɵelement(22, "span", 17);
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const alert_r1 = ctx.$implicit;
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance(2);
i0.ɵɵproperty("status", ctx_r0.getStatusString(alert_r1))("title", ctx_r0.getIconTitle(alert_r1));
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", alert_r1.title && alert_r1.needsClamp);
i0.ɵɵadvance(5);
i0.ɵɵtextInterpolate(ctx_r0.getIconTitle(alert_r1));
i0.ɵɵadvance(1);
i0.ɵɵattribute("aria-label", alert_r1.title || alert_r1.message);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(alert_r1.title || alert_r1.message);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", alert_r1.title && !alert_r1.isExpanded);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", alert_r1.title && alert_r1.isExpanded);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", alert_r1.links);
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate(alert_r1.nodeName);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", alert_r1.timestamp, "");
i0.ɵɵadvance(2);
i0.ɵɵattribute("aria-label", ctx_r0.strings.MsftSmeShell.Angular.AlertBar.DismissAriaLabel);
i0.ɵɵadvance(1);
i0.ɵɵproperty("title", ctx_r0.strings.MsftSmeShell.Angular.AlertBar.Dismiss);
} }
export class AlertBarComponent extends CoreBaseComponent {
/**
* Initializes a new instance of the {AlertBarComponent} class.
*
* @param alertBarService The alert service.
* @param router The router.
* @param activatedRoute The activated route.
*/
constructor(injector, alertBarService, dialogService) {
super(injector);
this.alertBarService = alertBarService;
this.dialogService = dialogService;
this.dialogSubscriptions = [];
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'AlertBarComponent';
}
/**
* The method to run when the component is initialized.
*/
ngOnInit() {
this.alerts = [];
this.alertBarService.register(this, this.id);
this.dialogSubscriptions.push(this.dialogService.changed.subscribe(event => {
// clear all alerts if the notification dialog opens
if (event.dialogId === this.dialogService.commonIds.notificationsPane && event.changeEvent === DialogChangeEvent.Show) {
this.alerts = [];
}
}));
}
/**
* The method to run when the component is destroyed.
*/
ngOnDestroy() {
this.alertBarService.unregister(this.id);
if (this.dialogSubscriptions) {
this.dialogSubscriptions.forEach(sub => sub.unsubscribe());
}
}
/**
* Open details view in notification pane
* @param alert the alert clicked
*/
openNotificationDetails(alert) {
this.dialogSubscriptions.push(this.dialogService.show(this.dialogService.commonIds.notificationsPane, { id: alert.id }).subscribe());
}
/**
* click the message expand button
* @param event the event
* @param alert the alert clicked
*/
clickExpand(event, alert) {
alert.isExpanded = !alert.isExpanded;
this.stopClickPropagation(event);
}
/**
* stop propagation on the event
* @param event the event to stop
*/
stopClickPropagation(event) {
event.stopPropagation();
}
/**
* Assigns needsClamp properly to given alert
* @param alert the alert
* @param event the clamped event
*/
assignClamped(alert, event) {
alert.needsClamp = event.clamped;
}
/**
* Gets the status string for the status icon
*
* @param alert The alert.
*/
getStatusString(alert) {
switch (alert.severity) {
case AlertSeverity.Error:
return StatusIconType.Error;
case AlertSeverity.Warning:
return StatusIconType.Warning;
case AlertSeverity.Success:
return StatusIconType.Success;
case AlertSeverity.InProgress:
return StatusIconType.Progress;
case AlertSeverity.Informational:
default:
return StatusIconType.Info;
}
}
getIconTitle(alert) {
switch (alert.severity) {
case AlertSeverity.Error:
return this.strings.MsftSmeShell.Angular.AlertBar.Error;
case AlertSeverity.Warning:
return this.strings.MsftSmeShell.Angular.AlertBar.Warning;
case AlertSeverity.Success:
return this.strings.MsftSmeShell.Angular.AlertBar.Success;
case AlertSeverity.InProgress:
return this.strings.MsftSmeShell.Angular.AlertBar.InProgress;
case AlertSeverity.Informational:
default:
return this.strings.MsftSmeShell.Angular.AlertBar.Information;
}
}
/**
* Shows an alert.
*
* @param alert The alert to show.
*/
show(alert) {
// don't show popup if notifications are already open
if (!MsftSme.find(this.dialogService.activeDialogsStack, dialog => dialog.id === this.dialogService.commonIds.notificationsPane)) {
const existingAlert = this.alerts.find(x => x.id === alert.id || this.indexName(x) === this.indexName(alert));
if (existingAlert) {
if (existingAlert.setTimeout) {
clearTimeout(existingAlert.setTimeout);
existingAlert.setTimeout = null;
}
this.dismiss(existingAlert);
}
if (alert.setTimeout) {
clearTimeout(alert.setTimeout);
alert.setTimeout = null;
}
this.alerts.unshift(alert);
alert.setTimeout = setTimeout(() => { this.dismiss(alert); }, 7000);
}
}
/**
* Dismisses an alert.
*
* @param alert The alert to dismiss.
*/
dismiss(alert) {
MsftSme.remove(this.alerts, alert);
}
/**
* Create the index name in map collection.
*
* @param alert the alert
*/
indexName(alert) {
return alert.severity + ':' + alert.title + ':' + alert.message + ':' + alert.nodeName;
}
}
/** @nocollapse */ AlertBarComponent.ɵfac = function AlertBarComponent_Factory(t) { return new (t || AlertBarComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.AlertBarService), i0.ɵɵdirectiveInject(i2.DialogService)); };
/** @nocollapse */ AlertBarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AlertBarComponent, selectors: [["sme-alert-bar"]], inputs: { id: "id" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "sme-layer-notification", "sme-layout-absolute", "sme-layout-notification-popup-list"], ["tabindex", "0", "class", "sme-layout-notification-popup sme-shadow-notification-popup sme-margin-right-sm sme-margin-top-sm sme-arrange-stack-h\n sme-background-color-alt-5 sme-border-color-alt-5 sme-padding-top-xs sme-padding-left-sm sme-padding-right-xs sme-padding-bottom-xs sme-behavior-hover-trigger", 3, "click", 4, "ngFor", "ngForOf"], ["tabindex", "0", 1, "sme-layout-notification-popup", "sme-shadow-notification-popup", "sme-margin-right-sm", "sme-margin-top-sm", "sme-arrange-stack-h", "sme-background-color-alt-5", "sme-border-color-alt-5", "sme-padding-top-xs", "sme-padding-left-sm", "sme-padding-right-xs", "sme-padding-bottom-xs", "sme-behavior-hover-trigger", 3, "click"], [1, "sme-arrange-stack-v"], ["size", "16px", 1, "sme-padding-right-xs", "sme-padding-top-xxxs", 3, "status", "title"], ["role", "button", "class", "sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-inset-none sme-icon sme-padding-top-xxs sme-behavior-hover-target-show", 3, "ngClass", "title", "click", 4, "ngIf"], ["role", "alert", "id", "sme-alert-bar-content", 1, "sme-arrange-stack-v", "sme-arrange-overflow-hide-x", "sme-arrange-word-wrap-break-word", "sme-position-stretch-h"], [1, "sme-layout-notification-message"], [1, "sme-arrange-stack-h"], [1, "sme-screen-reader"], [1, "sme-font-family-bold", "sme-font-label", "sme-margin-inset-none", "sme-padding-top-xxxs", "sme-position-stretch-h", "sme-position-left-inline"], ["class", "sme-font-label", 4, "ngIf"], [4, "ngIf"], [1, "sme-arrange-stack-h", "sme-font-label", "sme-color-base-40"], [1, "sme-position-flex-auto", "sme-arrange-ellipsis"], [1, "sme-position-flex-none", "sme-margin-left-xxs"], ["data-uta-id", "cancel-alert", "aria-describedby", "sme-alert-bar-content", 1, "sme-button-trigger", "sme-button-auto-width", "sme-position-flex-none", "sme-padding-inset-none", "sme-padding-left-xxs", "sme-padding-right-xxs", 3, "click"], [1, "sme-icon", "sme-icon-cancel", 3, "title"], ["role", "button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-position-flex-none", "sme-padding-inset-none", "sme-icon", "sme-padding-top-xxs", "sme-behavior-hover-target-show", 3, "ngClass", "title", "click"], [1, "sme-font-label"], [4, "ngFor", "ngForOf"], ["class", "sme-link", 3, "click", 4, "ngIf"], [3, "click", 4, "ngIf"], [1, "sme-link", 3, "click"], [3, "click"], ["class", "sme-link", "target", "_blank", 3, "href", 4, "ngIf"], ["class", "sme-link", 3, "routerLink", 4, "ngIf"], ["target", "_blank", 1, "sme-link", 3, "href"], [1, "sme-link", 3, "routerLink"]], template: function AlertBarComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 0);
i0.ɵɵtemplate(1, AlertBarComponent_div_1_Template, 23, 13, "div", 1);
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx.alerts);
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.RouterLink, i5.StatusIconComponent, i6.TooltipDirective], encapsulation: 2 });
__decorate([
Debounce(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object]),
__metadata("design:returntype", void 0)
], AlertBarComponent.prototype, "assignClamped", null);
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AlertBarComponent, [{
type: Component,
args: [{ selector: 'sme-alert-bar', template: "<div class=\"sme-layer-notification sme-layout-absolute sme-layout-notification-popup-list\">\r\n\r\n <div *ngFor=\"let alert of alerts\" tabindex=\"0\" (click)=\"openNotificationDetails(alert)\"\r\n class=\"sme-layout-notification-popup sme-shadow-notification-popup sme-margin-right-sm sme-margin-top-sm sme-arrange-stack-h\r\n sme-background-color-alt-5 sme-border-color-alt-5 sme-padding-top-xs sme-padding-left-sm sme-padding-right-xs sme-padding-bottom-xs sme-behavior-hover-trigger\">\r\n\r\n <div class=\"sme-arrange-stack-v\">\r\n <sme-status-icon class=\"sme-padding-right-xs sme-padding-top-xxxs\" [status]=\"getStatusString(alert)\" size=\"16px\"\r\n [title]=\"getIconTitle(alert)\"></sme-status-icon>\r\n <span role=\"button\" *ngIf=\"alert.title && alert.needsClamp\" (click)=\"clickExpand($event, alert)\"\r\n class=\"sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-inset-none sme-icon sme-padding-top-xxs sme-behavior-hover-target-show\"\r\n [ngClass]=\"{'sme-icon-chevronDown':alert.isExpanded, 'sme-icon-chevronRight': !alert.isExpanded}\"\r\n [title]=\"strings.MsftSmeShell.Angular.AlertBar.Expand\"></span>\r\n </div>\r\n\r\n <div role=\"alert\" id=\"sme-alert-bar-content\"\r\n class=\"sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-word-wrap-break-word sme-position-stretch-h\">\r\n\r\n <div class=\"sme-layout-notification-message\">\r\n <div class=\"sme-arrange-stack-h\">\r\n <p class=\"sme-screen-reader\">{{ getIconTitle(alert) }}</p>\r\n <p class=\"sme-font-family-bold sme-font-label sme-margin-inset-none sme-padding-top-xxxs sme-position-stretch-h sme-position-left-inline\"\r\n [attr.aria-label]=\"alert.title || alert.message\">{{ alert.title || alert.message }}</p>\r\n </div>\r\n <div class=\"sme-arrange-stack-v\">\r\n <p *ngIf=\"alert.title && !alert.isExpanded\" class=\"sme-font-label\" [attr.aria-label]=\"alert.message\">\r\n {{ alert.message }}\r\n </p>\r\n <p *ngIf=\"alert.title && alert.isExpanded\" class=\"sme-font-label\" [attr.aria-label]=\"alert.message\">\r\n {{ alert.message }}\r\n </p>\r\n\r\n <label *ngIf=\"alert.links\">\r\n <div *ngFor=\"let link of alert.links\">\r\n <a *ngIf=\"link.event\" class=\"sme-link\" (click)=\"link.event();stopClickPropagation($event)\">\r\n {{ link.displayText }}\r\n </a>\r\n <div *ngIf=\"!link.event && link.uri\" (click)=\"stopClickPropagation($event)\">\r\n <a *ngIf=\"link.isExternalLink\" class=\"sme-link\" [href]=\"link.uri\" target=\"_blank\">\r\n {{ link.displayText }}\r\n </a>\r\n <a *ngIf=\"!link.isExternalLink\" class=\"sme-link\" [routerLink]=\"link.uri\">\r\n {{ link.displayText }}\r\n </a>\r\n </div>\r\n </div>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"sme-arrange-stack-h sme-font-label sme-color-base-40\">\r\n <div class=\"sme-position-flex-auto sme-arrange-ellipsis\">{{ alert.nodeName }}</div>\r\n <div class=\"sme-position-flex-none sme-margin-left-xxs\"> {{ alert.timestamp }}</div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"sme-arrange-stack-v\">\r\n <button\r\n class=\"sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-inset-none sme-padding-left-xxs sme-padding-right-xxs\"\r\n (click)=\"dismiss(alert)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.AlertBar.DismissAriaLabel\"\r\n data-uta-id=\"cancel-alert\" aria-describedby=\"sme-alert-bar-content\">\r\n <span class=\"sme-icon sme-icon-cancel\" [title]=\"strings.MsftSmeShell.Angular.AlertBar.Dismiss\"></span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n" }]
}], function () { return [{ type: i0.Injector }, { type: i1.AlertBarService }, { type: i2.DialogService }]; }, { id: [{
type: Input
}], assignClamped: [] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2FsZXJ0LWJhci9hbGVydC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvYWxlcnQtYmFyL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFFeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQW1CLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7SUNHaEYsZ0NBR3lEO0lBSEcsd05BQVMsZUFBQSxvQ0FBMEIsQ0FBQSxJQUFDO0lBR3ZDLGlCQUFPOzs7O0lBRDlELCtGQUFpRyw4REFBQTs7O0lBYy9GLDZCQUFxRztJQUNuRyxZQUNGO0lBQUEsaUJBQUk7OztJQUYrRCw4Q0FBaUM7SUFDbEcsZUFDRjtJQURFLGlEQUNGOzs7SUFDQSw2QkFBb0c7SUFDbEcsWUFDRjtJQUFBLGlCQUFJOzs7SUFGOEQsOENBQWlDO0lBQ2pHLGVBQ0Y7SUFERSxpREFDRjs7OztJQUlJLDZCQUEyRjtJQUFwRCw2TkFBUyxnQkFBWSxTQUFDLGVBQUEsb0NBQTRCLENBQUEsSUFBQztJQUN4RixZQUNGO0lBQUEsaUJBQUk7OztJQURGLGVBQ0Y7SUFERSxxREFD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dkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssU0FBUyxDQUFDLEtBQVk7UUFDMUIsT0FBTyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzNGLENBQUM7O3FHQTdLUSxpQkFBaUI7bUdBQWpCLGlCQUFpQjtRQ1o5Qiw4QkFBMkY7UUFFekYsb0VBK0RNO1FBQ1IsaUJBQU07O1FBaEVtQixlQUFTO1FBQVQsb0NBQVM7O0FEaUc5QjtJQUFDLFFBQVEsRUFBRTs7OztzREFHVjt1RkExRlEsaUJBQWlCO2NBSjdCLFNBQVM7MkJBQ0ksZUFBZTtxSEFZbEIsRUFBRTtrQkFEUixLQUFLO1lBZ0ZDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ2hhbmdlRXZlbnQsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0dXNJY29uVHlwZSB9IGZyb20gJy4uL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydCwgQWxlcnRCYXIsIEFsZXJ0QmFyU2VydmljZSwgQWxlcnRTZXZlcml0eSB9IGZyb20gJy4vYWxlcnQtYmFyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1hbGVydC1iYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LWJhci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFsZXJ0QmFyQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWxlcnRCYXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0FsZXJ0QmFyQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRpYWxvZ1N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgLy8gS2VlcCB0aGUgYXJyYXkgdG8gbWFpbnRhaW4gdGhlIG9yZGVyIG9mIEFsZXJ0cyByZWNlaXZlZC5cclxuICAgIHB1YmxpYyBhbGVydHM6IEFsZXJ0W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUge0FsZXJ0QmFyQ29tcG9uZW50fSBjbGFzcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnRCYXJTZXJ2aWNlIFRoZSBhbGVydCBzZXJ2aWNlLlxyXG4gICAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyLlxyXG4gICAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBhbGVydEJhclNlcnZpY2U6IEFsZXJ0QmFyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBydW4gd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMgPSBbXTtcclxuICAgICAgICB0aGlzLmFsZXJ0QmFyU2VydmljZS5yZWdpc3Rlcih0aGlzLCB0aGlzLmlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zLnB1c2godGhpcy5kaWFsb2dTZXJ2aWNlLmNoYW5nZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGFsZXJ0cyBpZiB0aGUgbm90aWZpY2F0aW9uIGRpYWxvZyBvcGVuc1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGlhbG9nSWQgPT09IHRoaXMuZGlhbG9nU2VydmljZS5jb21tb25JZHMubm90aWZpY2F0aW9uc1BhbmUgJiYgZXZlbnQuY2hhbmdlRXZlbnQgPT09IERpYWxvZ0NoYW5nZUV2ZW50LlNob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hbGVydEJhclNlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbiBkZXRhaWxzIHZpZXcgaW4gbm90aWZpY2F0aW9uIHBhbmVcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnQgY2xpY2tlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3Blbk5vdGlmaWNhdGlvbkRldGFpbHMoYWxlcnQ6IEFsZXJ0KSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93KHRoaXMuZGlhbG9nU2VydmljZS5jb21tb25JZHMubm90aWZpY2F0aW9uc1BhbmUsIHsgaWQ6IGFsZXJ0LmlkIH0pLnN1YnNjcmliZSgpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNsaWNrIHRoZSBtZXNzYWdlIGV4cGFuZCBidXR0b25cclxuICAgICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBhbGVydCB0aGUgYWxlcnQgY2xpY2tlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xpY2tFeHBhbmQoZXZlbnQ6IEV2ZW50LCBhbGVydDogQWxlcnQpIHtcclxuICAgICAgICBhbGVydC5pc0V4cGFuZGVkID0gIWFsZXJ0LmlzRXhwYW5kZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9wQ2xpY2tQcm9wYWdhdGlvbihldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBldmVudFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSBldmVudCB0byBzdG9wXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdG9wQ2xpY2tQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFzc2lnbnMgbmVlZHNDbGFtcCBwcm9wZXJseSB0byBnaXZlbiBhbGVydFxyXG4gICAgICogQHBhcmFtIGFsZXJ0IHRoZSBhbGVydFxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSBjbGFtcGVkIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwdWJsaWMgYXNzaWduQ2xhbXBlZChhbGVydDogQWxlcnQsIGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBhbGVydC5uZWVkc0NsYW1wID0gZXZlbnQuY2xhbXBlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN0YXR1cyBzdHJpbmcgZm9yIHRoZSBzdGF0dXMgaWNvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRTdGF0dXNTdHJpbmcoYWxlcnQ6IEFsZXJ0KTogU3RhdHVzSWNvblR5cGUge1xyXG4gICAgICAgIHN3aXRjaCAoYWxlcnQuc2V2ZXJpdHkpIHtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1c0ljb25UeXBlLkVycm9yO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuV2FybmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5XYXJuaW5nO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5TdWNjZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuSW5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXNJY29uVHlwZS5Qcm9ncmVzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluZm9ybWF0aW9uYWw6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzSWNvblR5cGUuSW5mbztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEljb25UaXRsZShhbGVydDogQWxlcnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoYWxlcnQuc2V2ZXJpdHkpIHtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5FcnJvcjtcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5Lldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLldhcm5pbmc7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5TdWNjZXNzO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0U2V2ZXJpdHkuSW5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuSW5Qcm9ncmVzcztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluZm9ybWF0aW9uYWw6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkFsZXJ0QmFyLkluZm9ybWF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGFuIGFsZXJ0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQgdG8gc2hvdy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3coYWxlcnQ6IEFsZXJ0KTogdm9pZCB7XHJcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyBwb3B1cCBpZiBub3RpZmljYXRpb25zIGFyZSBhbHJlYWR5IG9wZW5cclxuICAgICAgICBpZiAoIU1zZnRTbWUuZmluZCh0aGlzLmRpYWxvZ1NlcnZpY2UuYWN0aXZlRGlhbG9nc1N0YWNrLCBkaWFsb2cgPT4gZGlhbG9nLmlkID09PSB0aGlzLmRpYWxvZ1NlcnZpY2UuY29tbW9uSWRzLm5vdGlmaWNhdGlvbnNQYW5lKSkge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0FsZXJ0ID0gdGhpcy5hbGVydHMuZmluZCh4ID0+IHguaWQgPT09IGFsZXJ0LmlkIHx8IHRoaXMuaW5kZXhOYW1lKHgpID09PSB0aGlzLmluZGV4TmFtZShhbGVydCkpO1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdBbGVydCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nQWxlcnQuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChleGlzdGluZ0FsZXJ0LnNldFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWxlcnQuc2V0VGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzKGV4aXN0aW5nQWxlcnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoYWxlcnQuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGFsZXJ0LnNldFRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgYWxlcnQuc2V0VGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLnVuc2hpZnQoYWxlcnQpO1xyXG4gICAgICAgICAgICBhbGVydC5zZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZGlzbWlzcyhhbGVydCk7IH0sIDcwMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc21pc3NlcyBhbiBhbGVydC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gYWxlcnQgVGhlIGFsZXJ0IHRvIGRpc21pc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkaXNtaXNzKGFsZXJ0OiBBbGVydCk6IHZvaWQge1xyXG4gICAgICAgIE1zZnRTbWUucmVtb3ZlKHRoaXMuYWxlcnRzLCBhbGVydCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgdGhlIGluZGV4IG5hbWUgaW4gbWFwIGNvbGxlY3Rpb24uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGFsZXJ0IHRoZSBhbGVydFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluZGV4TmFtZShhbGVydDogQWxlcnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBhbGVydC5zZXZlcml0eSArICc6JyArIGFsZXJ0LnRpdGxlICsgJzonICsgYWxlcnQubWVzc2FnZSArICc6JyArIGFsZXJ0Lm5vZGVOYW1lO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtbGF5ZXItbm90aWZpY2F0aW9uIHNtZS1sYXlvdXQtYWJzb2x1dGUgc21lLWxheW91dC1ub3RpZmljYXRpb24tcG9wdXAtbGlzdFwiPlxyXG5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBhbGVydCBvZiBhbGVydHNcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwib3Blbk5vdGlmaWNhdGlvbkRldGFpbHMoYWxlcnQpXCJcclxuICAgIGNsYXNzPVwic21lLWxheW91dC1ub3RpZmljYXRpb24tcG9wdXAgc21lLXNoYWRvdy1ub3RpZmljYXRpb24tcG9wdXAgc21lLW1hcmdpbi1yaWdodC1zbSBzbWUtbWFyZ2luLXRvcC1zbSBzbWUtYXJyYW5nZS1zdGFjay1oXHJcbiAgICBzbWUtYmFja2dyb3VuZC1jb2xvci1hbHQtNSBzbWUtYm9yZGVyLWNvbG9yLWFsdC01IHNtZS1wYWRkaW5nLXRvcC14cyBzbWUtcGFkZGluZy1sZWZ0LXNtIHNtZS1wYWRkaW5nLXJpZ2h0LXhzIHNtZS1wYWRkaW5nLWJvdHRvbS14cyBzbWUtYmVoYXZpb3ItaG92ZXItdHJpZ2dlclwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12XCI+XHJcbiAgICAgIDxzbWUtc3RhdHVzLWljb24gY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14cyBzbWUtcGFkZGluZy10b3AteHh4c1wiIFtzdGF0dXNdPVwiZ2V0U3RhdHVzU3RyaW5nKGFsZXJ0KVwiIHNpemU9XCIxNnB4XCJcclxuICAgICAgICBbdGl0bGVdPVwiZ2V0SWNvblRpdGxlKGFsZXJ0KVwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG4gICAgICA8c3BhbiByb2xlPVwiYnV0dG9uXCIgKm5nSWY9XCJhbGVydC50aXRsZSAmJiBhbGVydC5uZWVkc0NsYW1wXCIgKGNsaWNrKT1cImNsaWNrRXhwYW5kKCRldmVudCwgYWxlcnQpXCJcclxuICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtcGFkZGluZy1pbnNldC1ub25lIHNtZS1pY29uIHNtZS1wYWRkaW5nLXRvcC14eHMgc21lLWJlaGF2aW9yLWhvdmVyLXRhcmdldC1zaG93XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3NtZS1pY29uLWNoZXZyb25Eb3duJzphbGVydC5pc0V4cGFuZGVkLCAnc21lLWljb24tY2hldnJvblJpZ2h0JzogIWFsZXJ0LmlzRXhwYW5kZWR9XCJcclxuICAgICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5FeHBhbmRcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHJvbGU9XCJhbGVydFwiIGlkPVwic21lLWFsZXJ0LWJhci1jb250ZW50XCJcclxuICAgICAgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtYXJyYW5nZS13b3JkLXdyYXAtYnJlYWstd29yZCBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLWxheW91dC1ub3RpZmljYXRpb24tbWVzc2FnZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgZ2V0SWNvblRpdGxlKGFsZXJ0KSB9fTwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwic21lLWZvbnQtZmFtaWx5LWJvbGQgc21lLWZvbnQtbGFiZWwgc21lLW1hcmdpbi1pbnNldC1ub25lIHNtZS1wYWRkaW5nLXRvcC14eHhzIHNtZS1wb3NpdGlvbi1zdHJldGNoLWggc21lLXBvc2l0aW9uLWxlZnQtaW5saW5lXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGVydC50aXRsZSB8fCBhbGVydC5tZXNzYWdlXCI+e3sgYWxlcnQudGl0bGUgfHwgYWxlcnQubWVzc2FnZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJhbGVydC50aXRsZSAmJiAhYWxlcnQuaXNFeHBhbmRlZFwiIGNsYXNzPVwic21lLWZvbnQtbGFiZWxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFsZXJ0Lm1lc3NhZ2VcIj5cclxuICAgICAgICAgICAge3sgYWxlcnQubWVzc2FnZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJhbGVydC50aXRsZSAmJiBhbGVydC5pc0V4cGFuZGVkXCIgY2xhc3M9XCJzbWUtZm9udC1sYWJlbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxlcnQubWVzc2FnZVwiPlxyXG4gICAgICAgICAgICB7eyBhbGVydC5tZXNzYWdlIH19XHJcbiAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwiYWxlcnQubGlua3NcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGluayBvZiBhbGVydC5saW5rc1wiPlxyXG4gICAgICAgICAgICAgIDxhICpuZ0lmPVwibGluay5ldmVudFwiIGNsYXNzPVwic21lLWxpbmtcIiAoY2xpY2spPVwibGluay5ldmVudCgpO3N0b3BDbGlja1Byb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxpbmsuZGlzcGxheVRleHQgfX1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsaW5rLmV2ZW50ICYmIGxpbmsudXJpXCIgKGNsaWNrKT1cInN0b3BDbGlja1Byb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwibGluay5pc0V4dGVybmFsTGlua1wiIGNsYXNzPVwic21lLWxpbmtcIiBbaHJlZl09XCJsaW5rLnVyaVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBsaW5rLmRpc3BsYXlUZXh0IH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFsaW5rLmlzRXh0ZXJuYWxMaW5rXCIgY2xhc3M9XCJzbWUtbGlua1wiIFtyb3V0ZXJMaW5rXT1cImxpbmsudXJpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGxpbmsuZGlzcGxheVRleHQgfX1cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWZvbnQtbGFiZWwgc21lLWNvbG9yLWJhc2UtNDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1lbGxpcHNpc1wiPnt7IGFsZXJ0Lm5vZGVOYW1lIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLW1hcmdpbi1sZWZ0LXh4c1wiPiB7eyBhbGVydC50aW1lc3RhbXAgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLXZcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1wYWRkaW5nLWluc2V0LW5vbmUgc21lLXBhZGRpbmctbGVmdC14eHMgc21lLXBhZGRpbmctcmlnaHQteHhzXCJcclxuICAgICAgICAoY2xpY2spPVwiZGlzbWlzcyhhbGVydClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQWxlcnRCYXIuRGlzbWlzc0FyaWFMYWJlbFwiXHJcbiAgICAgICAgZGF0YS11dGEtaWQ9XCJjYW5jZWwtYWxlcnRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwic21lLWFsZXJ0LWJhci1jb250ZW50XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1jYW5jZWxcIiBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5BbGVydEJhci5EaXNtaXNzXCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==