stream-chat-angular 6.3.0 → 6.3.2

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.
@@ -107,10 +107,10 @@ export class PollActionsComponent extends BasePollComponent {
107
107
  }
108
108
  }
109
109
  PollActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i0.ChangeDetectorRef }, { token: i3.ChannelService }, { token: i4.NotificationService }, { token: i5.MessageActionsService }], target: i0.ɵɵFactoryTarget.Component });
110
- PollActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollActionsComponent, selector: "stream-poll-actions", inputs: { maxOptionsDisplayed: "maxOptionsDisplayed", maxPollOptions: "maxPollOptions" }, viewQueries: [{ propertyName: "allOptions", first: true, predicate: ["allOptions"], descendants: true }, { propertyName: "suggestOption", first: true, predicate: ["suggestOption"], descendants: true }, { propertyName: "addAnswer", first: true, predicate: ["addAnswer"], descendants: true }, { propertyName: "viewComments", first: true, predicate: ["viewComments"], descendants: true }, { propertyName: "viewResults", first: true, predicate: ["viewResults"], descendants: true }, { propertyName: "endVote", first: true, predicate: ["endVote"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll options\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i9.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i10.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i11.PollResultsListComponent, selector: "stream-poll-results-list" }, { kind: "component", type: i12.PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: ["upsertOwnAnswer"] }, { kind: "component", type: i13.UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: ["answer", "closeModal"] }, { kind: "component", type: i14.AddOptionComponent, selector: "stream-add-option", inputs: ["closeModal"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
+ PollActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollActionsComponent, selector: "stream-poll-actions", inputs: { maxOptionsDisplayed: "maxOptionsDisplayed", maxPollOptions: "maxPollOptions" }, viewQueries: [{ propertyName: "allOptions", first: true, predicate: ["allOptions"], descendants: true }, { propertyName: "suggestOption", first: true, predicate: ["suggestOption"], descendants: true }, { propertyName: "addAnswer", first: true, predicate: ["addAnswer"], descendants: true }, { propertyName: "viewComments", first: true, predicate: ["viewComments"], descendants: true }, { propertyName: "viewResults", first: true, predicate: ["viewResults"], descendants: true }, { propertyName: "endVote", first: true, predicate: ["endVote"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i9.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i10.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i11.PollResultsListComponent, selector: "stream-poll-results-list" }, { kind: "component", type: i12.PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: ["upsertOwnAnswer"] }, { kind: "component", type: i13.UpsertAnswerComponent, selector: "stream-upsert-answer", inputs: ["answer", "closeModal"] }, { kind: "component", type: i14.AddOptionComponent, selector: "stream-add-option", inputs: ["closeModal"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
111
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollActionsComponent, decorators: [{
112
112
  type: Component,
113
- args: [{ selector: 'stream-poll-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll options\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
113
+ args: [{ selector: 'stream-poll-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll-actions\">\n <ng-container\n *ngIf=\"maxOptionsDisplayed && options.length > maxOptionsDisplayed\"\n >\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('allOptions')\">\n {{ \"streamChat.See all options ({{count}})\" | translate:{count:\n options.length} }}\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"\n allowUserSuggestions &&\n canVote &&\n !isClosed &&\n options.length < maxPollOptions\n \"\n >\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('suggestOption')\"\n >\n {{ \"streamChat.Suggest an option\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"allowAnswers && canVote && !isClosed\">\n <button\n class=\"str-chat__poll-action\"\n (click)=\"modalOpened('addAnswer')\"\n (keyup.enter)=\"modalOpened('addAnswer')\"\n >\n <ng-container *ngIf=\"ownAnwer; else newAnswer\">\n {{ \"streamChat.Update your comment\" | translate }}\n </ng-container>\n <ng-template #newAnswer>\n {{ \"streamChat.Add a comment\" | translate }}\n </ng-template>\n </button>\n </ng-container>\n <ng-container *ngIf=\"answerCount > 0 && canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewComments')\">\n {{ (answerCount === 1 ? \"streamChat.View {{ count }} comment\" :\n \"streamChat.View {{ count }} comments\") | translate:{count: answerCount}\n }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"canQueryVotes\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('viewResults')\">\n {{ \"streamChat.View results\" | translate }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"isOwnPoll && !isClosed\">\n <button class=\"str-chat__poll-action\" (click)=\"modalOpened('endVote')\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedAction\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__poll-actions str-chat-angular__poll-actions\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #allOptions>\n <div class=\"str-chat__modal__poll-option-list str-chat-angular__poll-actions\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Poll options\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__modal__poll-option-list__body\">\n <div class=\"str-chat__modal__poll-option-list__title\">{{ name }}</div>\n <stream-poll-options-list\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [maxOptionsDisplayed]=\"undefined\"\n ></stream-poll-options-list>\n <stream-notification-list></stream-notification-list>\n </div>\n </div>\n</ng-template>\n<ng-template #suggestOption>\n <stream-add-option\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [closeModal]=\"modalClosed\"\n ></stream-add-option>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #addAnswer>\n <stream-upsert-answer\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n [answer]=\"ownAnwer\"\n [closeModal]=\"modalClosed\"\n ></stream-upsert-answer>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewComments>\n <stream-poll-answers-list\n (upsertOwnAnswer)=\"modalOpened('addAnswer')\"\n [pollId]=\"pollId\"\n [messageId]=\"messageId\"\n ></stream-poll-answers-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #viewResults>\n <stream-poll-results-list\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-results-list>\n <stream-notification-list></stream-notification-list>\n</ng-template>\n<ng-template #endVote>\n <div\n class=\"str-chat__dialog str-chat__dialog--prompt str-chat__modal__end-vote\"\n >\n <div class=\"str-chat__dialog__body\">\n <div class=\"str-chat__dialog__title\" translate>streamChat.End vote</div>\n <div class=\"str-chat__dialog__prompt\" translate>\n streamChat.After a poll is closed, no more votes can be cast\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button\"\n (click)=\"modalClosed()\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button class=\"str-chat__dialog__controls-button\" (click)=\"closePoll()\">\n {{ \"streamChat.End vote\" | translate }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
114
114
  }], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i0.ChangeDetectorRef }, { type: i3.ChannelService }, { type: i4.NotificationService }, { type: i5.MessageActionsService }]; }, propDecorators: { maxOptionsDisplayed: [{
115
115
  type: Input
116
116
  }], maxPollOptions: [{
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
134
134
  type: ViewChild,
135
135
  args: ['endVote']
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQTBCekQsWUFDRSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLG1CQUF3QyxFQUNoQyxjQUFxQztRQUU3QyxLQUFLLENBQ0gsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBL0IvQzs7V0FFRztRQUNNLHdCQUFtQixHQUF1QixFQUFFLENBQUM7UUFDdEQ7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUM5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FB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Q0FDL0MsK0JBQStCLENBQ2hDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLG1CQUFtQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7aUhBdEhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGl1QkNsQ2pDLDBrS0EySkE7MkZEekhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTtnUkFNdEMsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBV21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0YsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDQyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyLCBQb2xsT3B0aW9uIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBBY3Rpb24gPVxuICB8ICdhbGxPcHRpb25zJ1xuICB8ICdzdWdnZXN0T3B0aW9uJ1xuICB8ICdhZGRBbnN3ZXInXG4gIHwgJ3ZpZXdDb21tZW50cydcbiAgfCAndmlld1Jlc3VsdHMnXG4gIHwgJ2VuZFZvdGUnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIG1vcmUgb3B0aW9ucyB0aGFuIHRoaXMgbnVtYmVyLCB0aGUgXCJTZWUgYWxsIG9wdGlvbnNcIiBidXR0b24gd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1heE9wdGlvbnNEaXNwbGF5ZWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMgYWxsb3dlZCBmb3IgdGhlIHBvbGwsIHRoaXMgaXMgZGVmaW5lZCBieSBTdHJlYW0gQVBJXG4gICAqL1xuICBASW5wdXQoKSBtYXhQb2xsT3B0aW9ucyA9IDEwMDtcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgYWxsb3dVc2VyU3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgYWxsb3dBbnN3ZXJzID0gZmFsc2U7XG4gIGFuc3dlckNvdW50ID0gMDtcbiAgaXNPd25Qb2xsID0gZmFsc2U7XG4gIG93bkFud2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhbGxPcHRpb25zJykgYWxsT3B0aW9ucyE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdzdWdnZXN0T3B0aW9uJykgc3VnZ2VzdE9wdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdhZGRBbnN3ZXInKSBhZGRBbnN3ZXIhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgndmlld0NvbW1lbnRzJykgdmlld0NvbW1lbnRzITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdSZXN1bHRzJykgdmlld1Jlc3VsdHMhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgnZW5kVm90ZScpIGVuZFZvdGUhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICAgIGNoYXRDbGllbnRTZXJ2aWNlLFxuICAgICAgY2RSZWYsXG4gICAgICBjaGFubmVsU2VydmljZSxcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9uczogc3RhdGUuYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucyxcbiAgICAgICAgYWxsb3dfYW5zd2Vyczogc3RhdGUuYWxsb3dfYW5zd2VycyxcbiAgICAgICAgYW5zd2VyX2NvdW50OiBzdGF0ZS5hbnN3ZXJzX2NvdW50LFxuICAgICAgICBjcmVhdGVkX2J5OiBzdGF0ZS5jcmVhdGVkX2J5LFxuICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICBvd25fYW5zd2VyOiBzdGF0ZS5vd25BbnN3ZXIsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBzdGF0ZS5tYXhfdm90ZXNfYWxsb3dlZCxcbiAgICAgICAgb3duX3ZvdGVzX2J5X29wdGlvbl9pZDogc3RhdGUub3duVm90ZXNCeU9wdGlvbklkLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxvd1VzZXJTdWdnZXN0aW9ucyA9IHN0YXRlLmFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxsb3dBbnN3ZXJzID0gc3RhdGUuYWxsb3dfYW5zd2VycyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbnN3ZXJDb3VudCA9IHN0YXRlLmFuc3dlcl9jb3VudCA/PyAwO1xuICAgICAgICB0aGlzLmlzT3duUG9sbCA9IHN0YXRlLmNyZWF0ZWRfYnk/LmlkID09PSB0aGlzLmN1cnJlbnRVc2VyPy5pZDtcbiAgICAgICAgdGhpcy5uYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgdGhpcy5vd25BbndlciA9IHN0YXRlLm93bl9hbnN3ZXIgPz8gdW5kZWZpbmVkO1xuICAgICAgICBtYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9XG5cbiAgbW9kYWxPcGVuZWQgPSAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gYWN0aW9uO1xuICAgIGlmICghdGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1vZGFsT3BlbmVkRm9yTWVzc2FnZS5uZXh0KHRoaXMubWVzc2FnZUlkKTtcbiAgICB9XG4gIH07XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tb2RhbE9wZW5lZEZvck1lc3NhZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgY2xvc2VQb2xsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmNsb3NlKCk7XG4gICAgICB0aGlzLm1vZGFsQ2xvc2VkKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gZW5kIHZvdGUnXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxDb250ZXh0KCk6IE1vZGFsQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc01vZGFsT3BlbixcbiAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxPcGVuZWQodGhpcy5zZWxlY3RlZEFjdGlvbiEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXNbdGhpcy5zZWxlY3RlZEFjdGlvbiFdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1heE9wdGlvbnNEaXNwbGF5ZWQgJiYgb3B0aW9ucy5sZW5ndGggPiBtYXhPcHRpb25zRGlzcGxheWVkXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2FsbE9wdGlvbnMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlZSBhbGwgb3B0aW9ucyAoe3tjb3VudH19KVwiIHwgdHJhbnNsYXRlOntjb3VudDpcbiAgICAgIG9wdGlvbnMubGVuZ3RofSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxvd1VzZXJTdWdnZXN0aW9ucyAmJlxuICAgICAgY2FuVm90ZSAmJlxuICAgICAgIWlzQ2xvc2VkICYmXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IG1heFBvbGxPcHRpb25zXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnc3VnZ2VzdE9wdGlvbicpXCJcbiAgICA+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuU3VnZ2VzdCBhbiBvcHRpb25cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QW5zd2VycyAmJiBjYW5Wb3RlICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1vZGFsT3BlbmVkKCdhZGRBbnN3ZXInKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93bkFud2VyOyBlbHNlIG5ld0Fuc3dlclwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3QW5zd2VyPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuc3dlckNvdW50ID4gMCAmJiBjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld0NvbW1lbnRzJylcIj5cbiAgICAgIHt7IChhbnN3ZXJDb3VudCA9PT0gMSA/IFwic3RyZWFtQ2hhdC5WaWV3IHt7IGNvdW50IH19IGNvbW1lbnRcIiA6XG4gICAgICBcInN0cmVhbUNoYXQuVmlldyB7eyBjb3VudCB9fSBjb21tZW50c1wiKSB8IHRyYW5zbGF0ZTp7Y291bnQ6IGFuc3dlckNvdW50fVxuICAgICAgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld1Jlc3VsdHMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlZpZXcgcmVzdWx0c1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25Qb2xsICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2VuZFZvdGUnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDogZ2V0TW9kYWxDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0TW9kYWxcbiAgbGV0LWlzT3Blbj1cImlzT3BlblwiXG4gIGxldC1pc09wZW5DaGFuZ2VIYW5kbGVyPVwiaXNPcGVuQ2hhbmdlSGFuZGxlclwiXG4gIGxldC1jb250ZW50PVwiY29udGVudFwiXG4+XG4gIDxzdHJlYW0tbW9kYWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvbnMgc3RyLWNoYXQtYW5ndWxhcl9fcG9sbC1hY3Rpb25zXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICA+XG4gIDwvc3RyZWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhbGxPcHRpb25zPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0IHN0ci1jaGF0LWFuZ3VsYXJfX3BvbGwtYWN0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fdGl0bGVcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuUG9sbCBvcHRpb25zXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X19ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X190aXRsZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3RcbiAgICAgICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgIFttYXhPcHRpb25zRGlzcGxheWVkXT1cInVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tcG9sbC1vcHRpb25zLWxpc3Q+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N1Z2dlc3RPcHRpb24+XG4gIDxzdHJlYW0tYWRkLW9wdGlvblxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgW2Nsb3NlTW9kYWxdPVwibW9kYWxDbG9zZWRcIlxuICA+PC9zdHJlYW0tYWRkLW9wdGlvbj5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkZEFuc3dlcj5cbiAgPHN0cmVhbS11cHNlcnQtYW5zd2VyXG4gICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICBbYW5zd2VyXT1cIm93bkFud2VyXCJcbiAgICBbY2xvc2VNb2RhbF09XCJtb2RhbENsb3NlZFwiXG4gID48L3N0cmVhbS11cHNlcnQtYW5zd2VyPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld0NvbW1lbnRzPlxuICA8c3RyZWFtLXBvbGwtYW5zd2Vycy1saXN0XG4gICAgKHVwc2VydE93bkFuc3dlcik9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gID48L3N0cmVhbS1wb2xsLWFuc3dlcnMtbGlzdD5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ZpZXdSZXN1bHRzPlxuICA8c3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0XG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgPjwvc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0PlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW5kVm90ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZyBzdHItY2hhdF9fZGlhbG9nLS1wcm9tcHQgc3RyLWNoYXRfX21vZGFsX19lbmQtdm90ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX3RpdGxlXCIgdHJhbnNsYXRlPnN0cmVhbUNoYXQuRW5kIHZvdGU8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19wcm9tcHRcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuQWZ0ZXIgYSBwb2xsIGlzIGNsb3NlZCwgbm8gbW9yZSB2b3RlcyBjYW4gYmUgY2FzdFxuICAgICAgPC9kaXY+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsQ2xvc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUG9sbCgpXCI+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWFjdGlvbnMvcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGlCQUFpQjtJQTBCekQsWUFDRSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEtBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLG1CQUF3QyxFQUNoQyxjQUFxQztRQUU3QyxLQUFLLENBQ0gsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBL0IvQzs7V0FFRztRQUNNLHdCQUFtQixHQUF1QixFQUFFLENBQUM7UUFDdEQ7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUM5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FB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Q0FDL0MsK0JBQStCLENBQ2hDLENBQUM7WUFDRixNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3hCLG1CQUFtQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7aUhBdEhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGl1QkNsQ2pDLHNsS0EySkE7MkZEekhhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTtnUkFNdEMsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBV21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0YsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDQyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyLCBQb2xsT3B0aW9uIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVzc2FnZS1hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxudHlwZSBBY3Rpb24gPVxuICB8ICdhbGxPcHRpb25zJ1xuICB8ICdzdWdnZXN0T3B0aW9uJ1xuICB8ICdhZGRBbnN3ZXInXG4gIHwgJ3ZpZXdDb21tZW50cydcbiAgfCAndmlld1Jlc3VsdHMnXG4gIHwgJ2VuZFZvdGUnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBvbGxDb21wb25lbnQge1xuICAvKipcbiAgICogSWYgdGhlcmUgYXJlIG1vcmUgb3B0aW9ucyB0aGFuIHRoaXMgbnVtYmVyLCB0aGUgXCJTZWUgYWxsIG9wdGlvbnNcIiBidXR0b24gd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIG1heE9wdGlvbnNEaXNwbGF5ZWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMgYWxsb3dlZCBmb3IgdGhlIHBvbGwsIHRoaXMgaXMgZGVmaW5lZCBieSBTdHJlYW0gQVBJXG4gICAqL1xuICBASW5wdXQoKSBtYXhQb2xsT3B0aW9ucyA9IDEwMDtcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgaXNDbG9zZWQgPSBmYWxzZTtcbiAgYWxsb3dVc2VyU3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgYWxsb3dBbnN3ZXJzID0gZmFsc2U7XG4gIGFuc3dlckNvdW50ID0gMDtcbiAgaXNPd25Qb2xsID0gZmFsc2U7XG4gIG93bkFud2VyOiBQb2xsQW5zd2VyIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhbGxPcHRpb25zJykgYWxsT3B0aW9ucyE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdzdWdnZXN0T3B0aW9uJykgc3VnZ2VzdE9wdGlvbiE6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBAVmlld0NoaWxkKCdhZGRBbnN3ZXInKSBhZGRBbnN3ZXIhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgndmlld0NvbW1lbnRzJykgdmlld0NvbW1lbnRzITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBWaWV3Q2hpbGQoJ3ZpZXdSZXN1bHRzJykgdmlld1Jlc3VsdHMhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQFZpZXdDaGlsZCgnZW5kVm90ZScpIGVuZFZvdGUhOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICAgIGNoYXRDbGllbnRTZXJ2aWNlLFxuICAgICAgY2RSZWYsXG4gICAgICBjaGFubmVsU2VydmljZSxcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLFxuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9uczogc3RhdGUuYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucyxcbiAgICAgICAgYWxsb3dfYW5zd2Vyczogc3RhdGUuYWxsb3dfYW5zd2VycyxcbiAgICAgICAgYW5zd2VyX2NvdW50OiBzdGF0ZS5hbnN3ZXJzX2NvdW50LFxuICAgICAgICBjcmVhdGVkX2J5OiBzdGF0ZS5jcmVhdGVkX2J5LFxuICAgICAgICBuYW1lOiBzdGF0ZS5uYW1lLFxuICAgICAgICBvd25fYW5zd2VyOiBzdGF0ZS5vd25BbnN3ZXIsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBzdGF0ZS5tYXhfdm90ZXNfYWxsb3dlZCxcbiAgICAgICAgb3duX3ZvdGVzX2J5X29wdGlvbl9pZDogc3RhdGUub3duVm90ZXNCeU9wdGlvbklkLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbGxvd1VzZXJTdWdnZXN0aW9ucyA9IHN0YXRlLmFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxsb3dBbnN3ZXJzID0gc3RhdGUuYWxsb3dfYW5zd2VycyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5hbnN3ZXJDb3VudCA9IHN0YXRlLmFuc3dlcl9jb3VudCA/PyAwO1xuICAgICAgICB0aGlzLmlzT3duUG9sbCA9IHN0YXRlLmNyZWF0ZWRfYnk/LmlkID09PSB0aGlzLmN1cnJlbnRVc2VyPy5pZDtcbiAgICAgICAgdGhpcy5uYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgdGhpcy5vd25BbndlciA9IHN0YXRlLm93bl9hbnN3ZXIgPz8gdW5kZWZpbmVkO1xuICAgICAgICBtYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xuICB9XG5cbiAgbW9kYWxPcGVuZWQgPSAoYWN0aW9uOiBBY3Rpb24pID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gYWN0aW9uO1xuICAgIGlmICghdGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLm1vZGFsT3BlbmVkRm9yTWVzc2FnZS5uZXh0KHRoaXMubWVzc2FnZUlkKTtcbiAgICB9XG4gIH07XG5cbiAgbW9kYWxDbG9zZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5pc01vZGFsT3Blbikge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tb2RhbE9wZW5lZEZvck1lc3NhZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgY2xvc2VQb2xsKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBvbGw/LmNsb3NlKCk7XG4gICAgICB0aGlzLm1vZGFsQ2xvc2VkKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5GYWlsZWQgdG8gZW5kIHZvdGUnXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxDb250ZXh0KCk6IE1vZGFsQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzT3BlbjogdGhpcy5pc01vZGFsT3BlbixcbiAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMubW9kYWxPcGVuZWQodGhpcy5zZWxlY3RlZEFjdGlvbiEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kYWxDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHRoaXNbdGhpcy5zZWxlY3RlZEFjdGlvbiFdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIm1heE9wdGlvbnNEaXNwbGF5ZWQgJiYgb3B0aW9ucy5sZW5ndGggPiBtYXhPcHRpb25zRGlzcGxheWVkXCJcbiAgPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2FsbE9wdGlvbnMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlNlZSBhbGwgb3B0aW9ucyAoe3tjb3VudH19KVwiIHwgdHJhbnNsYXRlOntjb3VudDpcbiAgICAgIG9wdGlvbnMubGVuZ3RofSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxvd1VzZXJTdWdnZXN0aW9ucyAmJlxuICAgICAgY2FuVm90ZSAmJlxuICAgICAgIWlzQ2xvc2VkICYmXG4gICAgICBvcHRpb25zLmxlbmd0aCA8IG1heFBvbGxPcHRpb25zXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnc3VnZ2VzdE9wdGlvbicpXCJcbiAgICA+XG4gICAgICB7eyBcInN0cmVhbUNoYXQuU3VnZ2VzdCBhbiBvcHRpb25cIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93QW5zd2VycyAmJiBjYW5Wb3RlICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtYWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1vZGFsT3BlbmVkKCdhZGRBbnN3ZXInKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm93bkFud2VyOyBlbHNlIG5ld0Fuc3dlclwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuVXBkYXRlIHlvdXIgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3QW5zd2VyPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQWRkIGEgY29tbWVudFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFuc3dlckNvdW50ID4gMCAmJiBjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld0NvbW1lbnRzJylcIj5cbiAgICAgIHt7IChhbnN3ZXJDb3VudCA9PT0gMSA/IFwic3RyZWFtQ2hhdC5WaWV3IHt7IGNvdW50IH19IGNvbW1lbnRcIiA6XG4gICAgICBcInN0cmVhbUNoYXQuVmlldyB7eyBjb3VudCB9fSBjb21tZW50c1wiKSB8IHRyYW5zbGF0ZTp7Y291bnQ6IGFuc3dlckNvdW50fVxuICAgICAgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5RdWVyeVZvdGVzXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiIChjbGljayk9XCJtb2RhbE9wZW5lZCgndmlld1Jlc3VsdHMnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LlZpZXcgcmVzdWx0c1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPd25Qb2xsICYmICFpc0Nsb3NlZFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hY3Rpb25cIiAoY2xpY2spPVwibW9kYWxPcGVuZWQoJ2VuZFZvdGUnKVwiPlxuICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQWN0aW9uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubW9kYWxUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1vZGFsO1xuICAgICAgY29udGV4dDogZ2V0TW9kYWxDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0TW9kYWxcbiAgbGV0LWlzT3Blbj1cImlzT3BlblwiXG4gIGxldC1pc09wZW5DaGFuZ2VIYW5kbGVyPVwiaXNPcGVuQ2hhbmdlSGFuZGxlclwiXG4gIGxldC1jb250ZW50PVwiY29udGVudFwiXG4+XG4gIDxzdHJlYW0tbW9kYWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvbnMgc3RyLWNoYXQtYW5ndWxhcl9fcG9sbC1hY3Rpb25zXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICA+XG4gIDwvc3RyZWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhbGxPcHRpb25zPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0IHN0ci1jaGF0LWFuZ3VsYXJfX3BvbGwtYWN0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlcl9fdGl0bGVcIj5cbiAgICAgICAge3sgXCJzdHJlYW1DaGF0LlBvbGwgb3B0aW9uc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X19ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLW9wdGlvbi1saXN0X190aXRsZVwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3RcbiAgICAgICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgIFttYXhPcHRpb25zRGlzcGxheWVkXT1cInVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tcG9sbC1vcHRpb25zLWxpc3Q+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N1Z2dlc3RPcHRpb24+XG4gIDxzdHJlYW0tYWRkLW9wdGlvblxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgW2Nsb3NlTW9kYWxdPVwibW9kYWxDbG9zZWRcIlxuICA+PC9zdHJlYW0tYWRkLW9wdGlvbj5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkZEFuc3dlcj5cbiAgPHN0cmVhbS11cHNlcnQtYW5zd2VyXG4gICAgW3BvbGxJZF09XCJwb2xsSWRcIlxuICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICBbYW5zd2VyXT1cIm93bkFud2VyXCJcbiAgICBbY2xvc2VNb2RhbF09XCJtb2RhbENsb3NlZFwiXG4gID48L3N0cmVhbS11cHNlcnQtYW5zd2VyPlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld0NvbW1lbnRzPlxuICA8c3RyZWFtLXBvbGwtYW5zd2Vycy1saXN0XG4gICAgKHVwc2VydE93bkFuc3dlcik9XCJtb2RhbE9wZW5lZCgnYWRkQW5zd2VyJylcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gID48L3N0cmVhbS1wb2xsLWFuc3dlcnMtbGlzdD5cbiAgPHN0cmVhbS1ub3RpZmljYXRpb24tbGlzdD48L3N0cmVhbS1ub3RpZmljYXRpb24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ZpZXdSZXN1bHRzPlxuICA8c3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0XG4gICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgIFtwb2xsSWRdPVwicG9sbElkXCJcbiAgPjwvc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0PlxuICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW5kVm90ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZyBzdHItY2hhdF9fZGlhbG9nLS1wcm9tcHQgc3RyLWNoYXRfX21vZGFsX19lbmQtdm90ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX3RpdGxlXCIgdHJhbnNsYXRlPnN0cmVhbUNoYXQuRW5kIHZvdGU8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19wcm9tcHRcIiB0cmFuc2xhdGU+XG4gICAgICAgIHN0cmVhbUNoYXQuQWZ0ZXIgYSBwb2xsIGlzIGNsb3NlZCwgbm8gbW9yZSB2b3RlcyBjYW4gYmUgY2FzdFxuICAgICAgPC9kaXY+XG4gICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsQ2xvc2VkKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkNhbmNlbFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUG9sbCgpXCI+XG4gICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkVuZCB2b3RlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19