@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
126 lines • 17 kB
JavaScript
import { Injectable } from '@angular/core';
import { NotificationState } from '@microsoft/windows-admin-center-sdk/core/notification/notification-state';
import { AppContextService } from '../../service/app-context.service';
import * as i0 from "@angular/core";
import * as i1 from "../../service/app-context.service";
/**
* The levels of severity that are able to be portrayed by an alert.
*/
export var AlertSeverity;
(function (AlertSeverity) {
AlertSeverity[AlertSeverity["Informational"] = 0] = "Informational";
AlertSeverity[AlertSeverity["Warning"] = 1] = "Warning";
AlertSeverity[AlertSeverity["Error"] = 2] = "Error";
AlertSeverity[AlertSeverity["Success"] = 3] = "Success";
AlertSeverity[AlertSeverity["InProgress"] = 4] = "InProgress";
})(AlertSeverity || (AlertSeverity = {}));
export class AlertBarService {
constructor(appContextService) {
this.appContextService = appContextService;
this.componentMap = {};
}
/**
* Registers an alert bar with the service.
*
* @param component The alert bar component.
* @param [id] The unique identifier of the alert bar.
*/
register(component, id) {
if (!component) {
throw new Error('AlertBarService.register: \'component\' is required to register an alert bar component.');
}
/**
* Commenting out the below sections until we understand cases where angular can call ngOnInit twice.
* see: http://stackoverflow.com/questions/42700116/angular2-routing-issue-and-ngoninit-called-twice
*/
if (id && !this.componentMap.hasOwnProperty(id)) {
this.componentMap[id] = component;
}
else if (id) {
// throw new Error(`AlertBarService.register: Attempted to register alert with ID '${id}' but ID was already found.`);
this.componentMap[id] = component;
}
else if (!this.componentMap.hasOwnProperty('')) {
this.componentMap[''] = component;
}
else {
// throw new Error('AlertBarService.register: Attempted to register alert with no ID, but one was already found.');
this.componentMap[''] = component;
}
}
/**
* Unregisters an alert bar with the service.
*
* @param [id] The unique identifier of the alert bar.
*/
unregister(id) {
if (id) {
delete this.componentMap[id];
}
else {
delete this.componentMap[''];
}
}
/**
* Shows an alert.
*
* @param alert The alert to show.
* @param [id] The unique identifier of the alert bar to show the alert in.
*/
showAlert(item, id) {
let component;
if (id && this.componentMap.hasOwnProperty(id)) {
component = this.componentMap[id];
}
else if (id) {
throw new Error(`AlertBarService.show: No alert bar component with ID '${id}' was found.`);
}
else if (this.componentMap.hasOwnProperty('')) {
component = this.componentMap[''];
}
else {
throw new Error('AlertBarService.show: No registered alert bar component was found with no ID.');
}
component.show(item);
}
/**
* @deprecated
* Shows an alert.
*
* Use ClientNotificationInstance class or appContextService.notification.notify() instead.
*
* @param alert The alert to show.
* @param [id] The unique identifier of the alert bar to show the alert in.
*/
show(item, id) {
if (id || item.links) {
this.showAlert(item, id);
return;
}
let state;
switch (item.severity) {
case AlertSeverity.Error:
state = NotificationState.Error;
break;
case AlertSeverity.Warning:
state = NotificationState.Warning;
break;
case AlertSeverity.Informational:
default:
state = NotificationState.Informational;
break;
}
this.appContextService.notification.notify(null, {
id: MsftSme.newGuid(),
state,
message: item.message,
title: item.title
});
}
}
/** @nocollapse */ AlertBarService.ɵfac = function AlertBarService_Factory(t) { return new (t || AlertBarService)(i0.ɵɵinject(i1.AppContextService)); };
/** @nocollapse */ AlertBarService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: AlertBarService, factory: AlertBarService.ɵfac });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AlertBarService, [{
type: Injectable
}], function () { return [{ type: i1.AppContextService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9hbGVydC1iYXIvYWxlcnQtYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBeUR0RTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBTVg7QUFORCxXQUFZLGFBQWE7SUFDckIsbUVBQWlCLENBQUE7SUFDakIsdURBQVcsQ0FBQTtJQUNYLG1EQUFTLENBQUE7SUFDVCx1REFBVyxDQUFBO0lBQ1gsNkRBQWMsQ0FBQTtBQUNsQixDQUFDLEVBTlcsYUFBYSxLQUFiLGFBQWEsUUFNeEI7QUE4Q0QsTUFBTSxPQUFPLGVBQWU7SUFHeEIsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFGaEQsaUJBQVksR0FBa0MsRUFBRSxDQUFDO0lBRUUsQ0FBQztJQUU1RDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxTQUFtQixFQUFFLEVBQVc7UUFDNUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUM5RztRQUVEOzs7V0FHRztRQUVILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDckM7YUFBTSxJQUFJLEVBQUUsRUFBRTtZQUNYLHNIQUFzSDtZQUN0SCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUNyQzthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUNyQzthQUFNO1lBQ0gsbUhBQW1IO1lBQ25ILElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsRUFBVztRQUN6QixJQUFJLEVBQUUsRUFBRTtZQUNKLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLElBQVcsRUFBRSxFQUFXO1FBQ3JDLElBQUksU0FBbUIsQ0FBQztRQUV4QixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM1QyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNyQzthQUFNLElBQUksRUFBRSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM5RjthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0MsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztTQUNwRztRQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksSUFBSSxDQUFDLElBQVcsRUFBRSxFQUFXO1FBQ2hDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsT0FBTztTQUNWO1FBRUQsSUFBSSxLQUF3QixDQUFDO1FBQzdCLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixLQUFLLGFBQWEsQ0FBQyxLQUFLO2dCQUNwQixLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1YsS0FBSyxhQUFhLENBQUMsT0FBTztnQkFDdEIsS0FBSyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUNqQztnQkFDSSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxNQUFNO1NBQ2I7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDdEMsSUFBSSxFQUNKO1lBQ0ksRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDckIsS0FBSztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7aUdBMUdRLGVBQWU7b0dBQWYsZUFBZSxXQUFmLGVBQWU7dUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TdGF0ZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1zdGF0ZSc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgdHlwZWQgaW50ZXJmYWNlIGZvciBhbiBhbGVydC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGlua3MgdG8gaW5jbHVkZSBvbiB0aGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIGxpbmtzPzogQWxlcnRMaW5rW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWVzc2FnZSBvZiB0aGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzZXZlcml0eSBvZiB0aGUgYWxlcnQuXHJcbiAgICAgKi9cclxuICAgIHNldmVyaXR5OiBBbGVydFNldmVyaXR5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBhbGVydC5cclxuICAgICAqL1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0cnVlIGlmIHRoZSBhbGVydCBtZXNzYWdlIGlzIGV4cGFuZGVkXHJcbiAgICAgKi9cclxuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJ1ZSBpZiBtZXNzYWdlIGNvbnRlbnQgZXhjZWVkcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lc1xyXG4gICAgICovXHJcbiAgICBuZWVkc0NsYW1wPzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHRoZSBmb3JtYXR0ZWQgdGltZXN0YW1wIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICB0aW1lc3RhbXA/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgbmFtZSBvZiB0aGUgbm9kZVxyXG4gICAgICovXHJcbiAgICBub2RlTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIHRoZSBpZCBvZiB0aGUgYWxlcnRcclxuICAgICAqL1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXRUaW1lb3V0IGRpc21pc3Mgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBzZXRUaW1lb3V0PzogYW55O1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGxldmVscyBvZiBzZXZlcml0eSB0aGF0IGFyZSBhYmxlIHRvIGJlIHBvcnRyYXllZCBieSBhbiBhbGVydC5cclxuICovXHJcbmV4cG9ydCBlbnVtIEFsZXJ0U2V2ZXJpdHkge1xyXG4gICAgSW5mb3JtYXRpb25hbCA9IDAsXHJcbiAgICBXYXJuaW5nID0gMSxcclxuICAgIEVycm9yID0gMixcclxuICAgIFN1Y2Nlc3MgPSAzLFxyXG4gICAgSW5Qcm9ncmVzcyA9IDRcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSB0eXBlZCBpbnRlcmZhY2Ugb2YgYW4gYWxlcnQgbGluay5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRMaW5rIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRpc3BsYXkgdGV4dCBvZiB0aGUgbGlua1xyXG4gICAgICovXHJcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGV2ZW50IHRvIGludm9rZSB3aGVuIHRoZSBsaW5rIGlzIGNsaWNrZWQuXHJcbiAgICAgKiBJZiBhbiBldmVudCBpcyBhZGRlZCB1cmkgd2lsbCBub3QgYmUgdXNlZFxyXG4gICAgICovXHJcbiAgICBldmVudD86ICgoKSA9PiB2b2lkKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB1cmkgdG8gbmF2aWdhdGUgdG8gd2hlbiB0aGUgbGluayBpcyBjbGlja2VkXHJcbiAgICAgKi9cclxuICAgIHVyaT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGEgbGluayBpcyBiZWluZyB1c2VkLCBzcGVjaWZpZXMgaWYgaXQgaXMgYW4gZXh0ZXJuYWwgbGlua1xyXG4gICAgICogaWYgdHJ1ZSwgbGluayB3aWxsIG9wZW4gaW4gYSBuZXcgdGFiLCBvdGhlcndpc2Ugd2lsbCByb3V0ZSBpbnRlcm5hbGx5XHJcbiAgICAgKi9cclxuICAgIGlzRXh0ZXJuYWxMaW5rPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBbGVydEluZm8ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQEFsZXJ0IE9iamVjdC5cclxuICAgICAqL1xyXG4gICAgYWxlcnQ6IEFsZXJ0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmIGNvdW50IG9mIGhvdyBtYW55IHRpbWVzIHRoZSBzaG93KCkgd2FzIGludm9rZWQgZm9yIHRoZSBhbGVydC5cclxuICAgICAqL1xyXG4gICAgcmVmQ291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBbGVydEJhciB7XHJcbiAgICBzaG93KGFsZXJ0OiBBbGVydCk6IHZvaWQ7XHJcbiB9XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBbGVydEJhclNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBBbGVydEJhciB9ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBDb250ZXh0U2VydmljZTogQXBwQ29udGV4dFNlcnZpY2UpIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgYW4gYWxlcnQgYmFyIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbXBvbmVudCBUaGUgYWxlcnQgYmFyIGNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBbaWRdIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWxlcnQgYmFyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIoY29tcG9uZW50OiBBbGVydEJhciwgaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FsZXJ0QmFyU2VydmljZS5yZWdpc3RlcjogXFwnY29tcG9uZW50XFwnIGlzIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIGFuIGFsZXJ0IGJhciBjb21wb25lbnQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDb21tZW50aW5nIG91dCB0aGUgYmVsb3cgc2VjdGlvbnMgdW50aWwgd2UgdW5kZXJzdGFuZCBjYXNlcyB3aGVyZSBhbmd1bGFyIGNhbiBjYWxsIG5nT25Jbml0IHR3aWNlLlxyXG4gICAgICAgICAqIHNlZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MjcwMDExNi9hbmd1bGFyMi1yb3V0aW5nLWlzc3VlLWFuZC1uZ29uaW5pdC1jYWxsZWQtdHdpY2VcclxuICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgaWYgKGlkICYmICF0aGlzLmNvbXBvbmVudE1hcC5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRNYXBbaWRdID0gY29tcG9uZW50O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaWQpIHtcclxuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBBbGVydEJhclNlcnZpY2UucmVnaXN0ZXI6IEF0dGVtcHRlZCB0byByZWdpc3RlciBhbGVydCB3aXRoIElEICcke2lkfScgYnV0IElEIHdhcyBhbHJlYWR5IGZvdW5kLmApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudE1hcFtpZF0gPSBjb21wb25lbnQ7XHJcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21wb25lbnRNYXAuaGFzT3duUHJvcGVydHkoJycpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TWFwWycnXSA9IGNvbXBvbmVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ0FsZXJ0QmFyU2VydmljZS5yZWdpc3RlcjogQXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGFsZXJ0IHdpdGggbm8gSUQsIGJ1dCBvbmUgd2FzIGFscmVhZHkgZm91bmQuJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TWFwWycnXSA9IGNvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVbnJlZ2lzdGVycyBhbiBhbGVydCBiYXIgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gW2lkXSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFsZXJ0IGJhci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVucmVnaXN0ZXIoaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29tcG9uZW50TWFwW2lkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jb21wb25lbnRNYXBbJyddO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGFuIGFsZXJ0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQgdG8gc2hvdy5cclxuICAgICAqIEBwYXJhbSBbaWRdIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWxlcnQgYmFyIHRvIHNob3cgdGhlIGFsZXJ0IGluLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvd0FsZXJ0KGl0ZW06IEFsZXJ0LCBpZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGxldCBjb21wb25lbnQ6IEFsZXJ0QmFyO1xyXG5cclxuICAgICAgICBpZiAoaWQgJiYgdGhpcy5jb21wb25lbnRNYXAuaGFzT3duUHJvcGVydHkoaWQpKSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50TWFwW2lkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQWxlcnRCYXJTZXJ2aWNlLnNob3c6IE5vIGFsZXJ0IGJhciBjb21wb25lbnQgd2l0aCBJRCAnJHtpZH0nIHdhcyBmb3VuZC5gKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tcG9uZW50TWFwLmhhc093blByb3BlcnR5KCcnKSkge1xyXG4gICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudE1hcFsnJ107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbGVydEJhclNlcnZpY2Uuc2hvdzogTm8gcmVnaXN0ZXJlZCBhbGVydCBiYXIgY29tcG9uZW50IHdhcyBmb3VuZCB3aXRoIG5vIElELicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29tcG9uZW50LnNob3coaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICogU2hvd3MgYW4gYWxlcnQuXHJcbiAgICAgKlxyXG4gICAgICogVXNlIENsaWVudE5vdGlmaWNhdGlvbkluc3RhbmNlIGNsYXNzIG9yIGFwcENvbnRleHRTZXJ2aWNlLm5vdGlmaWNhdGlvbi5ub3RpZnkoKSBpbnN0ZWFkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBhbGVydCBUaGUgYWxlcnQgdG8gc2hvdy5cclxuICAgICAqIEBwYXJhbSBbaWRdIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWxlcnQgYmFyIHRvIHNob3cgdGhlIGFsZXJ0IGluLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdyhpdGVtOiBBbGVydCwgaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaWQgfHwgaXRlbS5saW5rcykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydChpdGVtLCBpZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGF0ZTogTm90aWZpY2F0aW9uU3RhdGU7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLnNldmVyaXR5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRTZXZlcml0eS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIHN0YXRlID0gTm90aWZpY2F0aW9uU3RhdGUuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5Lldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IE5vdGlmaWNhdGlvblN0YXRlLldhcm5pbmc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFNldmVyaXR5LkluZm9ybWF0aW9uYWw6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IE5vdGlmaWNhdGlvblN0YXRlLkluZm9ybWF0aW9uYWw7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2Uubm90aWZpY2F0aW9uLm5vdGlmeShcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWQ6IE1zZnRTbWUubmV3R3VpZCgpLFxyXG4gICAgICAgICAgICAgICAgc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBpdGVtLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=