stream-chat-angular 4.31.2 → 4.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export const version = '4.31.2';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc0LjMxLjInO1xuIl19
1
+ export const version = '4.32.1';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc0LjMyLjEnO1xuIl19
@@ -16,6 +16,9 @@ export class ChannelComponent {
16
16
  this.channelService = channelService;
17
17
  this.themeService = themeService;
18
18
  this.subscriptions = [];
19
+ this.isChrome =
20
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
21
+ !!window.chrome && typeof window.opr === 'undefined';
19
22
  this.isError$ = combineLatest([
20
23
  this.channelService.channelQueryState$,
21
24
  this.channelService.activeChannel$,
@@ -34,7 +37,7 @@ export class ChannelComponent {
34
37
  }
35
38
  }
36
39
  ChannelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelComponent, deps: [{ token: i1.ChannelService }, { token: i2.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
37
- ChannelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelComponent, selector: "stream-channel", ngImport: i0, template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n>\n <div\n class=\"str-chat__container\"\n *ngIf=\"\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true;\n else noChannel\n \"\n >\n <div class=\"str-chat__main-panel\">\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"isActiveThread$ | async\"\n select='[name=\"thread\"]'\n ></ng-content>\n </div>\n <ng-template #noChannel>\n <div\n class=\"str-chat__empty-channel\"\n *ngIf=\"\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n \"\n >\n <stream-icon icon=\"chat-bubble\"></stream-icon>\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n <div\n *ngIf=\"\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n \"\n class=\"str-chat__loading-channel\"\n >\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", components: [{ type: i3.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: i4.NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe, "translate": i6.TranslatePipe } });
40
+ ChannelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelComponent, selector: "stream-channel", ngImport: i0, template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n [class.google-chrome]=\"isChrome\"\n>\n <div\n class=\"str-chat__container\"\n *ngIf=\"\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true;\n else noChannel\n \"\n >\n <div class=\"str-chat__main-panel\">\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"isActiveThread$ | async\"\n select='[name=\"thread\"]'\n ></ng-content>\n </div>\n <ng-template #noChannel>\n <div\n class=\"str-chat__empty-channel\"\n *ngIf=\"\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n \"\n >\n <stream-icon icon=\"chat-bubble\"></stream-icon>\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n <div\n *ngIf=\"\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n \"\n class=\"str-chat__loading-channel\"\n >\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", components: [{ type: i3.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: i4.NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe, "translate": i6.TranslatePipe } });
38
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelComponent, decorators: [{
39
42
  type: Component,
40
43
  args: [{
@@ -43,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
43
46
  styles: [],
44
47
  }]
45
48
  }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ThemeService }]; } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhbm5lbC9jaGFubmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsL2NoYW5uZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSXJDOztHQUVHO0FBTUgsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixZQUNVLGNBQThCLEVBQzlCLFlBQTBCO1FBRDFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUxwQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFPakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjO1NBQ25DLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsYUFBYSxJQUFJLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssTUFBSyxPQUFPLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYztTQUNuQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLE1BQUssYUFBYSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUNwRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDbEIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hCLENBQUM7SUFDSixDQUFDOzs2R0FuQ1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isc0RDZDdCLHVuSEE0RkE7MkZEOUVhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi90aGVtZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYENoYW5uZWxgIGNvbXBvbmVudCBpcyBhIGNvbnRhaW5lciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyB0aGUgW2BDaGFubmVsSGVhZGVyYF0oLi9DaGFubmVsSGVhZGVyQ29tcG9uZW50Lm1keCksIFtgTWVzc2FnZUxpc3RgXSguL01lc3NhZ2VMaXN0Q29tcG9uZW50Lm1keCksIFtgTm90aWZpY2F0aW9uTGlzdGBdKC4vTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudC5tZHgpIGFuZCBbYE1lc3NhZ2VJbnB1dGBdKC4vTWVzc2FnZUlucHV0Q29tcG9uZW50Lm1keCkgY29tcG9uZW50cy4gWW91IGNhbiBhbHNvIHByb3ZpZGUgdGhlIFtgVGhyZWFkYF0oLi9UaHJlYWRDb21wb25lbnQubWR4KSBjb21wb25lbnQgdG8gdXNlIG1lc3NhZ2UgW3RocmVhZHNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbm5lbENvbXBvbmVudCB7XG4gIGlzRXJyb3IkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0luaXRpYWxpemluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzQWN0aXZlVGhyZWFkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNBY3RpdmVDaGFubmVsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgdGhlbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzRXJyb3IkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxRdWVyeVN0YXRlJCxcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBhY3RpdmVDaGFubmVsXSkgPT4ge1xuICAgICAgICByZXR1cm4gIWFjdGl2ZUNoYW5uZWwgJiYgc3RhdGU/LnN0YXRlID09PSAnZXJyb3InO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXNJbml0aWFsaXppbmckID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxRdWVyeVN0YXRlJCxcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBhY3RpdmVDaGFubmVsXSkgPT4ge1xuICAgICAgICByZXR1cm4gIWFjdGl2ZUNoYW5uZWwgJiYgc3RhdGU/LnN0YXRlID09PSAnaW4tcHJvZ3Jlc3MnO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXNBY3RpdmVUaHJlYWQkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlSWQkLnBpcGUoXG4gICAgICBtYXAoKGlkKSA9PiAhIWlkKVxuICAgICk7XG4gICAgdGhpcy50aGVtZSQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZSQ7XG4gICAgdGhpcy5pc0FjdGl2ZUNoYW5uZWwkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5waXBlKFxuICAgICAgbWFwKChjKSA9PiAhIWMpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0IHN0ci1jaGF0LWNoYW5uZWwgbWVzc2FnaW5nIHN0ci1jaGF0X19jaGFubmVsIHN0ci1jaGF0X190aGVtZS17e1xuICAgIHRoZW1lJCB8IGFzeW5jXG4gIH19XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2NvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJcbiAgICAgIChpc0Vycm9yJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgKGlzSW5pdGlhbGl6aW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgKGlzQWN0aXZlQ2hhbm5lbCQgfCBhc3luYykgPT09IHRydWU7XG4gICAgICBlbHNlIG5vQ2hhbm5lbFxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21haW4tcGFuZWxcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudFxuICAgICAgKm5nSWY9XCJpc0FjdGl2ZVRocmVhZCQgfCBhc3luY1wiXG4gICAgICBzZWxlY3Q9J1tuYW1lPVwidGhyZWFkXCJdJ1xuICAgID48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI25vQ2hhbm5lbD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19lbXB0eS1jaGFubmVsXCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChpc0luaXRpYWxpemluZyQgfCBhc3luYykgPT09IGZhbHNlICYmXG4gICAgICAgICgoaXNFcnJvciQgfCBhc3luYykgPT09IHRydWUgfHwgKGlzQWN0aXZlQ2hhbm5lbCQgfCBhc3luYykgPT09IGZhbHNlKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24gaWNvbj1cImNoYXQtYnViYmxlXCI+PC9zdHJlYW0taWNvbj5cbiAgICAgIDxwIGNsYXNzPVwic3RyLWNoYXRfX2VtcHR5LWNoYW5uZWwtdGV4dFwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuTm8gY2hhdHMgaGVyZSB5ZXTigKZcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19lbXB0eS1jaGFubmVsLW5vdGlmaWNhdGlvbnNcIj5cbiAgICAgICAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIChpc0luaXRpYWxpemluZyQgfCBhc3luYykgPT09IHRydWUgJiZcbiAgICAgICAgKGlzRXJyb3IkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgICAgICAoaXNBY3RpdmVDaGFubmVsJCB8IGFzeW5jKSA9PT0gZmFsc2VcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWxcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1oZWFkZXItYXZhdGFyXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlci1lbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1oZWFkZXItbmFtZVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlci1pbmZvXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtYXZhdGFyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1lbmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2Utc2VuZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWxhc3Qtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWRhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtYXZhdGFyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1lbmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2Utc2VuZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWxhc3Qtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWRhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtYXZhdGFyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1lbmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2Utc2VuZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWxhc3Qtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWRhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1pbnB1dC1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1pbnB1dFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLXNlbmRcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhbm5lbC9jaGFubmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsL2NoYW5uZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSXJDOztHQUVHO0FBTUgsTUFBTSxPQUFPLGdCQUFnQjtJQVczQixZQUNVLGNBQThCLEVBQzlCLFlBQTBCO1FBRDFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVJwQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFbkMsYUFBUTtRQUNOLHNFQUFzRTtRQUN0RSxDQUFDLENBQUUsTUFBYyxDQUFDLE1BQU0sSUFBSSxPQUFRLE1BQWMsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDO1FBTXZFLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYztTQUNuQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLE1BQUssT0FBTyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQjtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWM7U0FDbkMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsS0FBSyxNQUFLLGFBQWEsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDcEUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNoQixDQUFDO0lBQ0osQ0FBQzs7NkdBdENVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHNEQ2Q3Qiw2cEhBNkZBOzJGRC9FYSxnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsTUFBTSxFQUFFLEVBQUU7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBDaGFubmVsYCBjb21wb25lbnQgaXMgYSBjb250YWluZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgdGhlIFtgQ2hhbm5lbEhlYWRlcmBdKC4vQ2hhbm5lbEhlYWRlckNvbXBvbmVudC5tZHgpLCBbYE1lc3NhZ2VMaXN0YF0oLi9NZXNzYWdlTGlzdENvbXBvbmVudC5tZHgpLCBbYE5vdGlmaWNhdGlvbkxpc3RgXSguL05vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQubWR4KSBhbmQgW2BNZXNzYWdlSW5wdXRgXSguL01lc3NhZ2VJbnB1dENvbXBvbmVudC5tZHgpIGNvbXBvbmVudHMuIFlvdSBjYW4gYWxzbyBwcm92aWRlIHRoZSBbYFRocmVhZGBdKC4vVGhyZWFkQ29tcG9uZW50Lm1keCkgY29tcG9uZW50IHRvIHVzZSBtZXNzYWdlIFt0aHJlYWRzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWNoYW5uZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxDb21wb25lbnQge1xuICBpc0Vycm9yJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNJbml0aWFsaXppbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0FjdGl2ZVRocmVhZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzQWN0aXZlQ2hhbm5lbCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHRoZW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpc0Nocm9tZSA9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICEhKHdpbmRvdyBhcyBhbnkpLmNocm9tZSAmJiB0eXBlb2YgKHdpbmRvdyBhcyBhbnkpLm9wciA9PT0gJ3VuZGVmaW5lZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLmlzRXJyb3IkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxRdWVyeVN0YXRlJCxcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBhY3RpdmVDaGFubmVsXSkgPT4ge1xuICAgICAgICByZXR1cm4gIWFjdGl2ZUNoYW5uZWwgJiYgc3RhdGU/LnN0YXRlID09PSAnZXJyb3InO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXNJbml0aWFsaXppbmckID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxRdWVyeVN0YXRlJCxcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBhY3RpdmVDaGFubmVsXSkgPT4ge1xuICAgICAgICByZXR1cm4gIWFjdGl2ZUNoYW5uZWwgJiYgc3RhdGU/LnN0YXRlID09PSAnaW4tcHJvZ3Jlc3MnO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaXNBY3RpdmVUaHJlYWQkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlSWQkLnBpcGUoXG4gICAgICBtYXAoKGlkKSA9PiAhIWlkKVxuICAgICk7XG4gICAgdGhpcy50aGVtZSQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZSQ7XG4gICAgdGhpcy5pc0FjdGl2ZUNoYW5uZWwkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5waXBlKFxuICAgICAgbWFwKChjKSA9PiAhIWMpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0IHN0ci1jaGF0LWNoYW5uZWwgbWVzc2FnaW5nIHN0ci1jaGF0X19jaGFubmVsIHN0ci1jaGF0X190aGVtZS17e1xuICAgIHRoZW1lJCB8IGFzeW5jXG4gIH19XCJcbiAgW2NsYXNzLmdvb2dsZS1jaHJvbWVdPVwiaXNDaHJvbWVcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fY29udGFpbmVyXCJcbiAgICAqbmdJZj1cIlxuICAgICAgKGlzRXJyb3IkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgICAgICAoaXNJbml0aWFsaXppbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgICAgICAoaXNBY3RpdmVDaGFubmVsJCB8IGFzeW5jKSA9PT0gdHJ1ZTtcbiAgICAgIGVsc2Ugbm9DaGFubmVsXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWFpbi1wYW5lbFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50XG4gICAgICAqbmdJZj1cImlzQWN0aXZlVGhyZWFkJCB8IGFzeW5jXCJcbiAgICAgIHNlbGVjdD0nW25hbWU9XCJ0aHJlYWRcIl0nXG4gICAgPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbm9DaGFubmVsPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2VtcHR5LWNoYW5uZWxcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKGlzSW5pdGlhbGl6aW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgKChpc0Vycm9yJCB8IGFzeW5jKSA9PT0gdHJ1ZSB8fCAoaXNBY3RpdmVDaGFubmVsJCB8IGFzeW5jKSA9PT0gZmFsc2UpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzdHJlYW0taWNvbiBpY29uPVwiY2hhdC1idWJibGVcIj48L3N0cmVhbS1pY29uPlxuICAgICAgPHAgY2xhc3M9XCJzdHItY2hhdF9fZW1wdHktY2hhbm5lbC10ZXh0XCI+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5ObyBjaGF0cyBoZXJlIHlldOKAplwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2VtcHR5LWNoYW5uZWwtbm90aWZpY2F0aW9uc1wiPlxuICAgICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgKGlzSW5pdGlhbGl6aW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZSAmJlxuICAgICAgICAoaXNFcnJvciQgfCBhc3luYykgPT09IGZhbHNlICYmXG4gICAgICAgIChpc0FjdGl2ZUNoYW5uZWwkIHwgYXN5bmMpID09PSBmYWxzZVxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlci1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtaGVhZGVyLWVuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlci1uYW1lXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtaGVhZGVyLWluZm9cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWVuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1zZW5kZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGFzdC1yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS10ZXh0XCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtZGF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWVuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1zZW5kZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGFzdC1yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS10ZXh0XCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtZGF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWVuZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1zZW5kZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGFzdC1yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS10ZXh0XCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtZGF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWlucHV0LXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWlucHV0XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2Utc2VuZFwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -27,8 +27,12 @@ export class ChatClientService {
27
27
  /**
28
28
  * Creates a [`StreamChat`](https://github.com/GetStream/stream-chat-js/blob/668b3e5521339f4e14fc657834531b4c8bf8176b/src/client.ts#L124) instance using the provided `apiKey`, and connects a user with the given meta data and token. More info about [connecting users](https://getstream.io/chat/docs/javascript/init_and_users/?language=javascript) can be found in the platform documentation.
29
29
  * @param apiKey
30
- * @param userOrId
31
- * @param userTokenOrProvider You can provide a token, or the keyword 'guest' to connect as [guest user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#guest-users)
30
+ * @param userOrId you can emit this for anonymous logins
31
+ * @param userTokenOrProvider You can provide:<ul>
32
+ * <li> a token, </li>
33
+ * <li> the keyword 'guest' to connect as [guest user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#guest-users) </li>
34
+ * <li> the keyword 'anonymous' to connect as [anonymous user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#anonymous-users) </li>
35
+ * </ul>
32
36
  * @param clientOptions Setting to provide to the Stream client instance
33
37
  */
34
38
  init(apiKey, userOrId, userTokenOrProvider, clientOptions) {
@@ -38,12 +42,14 @@ export class ChatClientService {
38
42
  this.chatClient.devToken;
39
43
  let result;
40
44
  yield this.ngZone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
45
+ var _b;
41
46
  const user = typeof userOrId === 'string' ? { id: userOrId } : userOrId;
42
47
  try {
43
- result =
44
- userTokenOrProvider === 'guest'
45
- ? yield this.chatClient.setGuestUser(user)
46
- : yield this.chatClient.connectUser(user, userTokenOrProvider);
48
+ result = yield ((_b = {
49
+ guest: () => this.chatClient.setGuestUser(user),
50
+ anonymous: () => this.chatClient.connectAnonymousUser(),
51
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
52
+ }[`${userTokenOrProvider}`]) !== null && _b !== void 0 ? _b : (() => this.chatClient.connectUser(user, userTokenOrProvider)))();
47
53
  }
48
54
  catch (error) {
49
55
  this.notificationService.addPermanentNotification('streamChat.Error connecting to chat, refresh the page to try again.', 'error');
@@ -163,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
163
169
  providedIn: 'root',
164
170
  }]
165
171
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.NotificationService }]; } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBV2xFLE9BQU8sRUFBc0IsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUF5QzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWIxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUVqRCxFQUFFLENBQUMsQ0FBQztRQUNFLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQThCLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQWtDLEVBQUUsQ0FBQztRQU14RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxD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RUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTSxJQUNMLENBQUMsQ0FBQyxJQUFJLEtBQUssOEJBQThCO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxLQUFLLDhCQUE4QixFQUN6QztnQkFDQSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsU0FBUyxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxHQUFHLE9BQUssTUFBQSxDQUFDLENBQUMsT0FBTywwQ0FBRSxHQUFHLENBQUEsQ0FBQSxFQUFBLENBQ2pDLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDO2lCQUN0RDthQUNGO1NBQ0Y7SUFDSCxDQUFDOzs4R0FsTVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsUmVzcG9uc2UsXG4gIENvbm5lY3RBUElSZXNwb25zZSxcbiAgT3duVXNlclJlc3BvbnNlLFxuICBTdHJlYW1DaGF0T3B0aW9ucyxcbiAgVXNlckZpbHRlcnMsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3MsIEV2ZW50LCBTdHJlYW1DaGF0LCBUb2tlbk9yUHJvdmlkZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vYXNzZXRzL3ZlcnNpb24nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBDbGllbnRFdmVudDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgZXZlbnQ6IEV2ZW50PFQ+O1xufTtcblxuLyoqXG4gKiBUaGUgYENoYXRDbGllbnRgIHNlcnZpY2UgY29ubmVjdHMgdGhlIHVzZXIgdG8gdGhlIFN0cmVhbSBjaGF0LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdENsaWVudFNlcnZpY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiB7XG4gIC8qKlxuICAgKiBUaGUgW1N0cmVhbUNoYXQgY2xpZW50XShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWpzL2Jsb2IvbWFzdGVyL3NyYy9jbGllbnQudHMpIGluc3RhbmNlLiBJbiBnZW5lcmFsIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBhY2Nlc3MgdGhlIGNsaWVudCwgYnV0IGl0J3MgdGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIGl0LlxuICAgKi9cbiAgY2hhdENsaWVudCE6IFN0cmVhbUNoYXQ8VD47XG4gIC8qKlxuICAgKiBFbWl0cyBbYENsaWVudEV2ZW50YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1hbmd1bGFyL2Jsb2IvbWFzdGVyL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzKSBldmVudHMuIFRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uIGNvdmVycyBbdGhlIGxpc3Qgb2YgY2xpZW50LCB1c2VyIHByZXNlbmNlIGFuZCBub3RpZmljYXRpb24gZXZlbnRzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9ldmVudF9vYmplY3QvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKiA6OjppbXBvcnRhbnRcbiAgICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhpcyBPYnNlcnZhYmxlIG9wZXJhdGVzIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB6b25lLiBJZiB5b3Ugc3Vic2NyaWJlIHRvIGl0LCB5b3UgbmVlZCB0byBtYW51YWxseSByZWVudGVyIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUsIG91ciBbQ2hhbmdlIGRldGVjdGlvbiBndWlkZV0oLi4vY29uY2VwdHMvY2hhbmdlLWRldGVjdGlvbi5tZHgpIGV4cGxhaW5zIHRoaXMgaW4gZGV0YWlsLlxuICAgKiA6OjpcbiAgICovXG4gIGV2ZW50cyQ6IE9ic2VydmFibGU8Q2xpZW50RXZlbnQ8VD4+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgW2FwcGxpY2F0aW9uIHNldHRpbmdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9hcHBfc2V0dGluZ19vdmVydmlldy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuIFNpbmNlIGdldHRpbmcgdGhlIGFwcGxpY2F0aW9uIHNldHRpbmdzIGlzIGFuIGV4cGVuc2l2ZSBBUEkgY2FsbCBhbmQgd2UgZG9uJ3QgYWx3YXlzIG5lZWQgdGhlIHJlc3VsdCwgdGhpcyBpcyBub3QgaW5pdGlhbGl6ZWQgYnkgZGVmYXVsdCwgeW91IG5lZWQgdG8gY2FsbCBgZ2V0QXBwbGljYXRpb25TZXR0aW5nc2AgdG8gbG9hZCB0aGVtLlxuICAgKi9cbiAgYXBwU2V0dGluZ3MkOiBPYnNlcnZhYmxlPEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gc3RhdGUgb2YgdGhlIHVzZXIgKGBvbmxpbmVgIG9yIGBvZmZsaW5lYClcbiAgICovXG4gIGNvbm5lY3Rpb25TdGF0ZSQ6IE9ic2VydmFibGU8J29mZmxpbmUnIHwgJ29ubGluZSc+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGxpc3Qgb2YgcGVuZGluZyBpbnZpdGVzIG9mIHRoZSB1c2VyLiBJdCBlbWl0cyBldmVyeSBwZW5kaW5nIGludml0YXRpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGV4dGVuZHMgdGhlIGxpc3Qgd2hlbiBhIG5ldyBpbnZpdGUgaXMgcmVjZWl2ZWQuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBbY2hhbm5lbCBpbnZpdGF0aW9uc10oLi4vY29kZS1leGFtcGxlcy9jaGFubmVsLWludml0ZXMubWR4KSBndWlkZS5cbiAgICovXG4gIHBlbmRpbmdJbnZpdGVzJDogT2JzZXJ2YWJsZTwoQ2hhbm5lbFJlc3BvbnNlPFQ+IHwgQ2hhbm5lbDxUPilbXT47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBjaGF0IHVzZXJcbiAgICovXG4gIHVzZXIkOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZD47XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PENsaWVudEV2ZW50PFQ+PigxKTtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8J29mZmxpbmUnIHwgJ29ubGluZSc+KDEpO1xuICBwcml2YXRlIGFwcFNldHRpbmdzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwcml2YXRlIHBlbmRpbmdJbnZpdGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgKENoYW5uZWxSZXNwb25zZTxUPiB8IENoYW5uZWw8VD4pW11cbiAgPihbXSk7XG4gIHByaXZhdGUgdXNlclN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQ+KDEpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IHsgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5ub3RpZmljYXRpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXRlJCA9IHRoaXMuY29ubmVjdGlvblN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzJCA9IHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXMkID0gdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy51c2VyJCA9IHRoaXMudXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFtgU3RyZWFtQ2hhdGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtanMvYmxvYi82NjhiM2U1NTIxMzM5ZjRlMTRmYzY1NzgzNDUzMWI0YzhiZjgxNzZiL3NyYy9jbGllbnQudHMjTDEyNCkgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIGBhcGlLZXlgLCBhbmQgY29ubmVjdHMgYSB1c2VyIHdpdGggdGhlIGdpdmVuIG1ldGEgZGF0YSBhbmQgdG9rZW4uIE1vcmUgaW5mbyBhYm91dCBbY29ubmVjdGluZyB1c2Vyc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvaW5pdF9hbmRfdXNlcnMvP2xhbmd1YWdlPWphdmFzY3JpcHQpIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi5cbiAgICogQHBhcmFtIGFwaUtleVxuICAgKiBAcGFyYW0gdXNlck9ySWRcbiAgICogQHBhcmFtIHVzZXJUb2tlbk9yUHJvdmlkZXIgWW91IGNhbiBwcm92aWRlIGEgdG9rZW4sIG9yIHRoZSBrZXl3b3JkICdndWVzdCcgdG8gY29ubmVjdCBhcyBbZ3Vlc3QgdXNlcl0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvP2xhbmd1YWdlPWphdmFzY3JpcHQjZ3Vlc3QtdXNlcnMpXG4gICAqIEBwYXJhbSBjbGllbnRPcHRpb25zIFNldHRpbmcgdG8gcHJvdmlkZSB0byB0aGUgU3RyZWFtIGNsaWVudCBpbnN0YW5jZVxuICAgKi9cbiAgYXN5bmMgaW5pdChcbiAgICBhcGlLZXk6IHN0cmluZyxcbiAgICB1c2VyT3JJZDogc3RyaW5nIHwgT3duVXNlclJlc3BvbnNlPFQ+IHwgVXNlclJlc3BvbnNlPFQ+LFxuICAgIHVzZXJUb2tlbk9yUHJvdmlkZXI6IFRva2VuT3JQcm92aWRlciB8ICdndWVzdCcsXG4gICAgY2xpZW50T3B0aW9ucz86IFN0cmVhbUNoYXRPcHRpb25zXG4gICk6IENvbm5lY3RBUElSZXNwb25zZTxUPiB7XG4gICAgdGhpcy5jaGF0Q2xpZW50ID0gU3RyZWFtQ2hhdC5nZXRJbnN0YW5jZTxUPihhcGlLZXksIGNsaWVudE9wdGlvbnMpO1xuICAgIHRoaXMuY2hhdENsaWVudC5kZXZUb2tlbjtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGF3YWl0IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0eXBlb2YgdXNlck9ySWQgPT09ICdzdHJpbmcnID8geyBpZDogdXNlck9ySWQgfSA6IHVzZXJPcklkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICB1c2VyVG9rZW5PclByb3ZpZGVyID09PSAnZ3Vlc3QnXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuY2hhdENsaWVudC5zZXRHdWVzdFVzZXIodXNlcilcbiAgICAgICAgICAgIDogYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmNvbm5lY3RVc2VyKHVzZXIsIHVzZXJUb2tlbk9yUHJvdmlkZXIpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBjb25uZWN0aW5nIHRvIGNoYXQsIHJlZnJlc2ggdGhlIHBhZ2UgdG8gdHJ5IGFnYWluLicsXG4gICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICApO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh0aGlzLmNoYXRDbGllbnQudXNlcik7XG4gICAgICBjb25zdCBzZGtQcmVmaXggPSAnc3RyZWFtLWNoYXQtYW5ndWxhcic7XG4gICAgICBpZiAoIXRoaXMuY2hhdENsaWVudC5nZXRVc2VyQWdlbnQoKS5pbmNsdWRlcyhzZGtQcmVmaXgpKSB7XG4gICAgICAgIHRoaXMuY2hhdENsaWVudC5zZXRVc2VyQWdlbnQoXG4gICAgICAgICAgYCR7c2RrUHJlZml4fS0ke3ZlcnNpb259LSR7dGhpcy5jaGF0Q2xpZW50LmdldFVzZXJBZ2VudCgpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjaGFubmVscyA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5xdWVyeUNoYW5uZWxzKFxuICAgICAgeyBpbnZpdGU6ICdwZW5kaW5nJyB9IGFzIGFueSBhcyBDaGFubmVsRmlsdGVyczxUPiwgLy8gVE9ETzogZmluZCBvdXQgd2h5IHdlIG5lZWQgdGhpcyB0eXBlY2FzdFxuICAgICAge30sXG4gICAgICB7IHVzZXJfaWQ6IHRoaXMuY2hhdENsaWVudC51c2VyPy5pZCB9XG4gICAgKTtcbiAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KGNoYW5uZWxzKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQub24oKGUpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQZW5kaW5nSW52aXRlcyhlKTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICAgIGV2ZW50VHlwZTogZS50eXBlLFxuICAgICAgICAgIGV2ZW50OiBlLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBsZXQgcmVtb3ZlTm90aWZpY2F0aW9uOiB1bmRlZmluZWQgfCBGdW5jdGlvbjtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5vbignY29ubmVjdGlvbi5jaGFuZ2VkJywgKGUpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc09ubGluZSA9IGUub25saW5lO1xuICAgICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgICAnc3RyZWFtQ2hhdC5Db25uZWN0aW9uIGZhaWx1cmUsIHJlY29ubmVjdGluZyBub3cuLi4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXRlU3ViamVjdC5uZXh0KGlzT25saW5lID8gJ29ubGluZScgOiAnb2ZmbGluZScpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBjdXJyZW50IHVzZXIsIGFuZCBjbG9zZXMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLiBVc2VmdWwgd2hlbiBkaXNjb25uZWN0aW5nIGEgY2hhdCB1c2VyLCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCBbYHJlc2V0YF0oLi9DaGFubmVsU2VydmljZS5tZHgvI3Jlc2V0KS5cbiAgICovXG4gIGFzeW5jIGRpc2Nvbm5lY3RVc2VyKCkge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5kaXNjb25uZWN0VXNlcigpO1xuICAgIHRoaXMudXNlclN1YmplY3QubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjdXJyZW50IFthcHBsaWNhdGlvbiBzZXR0aW5nc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXBwX3NldHRpbmdfb3ZlcnZpZXcvP2xhbmd1YWdlPWphdmFzY3JpcHQpLCBpZiB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkLCBpdCBkb2VzIG5vdGhpbmcuXG4gICAqL1xuICBhc3luYyBnZXRBcHBTZXR0aW5ncygpIHtcbiAgICBpZiAodGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQoKHNldHRpbmdzLmFwcCBhcyBBcHBTZXR0aW5ncykgfHwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgZ2l2ZW4gSUQuIElmIHlvdSB3YW50IHRvIGtub3cgW21vcmUgYWJvdXQgZmxhZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L21vZGVyYXRpb24vP2xhbmd1YWdlPWphdmFzY3JpcHQpIGNoZWNrIG91dCB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZFxuICAgKi9cbiAgYXN5bmMgZmxhZ01lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZmxhZ01lc3NhZ2UobWVzc2FnZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyBmb3IgdXNlcnMgaW4gdGhlIGFwcGxpY2F0aW9uIHRoYXQgaGF2ZSBJRCBvciBuYW1lIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gc2VhcmNoVGVybVxuICAgKiBAcmV0dXJucyBUaGUgdXNlcnMgbWF0Y2hpbmcgdGhlIHNlYXJjaFxuICAgKi9cbiAgYXN5bmMgYXV0b2NvbXBsZXRlVXNlcnMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5xdWVyeVVzZXJzKHtcbiAgICAgICRvcjogW1xuICAgICAgICB7IGlkOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgICB7IG5hbWU6IHsgJGF1dG9jb21wbGV0ZTogc2VhcmNoVGVybSB9IH0sXG4gICAgICBdLFxuICAgICAgaWQ6IHsgJG5lOiB0aGlzLmNoYXRDbGllbnQudXNlcklEISB9LFxuICAgIH0gYXMgVXNlckZpbHRlcnM8VD4pOyAvLyBUT0RPOiBmaW5kIG91dCB3aHkgd2UgbmVlZCB0aGlzIHR5cGVjYXN0XG4gICAgcmV0dXJuIHJlc3VsdC51c2VycztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGVuZGluZ0ludml0ZXMoZTogRXZlbnQ8VD4pIHtcbiAgICBpZiAoZS5tZW1iZXI/LnVzZXI/LmlkID09PSB0aGlzLmNoYXRDbGllbnQudXNlcj8uaWQgJiYgZS5jaGFubmVsKSB7XG4gICAgICBjb25zdCBwZW5kaW5nSW52aXRlcyA9IHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICBpZiAoZS50eXBlID09PSAnbm90aWZpY2F0aW9uLmludml0ZWQnKSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoWy4uLnBlbmRpbmdJbnZpdGVzLCBlLmNoYW5uZWxdKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGUudHlwZSA9PT0gJ25vdGlmaWNhdGlvbi5pbnZpdGVfYWNjZXB0ZWQnIHx8XG4gICAgICAgIGUudHlwZSA9PT0gJ25vdGlmaWNhdGlvbi5pbnZpdGVfcmVqZWN0ZWQnXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBwZW5kaW5nSW52aXRlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGkpID0+IGk/LmNpZCA9PT0gZS5jaGFubmVsPy5jaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHBlbmRpbmdJbnZpdGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QubmV4dChbLi4ucGVuZGluZ0ludml0ZXNdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBV2xFLE9BQU8sRUFBc0IsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUF5QzVCLFlBQ1UsTUFBYyxFQUNkLG1CQUF3QztRQUR4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWIxQyx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUM5QyxTQUFTLENBQ1YsQ0FBQztRQUNNLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUVqRCxFQUFFLENBQUMsQ0FBQztRQUNFLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQThCLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQWtDLEVBQUUsQ0FBQztRQU14RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxD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QUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFBRTtnQkFDckMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNLElBQ0wsQ0FBQyxDQUFDLElBQUksS0FBSyw4QkFBOEI7Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLEtBQUssOEJBQThCLEVBQ3pDO2dCQUNBLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLEdBQUcsT0FBSyxNQUFBLENBQUMsQ0FBQyxPQUFPLDBDQUFFLEdBQUcsQ0FBQSxDQUFBLEVBQUEsQ0FDakMsQ0FBQztnQkFDRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDaEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzhHQTFNVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ2hhbm5lbCxcbiAgQ2hhbm5lbEZpbHRlcnMsXG4gIENoYW5uZWxSZXNwb25zZSxcbiAgQ29ubmVjdEFQSVJlc3BvbnNlLFxuICBPd25Vc2VyUmVzcG9uc2UsXG4gIFN0cmVhbUNoYXRPcHRpb25zLFxuICBVc2VyRmlsdGVycyxcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBcHBTZXR0aW5ncywgRXZlbnQsIFN0cmVhbUNoYXQsIFRva2VuT3JQcm92aWRlciB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9hc3NldHMvdmVyc2lvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIENsaWVudEV2ZW50PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudDogRXZlbnQ8VD47XG59O1xuXG4vKipcbiAqIFRoZSBgQ2hhdENsaWVudGAgc2VydmljZSBjb25uZWN0cyB0aGUgdXNlciB0byB0aGUgU3RyZWFtIGNoYXQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Q2xpZW50U2VydmljZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+IHtcbiAgLyoqXG4gICAqIFRoZSBbU3RyZWFtQ2hhdCBjbGllbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtanMvYmxvYi9tYXN0ZXIvc3JjL2NsaWVudC50cykgaW5zdGFuY2UuIEluIGdlbmVyYWwgeW91IHNob3VsZG4ndCBuZWVkIHRvIGFjY2VzcyB0aGUgY2xpZW50LCBidXQgaXQncyB0aGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgaXQuXG4gICAqL1xuICBjaGF0Q2xpZW50ITogU3RyZWFtQ2hhdDxUPjtcbiAgLyoqXG4gICAqIEVtaXRzIFtgQ2xpZW50RXZlbnRgXShodHRwczovL2dpdGh1Yi5jb20vR2V0U3RyZWFtL3N0cmVhbS1jaGF0LWFuZ3VsYXIvYmxvYi9tYXN0ZXIvcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYXQtY2xpZW50LnNlcnZpY2UudHMpIGV2ZW50cy4gVGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gY292ZXJzIFt0aGUgbGlzdCBvZiBjbGllbnQsIHVzZXIgcHJlc2VuY2UgYW5kIG5vdGlmaWNhdGlvbiBldmVudHNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2V2ZW50X29iamVjdC8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuXG4gICAqIDo6OmltcG9ydGFudFxuICAgKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGlzIE9ic2VydmFibGUgb3BlcmF0ZXMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHpvbmUuIElmIHlvdSBzdWJzY3JpYmUgdG8gaXQsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlZW50ZXIgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gem9uZSwgb3VyIFtDaGFuZ2UgZGV0ZWN0aW9uIGd1aWRlXSguLi9jb25jZXB0cy9jaGFuZ2UtZGV0ZWN0aW9uLm1keCkgZXhwbGFpbnMgdGhpcyBpbiBkZXRhaWwuXG4gICAqIDo6OlxuICAgKi9cbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxDbGllbnRFdmVudDxUPj47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgY3VycmVudCBbYXBwbGljYXRpb24gc2V0dGluZ3NdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2FwcF9zZXR0aW5nX292ZXJ2aWV3Lz9sYW5ndWFnZT1qYXZhc2NyaXB0KS4gU2luY2UgZ2V0dGluZyB0aGUgYXBwbGljYXRpb24gc2V0dGluZ3MgaXMgYW4gZXhwZW5zaXZlIEFQSSBjYWxsIGFuZCB3ZSBkb24ndCBhbHdheXMgbmVlZCB0aGUgcmVzdWx0LCB0aGlzIGlzIG5vdCBpbml0aWFsaXplZCBieSBkZWZhdWx0LCB5b3UgbmVlZCB0byBjYWxsIGBnZXRBcHBsaWNhdGlvblNldHRpbmdzYCB0byBsb2FkIHRoZW0uXG4gICAqL1xuICBhcHBTZXR0aW5ncyQ6IE9ic2VydmFibGU8QXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBzdGF0ZSBvZiB0aGUgdXNlciAoYG9ubGluZWAgb3IgYG9mZmxpbmVgKVxuICAgKi9cbiAgY29ubmVjdGlvblN0YXRlJDogT2JzZXJ2YWJsZTwnb2ZmbGluZScgfCAnb25saW5lJz47XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgbGlzdCBvZiBwZW5kaW5nIGludml0ZXMgb2YgdGhlIHVzZXIuIEl0IGVtaXRzIGV2ZXJ5IHBlbmRpbmcgaW52aXRhdGlvbiBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gZXh0ZW5kcyB0aGUgbGlzdCB3aGVuIGEgbmV3IGludml0ZSBpcyByZWNlaXZlZC4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIFtjaGFubmVsIGludml0YXRpb25zXSguLi9jb2RlLWV4YW1wbGVzL2NoYW5uZWwtaW52aXRlcy5tZHgpIGd1aWRlLlxuICAgKi9cbiAgcGVuZGluZ0ludml0ZXMkOiBPYnNlcnZhYmxlPChDaGFubmVsUmVzcG9uc2U8VD4gfCBDaGFubmVsPFQ+KVtdPjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IGNoYXQgdXNlclxuICAgKi9cbiAgdXNlciQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPFQ+IHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Q2xpZW50RXZlbnQ8VD4+KDEpO1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0ZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDwnb2ZmbGluZScgfCAnb25saW5lJz4oMSk7XG4gIHByaXZhdGUgYXBwU2V0dGluZ3NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgcGVuZGluZ0ludml0ZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAoQ2hhbm5lbFJlc3BvbnNlPFQ+IHwgQ2hhbm5lbDxUPilbXVxuICA+KFtdKTtcbiAgcHJpdmF0ZSB1c2VyU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFVzZXJSZXNwb25zZTxUPiB8IHVuZGVmaW5lZD4oMSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3MkID0gdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlcyQgPSB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnVzZXIkID0gdGhpcy51c2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgW2BTdHJlYW1DaGF0YF0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1qcy9ibG9iLzY2OGIzZTU1MjEzMzlmNGUxNGZjNjU3ODM0NTMxYjRjOGJmODE3NmIvc3JjL2NsaWVudC50cyNMMTI0KSBpbnN0YW5jZSB1c2luZyB0aGUgcHJvdmlkZWQgYGFwaUtleWAsIGFuZCBjb25uZWN0cyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gbWV0YSBkYXRhIGFuZCB0b2tlbi4gTW9yZSBpbmZvIGFib3V0IFtjb25uZWN0aW5nIHVzZXJzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9pbml0X2FuZF91c2Vycy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgY2FuIGJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gYXBpS2V5XG4gICAqIEBwYXJhbSB1c2VyT3JJZCB5b3UgY2FuIGVtaXQgdGhpcyBmb3IgYW5vbnltb3VzIGxvZ2luc1xuICAgKiBAcGFyYW0gdXNlclRva2VuT3JQcm92aWRlciBZb3UgY2FuIHByb3ZpZGU6PHVsPlxuICAgKiAgPGxpPiBhIHRva2VuLCA8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnZ3Vlc3QnIHRvIGNvbm5lY3QgYXMgW2d1ZXN0IHVzZXJdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2F1dGhsZXNzX3VzZXJzLz9sYW5ndWFnZT1qYXZhc2NyaXB0I2d1ZXN0LXVzZXJzKSA8L2xpPlxuICAgKiAgPGxpPiB0aGUga2V5d29yZCAnYW5vbnltb3VzJyB0byBjb25uZWN0IGFzIFthbm9ueW1vdXMgdXNlcl0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvYXV0aGxlc3NfdXNlcnMvP2xhbmd1YWdlPWphdmFzY3JpcHQjYW5vbnltb3VzLXVzZXJzKSA8L2xpPlxuICAgKiAgPC91bD5cbiAgICogQHBhcmFtIGNsaWVudE9wdGlvbnMgU2V0dGluZyB0byBwcm92aWRlIHRvIHRoZSBTdHJlYW0gY2xpZW50IGluc3RhbmNlXG4gICAqL1xuICBhc3luYyBpbml0KFxuICAgIGFwaUtleTogc3RyaW5nLFxuICAgIHVzZXJPcklkOiBzdHJpbmcgfCBPd25Vc2VyUmVzcG9uc2U8VD4gfCBVc2VyUmVzcG9uc2U8VD4gfCB1bmRlZmluZWQsXG4gICAgdXNlclRva2VuT3JQcm92aWRlcjogVG9rZW5PclByb3ZpZGVyIHwgJ2Fub255bW91cycgfCAnZ3Vlc3QnLFxuICAgIGNsaWVudE9wdGlvbnM/OiBTdHJlYW1DaGF0T3B0aW9uc1xuICApOiBDb25uZWN0QVBJUmVzcG9uc2U8VD4ge1xuICAgIHRoaXMuY2hhdENsaWVudCA9IFN0cmVhbUNoYXQuZ2V0SW5zdGFuY2U8VD4oYXBpS2V5LCBjbGllbnRPcHRpb25zKTtcbiAgICB0aGlzLmNoYXRDbGllbnQuZGV2VG9rZW47XG4gICAgbGV0IHJlc3VsdDtcbiAgICBhd2FpdCB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdHlwZW9mIHVzZXJPcklkID09PSAnc3RyaW5nJyA/IHsgaWQ6IHVzZXJPcklkIH0gOiB1c2VyT3JJZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBndWVzdDogKCkgPT4gdGhpcy5jaGF0Q2xpZW50LnNldEd1ZXN0VXNlcih1c2VyISksXG4gICAgICAgICAgICBhbm9ueW1vdXM6ICgpID0+IHRoaXMuY2hhdENsaWVudC5jb25uZWN0QW5vbnltb3VzVXNlcigpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIH1bYCR7dXNlclRva2VuT3JQcm92aWRlcn1gXSA/P1xuICAgICAgICAgICgoKSA9PiB0aGlzLmNoYXRDbGllbnQuY29ubmVjdFVzZXIodXNlciEsIHVzZXJUb2tlbk9yUHJvdmlkZXIpKVxuICAgICAgICApKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGNvbm5lY3RpbmcgdG8gY2hhdCwgcmVmcmVzaCB0aGUgcGFnZSB0byB0cnkgYWdhaW4uJyxcbiAgICAgICAgICAnZXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHRoaXMuY2hhdENsaWVudC51c2VyKTtcbiAgICAgIGNvbnN0IHNka1ByZWZpeCA9ICdzdHJlYW0tY2hhdC1hbmd1bGFyJztcbiAgICAgIGlmICghdGhpcy5jaGF0Q2xpZW50LmdldFVzZXJBZ2VudCgpLmluY2x1ZGVzKHNka1ByZWZpeCkpIHtcbiAgICAgICAgdGhpcy5jaGF0Q2xpZW50LnNldFVzZXJBZ2VudChcbiAgICAgICAgICBgJHtzZGtQcmVmaXh9LSR7dmVyc2lvbn0tJHt0aGlzLmNoYXRDbGllbnQuZ2V0VXNlckFnZW50KCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICB7IGludml0ZTogJ3BlbmRpbmcnIH0gYXMgYW55IGFzIENoYW5uZWxGaWx0ZXJzPFQ+LCAvLyBUT0RPOiBmaW5kIG91dCB3aHkgd2UgbmVlZCB0aGlzIHR5cGVjYXN0XG4gICAgICB7fSxcbiAgICAgIHsgdXNlcl9pZDogdGhpcy5jaGF0Q2xpZW50LnVzZXI/LmlkIH1cbiAgICApO1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgIHRoaXMuYXBwU2V0dGluZ3NTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5vbigoZSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVBlbmRpbmdJbnZpdGVzKGUpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBlLnR5cGUsXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIGxldCByZW1vdmVOb3RpZmljYXRpb246IHVuZGVmaW5lZCB8IEZ1bmN0aW9uO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGF0Q2xpZW50Lm9uKCdjb25uZWN0aW9uLmNoYW5nZWQnLCAoZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzT25saW5lID0gZS5vbmxpbmU7XG4gICAgICAgICAgaWYgKGlzT25saW5lKSB7XG4gICAgICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVOb3RpZmljYXRpb24gPVxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAgICdzdHJlYW1DaGF0LkNvbm5lY3Rpb24gZmFpbHVyZSwgcmVjb25uZWN0aW5nIG5vdy4uLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0Lm5leHQoaXNPbmxpbmUgPyAnb25saW5lJyA6ICdvZmZsaW5lJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRGlzY29ubmVjdHMgdGhlIGN1cnJlbnQgdXNlciwgYW5kIGNsb3NlcyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uIFVzZWZ1bCB3aGVuIGRpc2Nvbm5lY3RpbmcgYSBjaGF0IHVzZXIsIHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIFtgcmVzZXRgXSguL0NoYW5uZWxTZXJ2aWNlLm1keC8jcmVzZXQpLlxuICAgKi9cbiAgYXN5bmMgZGlzY29ubmVjdFVzZXIoKSB7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QubmV4dChbXSk7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmRpc2Nvbm5lY3RVc2VyKCk7XG4gICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGN1cnJlbnQgW2FwcGxpY2F0aW9uIHNldHRpbmdzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9hcHBfc2V0dGluZ19vdmVydmlldy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCksIGlmIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5ncyBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQsIGl0IGRvZXMgbm90aGluZy5cbiAgICovXG4gIGFzeW5jIGdldEFwcFNldHRpbmdzKCkge1xuICAgIGlmICh0aGlzLmFwcFNldHRpbmdzU3ViamVjdC5nZXRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNldHRpbmdzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmdldEFwcFNldHRpbmdzKCk7XG4gICAgdGhpcy5hcHBTZXR0aW5nc1N1YmplY3QubmV4dCgoc2V0dGluZ3MuYXBwIGFzIEFwcFNldHRpbmdzKSB8fCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyB0aGUgbWVzc2FnZSB3aXRoIHRoZSBnaXZlbiBJRC4gSWYgeW91IHdhbnQgdG8ga25vdyBbbW9yZSBhYm91dCBmbGFnc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvbW9kZXJhdGlvbi8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgY2hlY2sgb3V0IHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkXG4gICAqL1xuICBhc3luYyBmbGFnTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5mbGFnTWVzc2FnZShtZXNzYWdlSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB1c2VycyBpbiB0aGUgYXBwbGljYXRpb24gdGhhdCBoYXZlIElEIG9yIG5hbWUgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCB0ZXJtXG4gICAqIEBwYXJhbSBzZWFyY2hUZXJtXG4gICAqIEByZXR1cm5zIFRoZSB1c2VycyBtYXRjaGluZyB0aGUgc2VhcmNoXG4gICAqL1xuICBhc3luYyBhdXRvY29tcGxldGVVc2VycyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50LnF1ZXJ5VXNlcnMoe1xuICAgICAgJG9yOiBbXG4gICAgICAgIHsgaWQ6IHsgJGF1dG9jb21wbGV0ZTogc2VhcmNoVGVybSB9IH0sXG4gICAgICAgIHsgbmFtZTogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgIF0sXG4gICAgICBpZDogeyAkbmU6IHRoaXMuY2hhdENsaWVudC51c2VySUQhIH0sXG4gICAgfSBhcyBVc2VyRmlsdGVyczxUPik7IC8vIFRPRE86IGZpbmQgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgdHlwZWNhc3RcbiAgICByZXR1cm4gcmVzdWx0LnVzZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQZW5kaW5nSW52aXRlcyhlOiBFdmVudDxUPikge1xuICAgIGlmIChlLm1lbWJlcj8udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudC51c2VyPy5pZCAmJiBlLmNoYW5uZWwpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdJbnZpdGVzID0gdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGlmIChlLnR5cGUgPT09ICdub3RpZmljYXRpb24uaW52aXRlZCcpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc1N1YmplY3QubmV4dChbLi4ucGVuZGluZ0ludml0ZXMsIGUuY2hhbm5lbF0pO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZS50eXBlID09PSAnbm90aWZpY2F0aW9uLmludml0ZV9hY2NlcHRlZCcgfHxcbiAgICAgICAgZS50eXBlID09PSAnbm90aWZpY2F0aW9uLmludml0ZV9yZWplY3RlZCdcbiAgICAgICkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHBlbmRpbmdJbnZpdGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoaSkgPT4gaT8uY2lkID09PSBlLmNoYW5uZWw/LmNpZFxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgcGVuZGluZ0ludml0ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzU3ViamVjdC5uZXh0KFsuLi5wZW5kaW5nSW52aXRlc10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -20,7 +20,7 @@ import transliterate from '@stream-io/transliterate';
20
20
  import * as i8 from 'angular-mentions';
21
21
  import { MentionModule } from 'angular-mentions';
22
22
 
23
- const version = '4.31.2';
23
+ const version = '4.32.1';
24
24
 
25
25
  /**
26
26
  * The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
@@ -120,8 +120,12 @@ class ChatClientService {
120
120
  /**
121
121
  * Creates a [`StreamChat`](https://github.com/GetStream/stream-chat-js/blob/668b3e5521339f4e14fc657834531b4c8bf8176b/src/client.ts#L124) instance using the provided `apiKey`, and connects a user with the given meta data and token. More info about [connecting users](https://getstream.io/chat/docs/javascript/init_and_users/?language=javascript) can be found in the platform documentation.
122
122
  * @param apiKey
123
- * @param userOrId
124
- * @param userTokenOrProvider You can provide a token, or the keyword 'guest' to connect as [guest user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#guest-users)
123
+ * @param userOrId you can emit this for anonymous logins
124
+ * @param userTokenOrProvider You can provide:<ul>
125
+ * <li> a token, </li>
126
+ * <li> the keyword 'guest' to connect as [guest user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#guest-users) </li>
127
+ * <li> the keyword 'anonymous' to connect as [anonymous user](https://getstream.io/chat/docs/javascript/authless_users/?language=javascript#anonymous-users) </li>
128
+ * </ul>
125
129
  * @param clientOptions Setting to provide to the Stream client instance
126
130
  */
127
131
  init(apiKey, userOrId, userTokenOrProvider, clientOptions) {
@@ -131,12 +135,14 @@ class ChatClientService {
131
135
  this.chatClient.devToken;
132
136
  let result;
133
137
  yield this.ngZone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
138
+ var _b;
134
139
  const user = typeof userOrId === 'string' ? { id: userOrId } : userOrId;
135
140
  try {
136
- result =
137
- userTokenOrProvider === 'guest'
138
- ? yield this.chatClient.setGuestUser(user)
139
- : yield this.chatClient.connectUser(user, userTokenOrProvider);
141
+ result = yield ((_b = {
142
+ guest: () => this.chatClient.setGuestUser(user),
143
+ anonymous: () => this.chatClient.connectAnonymousUser(),
144
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
145
+ }[`${userTokenOrProvider}`]) !== null && _b !== void 0 ? _b : (() => this.chatClient.connectUser(user, userTokenOrProvider)))();
140
146
  }
141
147
  catch (error) {
142
148
  this.notificationService.addPermanentNotification('streamChat.Error connecting to chat, refresh the page to try again.', 'error');
@@ -3705,6 +3711,9 @@ class ChannelComponent {
3705
3711
  this.channelService = channelService;
3706
3712
  this.themeService = themeService;
3707
3713
  this.subscriptions = [];
3714
+ this.isChrome =
3715
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
3716
+ !!window.chrome && typeof window.opr === 'undefined';
3708
3717
  this.isError$ = combineLatest([
3709
3718
  this.channelService.channelQueryState$,
3710
3719
  this.channelService.activeChannel$,
@@ -3723,7 +3732,7 @@ class ChannelComponent {
3723
3732
  }
3724
3733
  }
3725
3734
  ChannelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelComponent, deps: [{ token: ChannelService }, { token: ThemeService }], target: i0.ɵɵFactoryTarget.Component });
3726
- ChannelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelComponent, selector: "stream-channel", ngImport: i0, template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n>\n <div\n class=\"str-chat__container\"\n *ngIf=\"\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true;\n else noChannel\n \"\n >\n <div class=\"str-chat__main-panel\">\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"isActiveThread$ | async\"\n select='[name=\"thread\"]'\n ></ng-content>\n </div>\n <ng-template #noChannel>\n <div\n class=\"str-chat__empty-channel\"\n *ngIf=\"\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n \"\n >\n <stream-icon icon=\"chat-bubble\"></stream-icon>\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n <div\n *ngIf=\"\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n \"\n class=\"str-chat__loading-channel\"\n >\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", components: [{ type: IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe, "translate": i9.TranslatePipe } });
3735
+ ChannelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelComponent, selector: "stream-channel", ngImport: i0, template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n [class.google-chrome]=\"isChrome\"\n>\n <div\n class=\"str-chat__container\"\n *ngIf=\"\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true;\n else noChannel\n \"\n >\n <div class=\"str-chat__main-panel\">\n <ng-content></ng-content>\n </div>\n <ng-content\n *ngIf=\"isActiveThread$ | async\"\n select='[name=\"thread\"]'\n ></ng-content>\n </div>\n <ng-template #noChannel>\n <div\n class=\"str-chat__empty-channel\"\n *ngIf=\"\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n \"\n >\n <stream-icon icon=\"chat-bubble\"></stream-icon>\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n <div\n *ngIf=\"\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n \"\n class=\"str-chat__loading-channel\"\n >\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", components: [{ type: IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: NotificationListComponent, selector: "stream-notification-list" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe, "translate": i9.TranslatePipe } });
3727
3736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelComponent, decorators: [{
3728
3737
  type: Component,
3729
3738
  args: [{