@cometchat/chat-uikit-angular 4.0.1 → 4.1.0

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.
Files changed (113) hide show
  1. package/AI/AIAssistBot/AIAssistBot.d.ts +7 -0
  2. package/AI/AIAssistBot/AIAssistBotDecorator.d.ts +11 -0
  3. package/AI/AIConversationStarter/AIConversationStarter.d.ts +2 -2
  4. package/AI/AIConversationStarter/AIConversationStarterDecorator.d.ts +3 -0
  5. package/AI/AIConversationSummary/AIConversationSummary.d.ts +7 -0
  6. package/AI/AIConversationSummary/AIConversationSummaryDecorator.d.ts +10 -0
  7. package/AI/AISmartReplies/AISmartReplies.d.ts +2 -2
  8. package/AI/AISmartReplies/AISmartRepliesDecorator.d.ts +3 -0
  9. package/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.d.ts +119 -0
  10. package/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.d.ts +14 -0
  11. package/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.d.ts +111 -0
  12. package/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.d.ts +10 -0
  13. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.d.ts +76 -0
  14. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.d.ts +10 -0
  15. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.d.ts +90 -0
  16. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.d.ts +10 -0
  17. package/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.d.ts +133 -0
  18. package/Calls/CometChatCallLogs/cometchat-call-logs.module.d.ts +12 -0
  19. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.d.ts +54 -0
  20. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.d.ts +12 -0
  21. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +18 -7
  22. package/CometChatList/cometchat-list.component.d.ts +12 -9
  23. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +65 -29
  24. package/CometChatMessageComposer/cometchat-message-composer.module.d.ts +3 -3
  25. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +7 -6
  26. package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +6 -4
  27. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +96 -55
  28. package/CometChatMessageList/cometchat-message-list.module.d.ts +1 -1
  29. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +19 -16
  30. package/CometChatMessages/cometchat-messages.module.d.ts +3 -2
  31. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +8 -5
  32. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +13 -3
  33. package/Shared/Framework/AIExtensionDataSource.d.ts +5 -0
  34. package/Shared/Framework/DataSource.d.ts +3 -1
  35. package/Shared/Framework/DataSourceDecorator.d.ts +3 -1
  36. package/Shared/Utils/CallDetailUtils.d.ts +8 -0
  37. package/Shared/Utils/CallLogUtils.d.ts +8 -0
  38. package/Shared/Utils/MessageUtils.d.ts +2 -1
  39. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.d.ts +71 -0
  40. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.d.ts +11 -0
  41. package/assets/InfoIcon.svg +13 -0
  42. package/assets/greaterThanIcon.svg +3 -0
  43. package/assets/incomingAudioCallIconUrl.svg +5 -0
  44. package/assets/incomingVideoCallIconUrl.svg +6 -0
  45. package/assets/missedAudioCallIconUrl.svg +5 -0
  46. package/assets/missedVideoCallIconUrl.svg +6 -0
  47. package/assets/outgoingAudioCallIconUrl.svg +5 -0
  48. package/assets/outgoingVideoCallIconUrl.svg +6 -0
  49. package/esm2020/AI/AIAssistBot/AIAssistBot.mjs +21 -0
  50. package/esm2020/AI/AIAssistBot/AIAssistBotDecorator.mjs +68 -0
  51. package/esm2020/AI/AIConversationStarter/AIConversationStarter.mjs +7 -4
  52. package/esm2020/AI/AIConversationStarter/AIConversationStarterDecorator.mjs +22 -1
  53. package/esm2020/AI/AIConversationSummary/AIConversationSummary.mjs +21 -0
  54. package/esm2020/AI/AIConversationSummary/AIConversationSummaryDecorator.mjs +32 -0
  55. package/esm2020/AI/AISmartReplies/AISmartReplies.mjs +7 -4
  56. package/esm2020/AI/AISmartReplies/AISmartRepliesDecorator.mjs +22 -1
  57. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +3 -3
  58. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.mjs +351 -0
  59. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.mjs +47 -0
  60. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.mjs +352 -0
  61. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.mjs +21 -0
  62. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.mjs +189 -0
  63. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.mjs +21 -0
  64. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.mjs +246 -0
  65. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.mjs +21 -0
  66. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.mjs +585 -0
  67. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs.module.mjs +36 -0
  68. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.mjs +193 -0
  69. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.mjs +39 -0
  70. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +1 -1
  71. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +72 -46
  72. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +3 -3
  73. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +1 -1
  74. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +1 -1
  75. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +3 -3
  76. package/esm2020/CometChatList/cometchat-list.component.mjs +44 -28
  77. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +312 -115
  78. package/esm2020/CometChatMessageComposer/cometchat-message-composer.module.mjs +7 -14
  79. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +15 -17
  80. package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +19 -21
  81. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +888 -300
  82. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +5 -5
  83. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +72 -51
  84. package/esm2020/CometChatMessages/cometchat-messages.module.mjs +10 -6
  85. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +23 -23
  86. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +1 -1
  87. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +3 -3
  88. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +173 -36
  89. package/esm2020/Shared/Framework/AIExtensionDataSource.mjs +3 -0
  90. package/esm2020/Shared/Framework/ChatConfigurator.mjs +2 -2
  91. package/esm2020/Shared/Framework/DataSource.mjs +1 -1
  92. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +5 -2
  93. package/esm2020/Shared/Utils/CallDetailUtils.mjs +72 -0
  94. package/esm2020/Shared/Utils/CallLogUtils.mjs +122 -0
  95. package/esm2020/Shared/Utils/MessageUtils.mjs +31 -20
  96. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.mjs +289 -0
  97. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.mjs +22 -0
  98. package/esm2020/public-api.mjs +106 -91
  99. package/fesm2015/cometchat-chat-uikit-angular.mjs +4249 -817
  100. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
  101. package/fesm2020/cometchat-chat-uikit-angular.mjs +4271 -836
  102. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
  103. package/package.json +6 -6
  104. package/public-api.d.ts +105 -90
  105. package/AI/AIEnabler.d.ts +0 -8
  106. package/AI/AIEnablerDecorator.d.ts +0 -7
  107. package/LICENSE.md +0 -3
  108. package/Shared/Views/CometChatCardView/cometchat-card-view/cometchat-card-view.component.d.ts +0 -71
  109. package/Shared/Views/CometChatCardView/cometchat-card-view.module.d.ts +0 -8
  110. package/esm2020/AI/AIEnabler.mjs +0 -70
  111. package/esm2020/AI/AIEnablerDecorator.mjs +0 -10
  112. package/esm2020/Shared/Views/CometChatCardView/cometchat-card-view/cometchat-card-view.component.mjs +0 -117
  113. package/esm2020/Shared/Views/CometChatCardView/cometchat-card-view.module.mjs +0 -23
@@ -1,28 +1,21 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
2
2
  import { CommonModule } from "@angular/common";
3
3
  import { CometChatMessageComposerComponent } from "./cometchat-message-composer/cometchat-message-composer.component";
4
- import '@cometchat/uikit-elements';
5
- import { CometChatCardView } from "../Shared/Views/CometChatCardView/cometchat-card-view.module";
4
+ import "@cometchat/uikit-elements";
5
+ import { AIAssistBotMessageList } from "../Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module";
6
6
  import * as i0 from "@angular/core";
7
7
  export class CometChatMessageComposer {
8
8
  }
9
9
  CometChatMessageComposer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- CometChatMessageComposer.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, declarations: [CometChatMessageComposerComponent], imports: [CommonModule,
11
- CometChatCardView], exports: [CometChatMessageComposerComponent] });
12
- CometChatMessageComposer.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, imports: [[
13
- CommonModule,
14
- CometChatCardView
15
- ]] });
10
+ CometChatMessageComposer.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, declarations: [CometChatMessageComposerComponent], imports: [CommonModule, AIAssistBotMessageList], exports: [CometChatMessageComposerComponent] });
11
+ CometChatMessageComposer.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, imports: [[CommonModule, AIAssistBotMessageList]] });
16
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageComposer, decorators: [{
17
13
  type: NgModule,
18
14
  args: [{
19
15
  declarations: [CometChatMessageComposerComponent],
20
- imports: [
21
- CommonModule,
22
- CometChatCardView
23
- ],
16
+ imports: [CommonModule, AIAssistBotMessageList],
24
17
  exports: [CometChatMessageComposerComponent],
25
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
18
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
26
19
  }]
27
20
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlQ29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3RILE9BQU8sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOERBQThELENBQUM7O0FBVWpHLE1BQU0sT0FBTyx3QkFBd0I7O3NIQUF4Qix3QkFBd0I7dUhBQXhCLHdCQUF3QixpQkFScEIsaUNBQWlDLGFBRTlDLFlBQVk7UUFDWixpQkFBaUIsYUFFVCxpQ0FBaUM7dUhBR2hDLHdCQUF3QixZQVAxQjtZQUNQLFlBQVk7WUFDWixpQkFBaUI7U0FDbEI7NEZBSVUsd0JBQXdCO2tCQVRwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlDQUFpQyxDQUFDO29CQUNqRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRSxDQUFDLGlDQUFpQyxDQUFDO29CQUM1QyxPQUFPLEVBQUMsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJDb21wb25lbnQgfSBmcm9tIFwiLi9jb21ldGNoYXQtbWVzc2FnZS1jb21wb3Nlci9jb21ldGNoYXQtbWVzc2FnZS1jb21wb3Nlci5jb21wb25lbnRcIjtcbmltcG9ydCAnQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50cydcbmltcG9ydCB7IENvbWV0Q2hhdENhcmRWaWV3IH0gZnJvbSBcIi4uL1NoYXJlZC9WaWV3cy9Db21ldENoYXRDYXJkVmlldy9jb21ldGNoYXQtY2FyZC12aWV3Lm1vZHVsZVwiO1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb21ldENoYXRDYXJkVmlld1xuICBdLFxuICBleHBvcnRzOiBbQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQ29tcG9uZW50XSxcbiAgc2NoZW1hczpbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyIHt9Il19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlQ29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3RILE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUVBQXlFLENBQUM7O0FBT2pILE1BQU0sT0FBTyx3QkFBd0I7O3NIQUF4Qix3QkFBd0I7dUhBQXhCLHdCQUF3QixpQkFMcEIsaUNBQWlDLGFBQ3RDLFlBQVksRUFBRSxzQkFBc0IsYUFDcEMsaUNBQWlDO3VIQUdoQyx3QkFBd0IsWUFKMUIsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7NEZBSXBDLHdCQUF3QjtrQkFOcEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgXCJAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzXCI7XG5pbXBvcnQgeyBBSUFzc2lzdEJvdE1lc3NhZ2VMaXN0IH0gZnJvbSBcIi4uL1NoYXJlZC9WaWV3cy9BSUFzc2lzdEJvdE1lc3NhZ2VMaXN0L2FpYXNzaXN0LWJvdC1tZXNzYWdlLWxpc3QubW9kdWxlXCI7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBSUFzc2lzdEJvdE1lc3NhZ2VMaXN0XSxcbiAgZXhwb3J0czogW0NvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlckNvbXBvbmVudF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyIHt9XG4iXX0=
@@ -1,9 +1,9 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { AvatarStyle, ListItemStyle } from '@cometchat/uikit-elements';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { CometChatGroupEvents, CometChatMessageEvents, CometChatTheme, CometChatUIKitConstants, fontHelper, localize } from '@cometchat/uikit-resources';
2
4
  import { CometChat } from '@cometchat/chat-sdk-javascript';
3
- import { ListItemStyle, AvatarStyle } from '@cometchat/uikit-elements';
4
- import { CometChatTheme, CometChatGroupEvents, fontHelper, localize, CometChatUIKitConstants } from '@cometchat/uikit-resources';
5
- import { MessageHeaderStyle } from '@cometchat/uikit-shared';
6
5
  import { CometChatException } from '../../Shared/Utils/ComeChatException';
6
+ import { MessageHeaderStyle } from '@cometchat/uikit-shared';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../CometChatTheme.service";
9
9
  import * as i2 from "@angular/common";
@@ -55,7 +55,6 @@ export class CometChatMessageHeaderComponent {
55
55
  console.log(error);
56
56
  };
57
57
  this.onBack = () => { };
58
- this.msgListenerId = "message_" + new Date().getTime();
59
58
  this.groupsListenerId = "groupsList_" + new Date().getTime();
60
59
  this.userListenerId = "userlist_" + new Date().getTime();
61
60
  this.subtitleText = "";
@@ -310,16 +309,14 @@ export class CometChatMessageHeaderComponent {
310
309
  }));
311
310
  }
312
311
  if (!this.disableTyping) {
313
- CometChat.addMessageListener(this.msgListenerId, new CometChat.MessageListener({
314
- onTypingStarted: (typingIndicator) => {
315
- this.isTyping = true;
316
- this.setTypingIndicatorText(typingIndicator);
317
- },
318
- onTypingEnded: (typingIndicator) => {
319
- this.isTyping = false;
320
- this.updateSubtitle();
321
- },
322
- }));
312
+ this.onTypingStarted = CometChatMessageEvents.onTypingStarted.subscribe((typingIndicator) => {
313
+ this.isTyping = true;
314
+ this.setTypingIndicatorText(typingIndicator);
315
+ });
316
+ this.onTypingEnded = CometChatMessageEvents.onTypingEnded.subscribe((typingIndicator) => {
317
+ this.isTyping = false;
318
+ this.updateSubtitle();
319
+ });
323
320
  }
324
321
  CometChat.addGroupListener(this.groupsListenerId, new CometChat.GroupListener({
325
322
  onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => {
@@ -371,8 +368,9 @@ export class CometChatMessageHeaderComponent {
371
368
  }
372
369
  }
373
370
  removeListener() {
374
- CometChat.removeMessageListener(this.msgListenerId);
375
371
  CometChat.removeUserListener(this.userListenerId);
372
+ this.onTypingStarted?.unsubscribe();
373
+ this.onTypingEnded?.unsubscribe();
376
374
  }
377
375
  ngOnDestroy() {
378
376
  this.removeListener();
@@ -419,4 +417,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
419
417
  }], onBack: [{
420
418
  type: Input
421
419
  }] } });
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZUhlYWRlci9jb21ldGNoYXQtbWVzc2FnZS1oZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZUhlYWRlci9jb21ldGNoYXQtbWVzc2FnZS1oZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQix1QkFBdUIsRUFBeUMsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsV0FBVyxFQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFFOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBa0csVUFBVSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pPLE9BQU8sRUFBRyxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBQzFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLCtCQUErQjtJQXVEMUMsWUFBb0IsR0FBcUIsRUFBUyxZQUFrQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQXREM0UsZ0JBQVcsR0FBZ0I7WUFDbEMsWUFBWSxFQUFFLE1BQU07WUFDcEIsS0FBSyxF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c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBUZW1wbGF0ZVJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tICdAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHQnO1xuaW1wb3J0IHtMaXN0SXRlbVN0eWxlLEF2YXRhclN0eWxlLCBCYXNlU3R5bGV9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbWV0Q2hhdFRoZW1lLCBDb21ldENoYXRHcm91cEV2ZW50cywgSUdyb3VwTWVtYmVyQWRkZWQsIElHcm91cE1lbWJlcktpY2tlZEJhbm5lZCwgSUdyb3VwTWVtYmVySm9pbmVkLCBJT3duZXJzaGlwQ2hhbmdlZCwgSUdyb3VwTGVmdCwgZm9udEhlbHBlciwgbG9jYWxpemUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgIE1lc3NhZ2VIZWFkZXJTdHlsZSB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJztcbmltcG9ydCB7IENvbWV0Q2hhdFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tZXRDaGF0RXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL1V0aWxzL0NvbWVDaGF0RXhjZXB0aW9uJztcbi8qKlxuKlxuKiBDb21ldENoYXRNZXNzYWdlSGVhZGVyIGlzIGEgdXNlZCB0byByZW5kZXIgbGlzdGl0ZW0gY29tcG9uZW50LlxuKlxuKiBAdmVyc2lvbiAxLjAuMFxuKiBAYXV0aG9yIENvbWV0Q2hhdFRlYW1cbiogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4qXG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWV0Y2hhdC1tZXNzYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbWV0Y2hhdC1tZXNzYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRNZXNzYWdlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGF2YXRhclN0eWxlOiBBdmF0YXJTdHlsZSA9IHtcbiAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjI4cHhcIixcbiAgICBoZWlnaHQ6IFwiMjhweFwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG5cbiAgfVxuICBASW5wdXQoKSBzdGF0dXNJbmRpY2F0b3JTdHlsZTogQmFzZVN0eWxlID0ge1xuICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMTBweFwiLFxuICAgIGhlaWdodDogXCIxMHB4XCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgfVxuICBASW5wdXQoKSBtZXNzYWdlSGVhZGVyU3R5bGU6IE1lc3NhZ2VIZWFkZXJTdHlsZSA9IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgfVxuICBASW5wdXQoKSBsaXN0SXRlbVN0eWxlOiBMaXN0SXRlbVN0eWxlID0ge1xuICAgIHdpZHRoOiBcIlwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBib3JkZXJSYWRpdXM6IFwiMnB4XCIsXG4gICAgc2VwYXJhdG9yQ29sb3I6IFwiXCIsXG4gICAgYWN0aXZlQmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIGhvdmVyQmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiXG4gIH1cbiAgQElucHV0KCkgc3VidGl0bGVWaWV3OiBhbnk7XG4gIEBJbnB1dCgpIGRpc2FibGVVc2Vyc1ByZXNlbmNlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVUeXBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHJvdGVjdGVkR3JvdXBJY29uOiBzdHJpbmcgPSBcImFzc2V0cy9Mb2NrZWQuc3ZnXCI7XG4gIEBJbnB1dCgpIHByaXZhdGVHcm91cEljb246IHN0cmluZyA9XCJhc3NldHMvUHJpdmF0ZS5zdmdcIjtcbiAgQElucHV0KCkgbWVudTogYW55O1xuICBASW5wdXQoKSB1c2VyITogQ29tZXRDaGF0LlVzZXI7XG4gIEBJbnB1dCgpIGdyb3VwITogQ29tZXRDaGF0Lkdyb3VwO1xuICBASW5wdXQoKSBiYWNrQnV0dG9uSWNvblVSTDogc3RyaW5nID0gXCJhc3NldHMvYmFja2J1dHRvbi5zdmdcIjtcbiAgQElucHV0KCkgaGlkZUJhY2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGlzdEl0ZW1WaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgb25FcnJvcjooKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT52b2lkKSAgfCBudWxsID0gKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgQElucHV0KCkgb25CYWNrOigpPT52b2lkID0gKCk9Pnt9XG4gIG1zZ0xpc3RlbmVySWQgPSBcIm1lc3NhZ2VfXCIrIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBwdWJsaWMgZ3JvdXBzTGlzdGVuZXJJZDogc3RyaW5nID0gXCJncm91cHNMaXN0X1wiICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIHVzZXJMaXN0ZW5lcklkID0gXCJ1c2VybGlzdF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBwdWJsaWMgc3VidGl0bGVUZXh0OnN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyBsb2dnZWRJblVzZXIhOkNvbWV0Q2hhdC5Vc2VyO1xuICBwdWJsaWMgaXNUeXBpbmc6Ym9vbGVhbiA9IGZhbHNlO1xuICB0aGVtZTpDb21ldENoYXRUaGVtZSA9IG5ldyBDb21ldENoYXRUaGVtZSh7fSlcbiAgY2NHcm91cE1lbWJlckFkZGVkITpTdWJzY3JpcHRpb247XG4gIGNjR3JvdXBMZWZ0ITpTdWJzY3JpcHRpb247XG4gIGNjR3JvdXBNZW1iZXJKb2luZWQhOlN1YnNjcmlwdGlvbjtcbiAgY2NHcm91cE1lbWJlcktpY2tlZCE6U3Vic2NyaXB0aW9uO1xuICBjY0dyb3VwTWVtYmVyQmFubmVkITpTdWJzY3JpcHRpb247XG4gIGNjT3duZXJzaGlwQ2hhbmdlZCE6U3Vic2NyaXB0aW9uO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjpDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHRoZW1lU2VydmljZTpDb21ldENoYXRUaGVtZVNlcnZpY2UpIHtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlc1tcInVzZXJcIl0gfHwgY2hhbmdlc1tcImdyb3VwXCJdKXtcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKVxuICAgICAgaWYoIXRoaXMubG9nZ2VkSW5Vc2VyKXtcbiAgICAgICAgQ29tZXRDaGF0LmdldExvZ2dlZGluVXNlcigpLnRoZW4oKHVzZXI6Q29tZXRDaGF0LlVzZXIgfCBudWxsKT0+e1xuICAgICAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlciBhcyBDb21ldENoYXQuVXNlcjtcbiAgICAgICAgICB0aGlzLmF0dGFjaExpc3RlbmVycygpXG4gICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0pLmNhdGNoKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy5hdHRhY2hMaXN0ZW5lcnMoKVxuICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKVxuICAgIHRoaXMuc2V0QXZhdGFyU3R5bGUoKVxuICAgIHRoaXMuc2V0U3RhdHVzU3R5bGUoKVxuICAgIHRoaXMuc2V0SGVhZGVyc1N0eWxlKClcbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKCk7XG4gICAgdGhpcy5iYWNrQnV0dG9uU3R5bGUuYnV0dG9uSWNvblRpbnQgPSB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZT8uYmFja0J1dHRvbkljb25UaW50O1xuICAgIHRoaXMuc3RhdHVzQ29sb3Iub25saW5lID0gdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUub25saW5lU3RhdHVzQ29sb3JcblxuICB9XG4gICAgLy8gc3Vic2NyaWJlIHRvIGdsb2JhbCBldmVudHNcbiAgICBzdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlckFkZGVkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cE1lbWJlckFkZGVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVyQWRkZWQpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8udXNlckFkZGVkSW4hLmdldEd1aWQoKSl7XG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXAgPT0gaXRlbT8udXNlckFkZGVkSW47XG4gICAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmNjR3JvdXBNZW1iZXJCYW5uZWQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTWVtYmVyQmFubmVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVyS2lja2VkQmFubmVkKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8ua2lja2VkRnJvbSEuZ2V0R3VpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/LmtpY2tlZEZyb207XG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmNjR3JvdXBNZW1iZXJKb2luZWQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTWVtYmVySm9pbmVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVySm9pbmVkKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8uam9pbmVkR3JvdXAhLmdldEd1aWQoKSl7XG4gICAgICAgICAgdGhpcy5ncm91cCA9PSBpdGVtPy5qb2luZWRHcm91cDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlcktpY2tlZCA9IENvbWV0Q2hhdEdyb3VwRXZlbnRzLmNjR3JvdXBNZW1iZXJLaWNrZWQuc3Vic2NyaWJlKChpdGVtOiBJR3JvdXBNZW1iZXJLaWNrZWRCYW5uZWQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5raWNrZWRGcm9tIS5nZXRHdWlkKCkpe1xuICAgICAgICAgIHRoaXMuZ3JvdXAgPT0gaXRlbT8ua2lja2VkRnJvbTtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NPd25lcnNoaXBDaGFuZ2VkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NPd25lcnNoaXBDaGFuZ2VkLnN1YnNjcmliZSgoaXRlbTogSU93bmVyc2hpcENoYW5nZWQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5ncm91cCEuZ2V0R3VpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/Lmdyb3VwO1xuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgIHRoaXMudXBkYXRlU3VidGl0bGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NHcm91cExlZnQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTGVmdC5zdWJzY3JpYmUoKGl0ZW06IElHcm91cExlZnQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5sZWZ0R3JvdXAhLmdldEd1aWQoKSAmJiB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkgPT0gaXRlbT8udXNlckxlZnQ/LmdldFVpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/LmxlZnRHcm91cDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gdW5zdWJzY3JpYmUgdG8gc3Vic2NyaWJlZCBldmVudHMuXG4gICAgdW5zdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlckFkZGVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVyQmFubmVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVySm9pbmVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVyS2lja2VkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY093bmVyc2hpcENoYW5nZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNjR3JvdXBMZWZ0Py51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgc2V0TGlzdEl0ZW1TdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6TGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCI0NXB4XCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGFjdGl2ZUJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuICAgICAgdGl0bGVDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBzZXBhcmF0b3JDb2xvcjpcIlwiLFxuICAgICAgaG92ZXJCYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIlxuICAgIH0pXG4gICAgdGhpcy5saXN0SXRlbVN0eWxlID0gey4uLmRlZmF1bHRTdHlsZSwuLi50aGlzLmxpc3RJdGVtU3R5bGV9XG4gIH1cbiAgc2V0QXZhdGFyU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkF2YXRhclN0eWxlID0gbmV3IEF2YXRhclN0eWxlKHtcbiAgICAgIGJvcmRlclJhZGl1czogXCIyNHB4XCIsXG4gICAgICB3aWR0aDogXCIzNnB4XCIsXG4gICAgICBoZWlnaHQ6IFwiMzZweFwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgIG5hbWVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50OTAwKCksXG4gICAgICBiYWNrZ3JvdW5kU2l6ZTogXCJjb3ZlclwiLFxuICAgICAgbmFtZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgIFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyU3BhY2luZzogXCJcIixcbiAgICB9KVxuICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMuYXZhdGFyU3R5bGV9XG4gIH1cbiAgc2V0U3RhdHVzU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkJhc2VTdHlsZSA9IHtcbiAgICAgICAgaGVpZ2h0OiBcIjEycHhcIixcbiAgICAgICAgd2lkdGg6XCIxMnB4XCIsXG4gICAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgICAgYm9yZGVyUmFkaXVzOlwiMjRweFwiLFxuXG4gICAgfVxuICAgIHRoaXMuc3RhdHVzSW5kaWNhdG9yU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMuc3RhdHVzSW5kaWNhdG9yU3R5bGV9XG4gIH1cbiAgc2V0SGVhZGVyc1N0eWxlKCl7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTpNZXNzYWdlSGVhZGVyU3R5bGUgPSBuZXcgTWVzc2FnZUhlYWRlclN0eWxlKHtcbiAgICAgIGJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXI6YG5vbmVgLFxuICAgICAgb25saW5lU3RhdHVzQ29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRTdWNjZXNzKCksXG4gICAgICBwcml2YXRlR3JvdXBJY29uQmFja2dyb3VuZDp0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFN1Y2Nlc3MoKSxcbiAgICAgIHBhc3N3b3JkR3JvdXBJY29uQmFja2dyb3VuZDpcIlJHQigyNDcsIDE2NSwgMClcIixcbiAgICAgIGJhY2tCdXR0b25JY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KCksXG4gICAgICBzdWJ0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTIpLFxuICAgICAgdHlwaW5nSW5kaWNhdG9yVGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICAgIHR5cGluZ0luZGljYXRvclRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICB9KVxuICAgIHRoaXMubWVzc2FnZUhlYWRlclN0eWxlID0gey4uLmRlZmF1bHRTdHlsZSwuLi50aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZX1cbiAgfVxuICBwdWJsaWMgc3RhdHVzQ29sb3I6IGFueSA9IHtcbiAgICBvbmxpbmU6IFwiIzAwZjMwMFwiLFxuICAgIHByaXZhdGU6IFwiIzAwZjMwMFwiLFxuICAgIHBhc3N3b3JkOiBcIiNGN0E1MDBcIixcbiAgICBwdWJsaWM6IFwiXCJcbiAgfVxuICBiYWNrQnV0dG9uU3R5bGU6YW55ID0ge1xuICAgIGhlaWdodDpcIjI0cHhcIixcbiAgICB3aWR0aDpcIjI0cHhcIixcbiAgICBib3JkZXI6XCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOlwibm9uZVwiLFxuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICAgIGJ1dHRvbkljb25UaW50OlwiIzMzOTlGRlwiXG4gIH1cbiAgY2hlY2tTdGF0dXNUeXBlID0gKCk9PiB7XG4gICAgcmV0dXJuICAgdGhpcy51c2VyICYmICF0aGlzLmRpc2FibGVVc2Vyc1ByZXNlbmNlID8gdGhpcy5zdGF0dXNDb2xvclt0aGlzLnVzZXI/LmdldFN0YXR1cygpXSA6IHRoaXMuc3RhdHVzQ29sb3JbdGhpcy5ncm91cD8uZ2V0VHlwZSgpXVxuICB9XG4gIG9uQmFja0NsaWNrZWQoKXtcbiAgICBpZih0aGlzLm9uQmFjayl7XG4gICAgICB0aGlzLm9uQmFjaygpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVN1YnRpdGxlKCkge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5ncm91cD8uZ2V0TWVtYmVyc0NvdW50KCk7XG4gICAgY29uc3QgbWVtYmVyc1RleHQgPSBsb2NhbGl6ZShjb3VudCA+IDEgPyBcIk1FTUJFUlNcIiA6IFwiTUVNQkVSXCIpO1xuICAgIGlmKHRoaXMudXNlcil7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9IHRoaXMuZGlzYWJsZVVzZXJzUHJlc2VuY2UgPyBcIlwiIDogdGhpcy51c2VyLmdldFN0YXR1cygpXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9ICBgJHtjb3VudH0gJHttZW1iZXJzVGV4dH1gO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICB9XG4gIGdldFN1YnRpdGxlVmlldygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZVZpZXcodGhpcy51c2VyIHx8IHRoaXMuZ3JvdXApO1xuICB9XG4gIGNoZWNrR3JvdXBUeXBlKCk6IHN0cmluZyB7XG4gICAgbGV0IGltYWdlOiBzdHJpbmcgPSBcIlwiO1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZ3JvdXA/LmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLkdyb3VwVHlwZXMucGFzc3dvcmQ6XG4gICAgICAgICAgaW1hZ2UgPSB0aGlzLnByb3RlY3RlZEdyb3VwSWNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5Hcm91cFR5cGVzLnByaXZhdGU6XG4gICAgICAgICAgaW1hZ2UgPSB0aGlzLnByaXZhdGVHcm91cEljb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaW1hZ2UgPSBcIlwiXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbWFnZVxuICB9XG4gIHVwZGF0ZVVzZXJTdGF0dXModXNlcjpDb21ldENoYXQuVXNlcil7XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHRoaXMudXNlci5nZXRVaWQoKSAmJiB0aGlzLnVzZXIuZ2V0VWlkKCkgPT09IHVzZXIuZ2V0VWlkKCkpIHtcbiAgICAgIHRoaXMudXNlci5zZXRTdGF0dXModXNlci5nZXRTdGF0dXMoKSk7XG4gICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICB9XG4gICAgLy8gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGF0dGFjaExpc3RlbmVycygpIHtcbiAgICB0cnkge1xuICAgICAgaWYoIXRoaXMuZGlzYWJsZVVzZXJzUHJlc2VuY2Upe1xuICAgICAgICBDb21ldENoYXQuYWRkVXNlckxpc3RlbmVyKFxuICAgICAgICAgIHRoaXMudXNlckxpc3RlbmVySWQsXG4gICAgICAgICAgbmV3IENvbWV0Q2hhdC5Vc2VyTGlzdGVuZXIoe1xuICAgICAgICAgICAgb25Vc2VyT25saW5lOiAob25saW5lVXNlcjogQ29tZXRDaGF0LlVzZXIpID0+IHtcbiAgICAgICAgICAgICAgLyogd2hlbiBzb21ldXNlci9mcmllbmQgY29tZXMgb25saW5lLCB1c2VyIHdpbGwgYmUgcmVjZWl2ZWQgaGVyZSAqL1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJTdGF0dXMob25saW5lVXNlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Vc2VyT2ZmbGluZTogKG9mZmxpbmVVc2VyOiBDb21ldENoYXQuVXNlcikgPT4ge1xuICAgICAgICAgICAgICAvKiB3aGVuIHNvbWV1c2VyL2ZyaWVuZCB3ZW50IG9mZmxpbmUsIHVzZXIgd2lsbCBiZSByZWNlaXZlZCBoZXJlICovXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlclN0YXR1cyggb2ZmbGluZVVzZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIGlmKCF0aGlzLmRpc2FibGVUeXBpbmcpe1xuICAgICAgQ29tZXRDaGF0LmFkZE1lc3NhZ2VMaXN0ZW5lcihcbiAgICAgICAgdGhpcy5tc2dMaXN0ZW5lcklkLFxuICAgICAgICBuZXcgQ29tZXRDaGF0Lk1lc3NhZ2VMaXN0ZW5lcih7XG4gICAgICAgICAgb25UeXBpbmdTdGFydGVkOiAodHlwaW5nSW5kaWNhdG9yOiBDb21ldENoYXQuVHlwaW5nSW5kaWNhdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh0eXBpbmdJbmRpY2F0b3IpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblR5cGluZ0VuZGVkOiAodHlwaW5nSW5kaWNhdG9yOiBDb21ldENoYXQuVHlwaW5nSW5kaWNhdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzVHlwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgQ29tZXRDaGF0LmFkZEdyb3VwTGlzdGVuZXIoXG4gICAgICB0aGlzLmdyb3Vwc0xpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0Lkdyb3VwTGlzdGVuZXIoe1xuICAgICAgICBvbkdyb3VwTWVtYmVyU2NvcGVDaGFuZ2VkOiAoXG4gICAgICAgICAgbWVzc2FnZTogQ29tZXRDaGF0LkFjdGlvbixcbiAgICAgICAgICBjaGFuZ2VkVXNlcjogQ29tZXRDaGF0LlVzZXIsXG4gICAgICAgICAgbmV3U2NvcGU6IENvbWV0Q2hhdC5Hcm91cE1lbWJlclNjb3BlLFxuICAgICAgICAgIG9sZFNjb3BlOiBDb21ldENoYXQuR3JvdXBNZW1iZXJTY29wZSxcbiAgICAgICAgICBjaGFuZ2VkR3JvdXA6IENvbWV0Q2hhdC5Hcm91cFxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAoY2hhbmdlZFVzZXIuZ2V0VWlkKCkgPT0gdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpKSB7XG4gICAgICAgICAgICBjaGFuZ2VkR3JvdXAuc2V0U2NvcGUobmV3U2NvcGUpXG4gICAgICAgICAgfVxuICAgICAgICAgdGhpcy5ncm91cCA9IGNoYW5nZWRHcm91cFxuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgICAgb25Hcm91cE1lbWJlcktpY2tlZDogKG1lc3NhZ2U6IENvbWV0Q2hhdC5BY3Rpb24sIGtpY2tlZFVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBraWNrZWRCeTogQ29tZXRDaGF0LlVzZXIsIGtpY2tlZEZyb206IENvbWV0Q2hhdC5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmIChraWNrZWRVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAga2lja2VkRnJvbS5zZXRIYXNKb2luZWQoZmFsc2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXAgPSBraWNrZWRGcm9tXG4gICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgICAgb25NZW1iZXJBZGRlZFRvR3JvdXA6IChcbiAgICAgICAgICBtZXNzYWdlOiBDb21ldENoYXQuQWN0aW9uLFxuICAgICAgICAgIHVzZXJBZGRlZDogQ29tZXRDaGF0LlVzZXIsXG4gICAgICAgICAgdXNlckFkZGVkQnk6IENvbWV0Q2hhdC5Vc2VyLFxuICAgICAgICAgIHVzZXJBZGRlZEluOiBDb21ldENoYXQuR3JvdXBcbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgaWYgKHVzZXJBZGRlZC5nZXRVaWQoKSA9PSB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkpIHtcbiAgICAgICAgICAgIHVzZXJBZGRlZEluLnNldEhhc0pvaW5lZCh0cnVlKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwID0gdXNlckFkZGVkSW5cbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0sXG4gICAgICAgIG9uR3JvdXBNZW1iZXJMZWZ0OiAobWVzc2FnZTogQ29tZXRDaGF0LkFjdGlvbiwgbGVhdmluZ1VzZXI6IENvbWV0Q2hhdC5Vc2VyLCBncm91cDogQ29tZXRDaGF0Lkdyb3VwKSA9PiB7XG4gICAgICAgICAgaWYgKGxlYXZpbmdVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAgZ3JvdXAuc2V0SGFzSm9pbmVkKGZhbHNlKVxuICAgICAgICAgIH1cbiAgICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cFxuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0sXG4gICAgICAgIG9uR3JvdXBNZW1iZXJKb2luZWQ6IChtZXNzYWdlOiBDb21ldENoYXQuQWN0aW9uLCBqb2luZWRVc2VyOiBDb21ldENoYXQuVXNlciwgam9pbmVkR3JvdXA6IENvbWV0Q2hhdC5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmIChqb2luZWRVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAgam9pbmVkR3JvdXAuc2V0SGFzSm9pbmVkKHRydWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXAgPSBqb2luZWRHcm91cFxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjphbnkpIHtcbmlmKHRoaXMub25FcnJvcil7XG4gIHRoaXMub25FcnJvcihDb21ldENoYXRFeGNlcHRpb24oZXJyb3IpKVxufVxuICAgIH1cbiAgfVxuICByZW1vdmVMaXN0ZW5lcigpe1xuICAgIENvbWV0Q2hhdC5yZW1vdmVNZXNzYWdlTGlzdGVuZXIodGhpcy5tc2dMaXN0ZW5lcklkKVxuICAgIENvbWV0Q2hhdC5yZW1vdmVVc2VyTGlzdGVuZXIodGhpcy51c2VyTGlzdGVuZXJJZClcbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKVxuICAgIHRoaXMudW5zdWJzY3JpYmVUb0V2ZW50cygpXG4gIH1cbiAgc2V0VHlwaW5nSW5kaWNhdG9yVGV4dCA9ICh0eXBpbmc6IENvbWV0Q2hhdC5UeXBpbmdJbmRpY2F0b3IpID0+IHtcbiAgICBjb25zdCBzZW5kZXIgPSB0eXBpbmcuZ2V0U2VuZGVyKCk7XG4gICAgY29uc3QgcmVjZWl2ZXJJZCA9IHR5cGluZy5nZXRSZWNlaXZlcklkKCk7XG4gICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gdGhpcy5sb2dnZWRJblVzZXI7XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHNlbmRlci5nZXRVaWQoKSA9PT0gdGhpcy51c2VyPy5nZXRVaWQoKSAmJiBsb2dnZWRJblVzZXI/LmdldFVpZCgpID09PSByZWNlaXZlcklkKSB7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9IGxvY2FsaXplKFwiSVNfVFlQSU5HXCIpO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PT0gcmVjZWl2ZXJJZCkge1xuICAgICAgdGhpcy5zdWJ0aXRsZVRleHQgPSBgJHtzZW5kZXIuZ2V0TmFtZSgpfSAke2xvY2FsaXplKFwiSVNfVFlQSU5HXCIpfWA7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgaGVhZGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuaGVpZ2h0LFxuICAgICAgICBib3JkZXI6IHRoaXMubWVzc2FnZUhlYWRlclN0eWxlLmJvcmRlcixcbiAgICAgICAgYm9yZGVyUmFkaXVzOnRoaXMubWVzc2FnZUhlYWRlclN0eWxlLmJvcmRlclJhZGl1cyxcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuYmFja2dyb3VuZCAsXG4gICAgICB9XG4gICAgfVxuICBzdWJ0aXRsZVN0eWxlID0gKCk9PntcbiBpZih0aGlzLnVzZXIgJiYgdGhpcy51c2VyLmdldFN0YXR1cygpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLnVzZXJTdGF0dXNUeXBlLm9ubGluZSl7XG4gIHJldHVybntcbiAgICB0ZXh0Rm9udDogIHRoaXMubWVzc2FnZUhlYWRlclN0eWxlLnN1YnRpdGxlVGV4dEZvbnQsXG4gICAgdGV4dENvbG9yOiAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KClcbiAgfVxuIH1cbiBlbHNle1xuICByZXR1cm57XG4gICAgdGV4dEZvbnQ6IHRoaXMuaXNUeXBpbmcgPyB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS50eXBpbmdJbmRpY2F0b3JUZXh0Rm9udCA6ICAgdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuc3VidGl0bGVUZXh0Rm9udCxcbiAgICB0ZXh0Q29sb3I6IHRoaXMuaXNUeXBpbmcgPyB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS50eXBpbmdJbmRpY2F0b3JUZXh0Q29sb3IgOiB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICB9XG4gfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1oZWFkZXJfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJoZWFkZXJTdHlsZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWhlYWRlclwiPlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1oZWFkZXJfX2JhY2stYnV0dG9uXCIgKm5nSWY9XCIhaGlkZUJhY2tCdXR0b25cIj4gPGNvbWV0Y2hhdC1idXR0b24gW2ljb25VUkxdPVwiYmFja0J1dHRvbkljb25VUkxcIiBbYnV0dG9uU3R5bGVdPVwiYmFja0J1dHRvblN0eWxlXCIgKGNjLWJ1dHRvbi1jbGlja2VkKT1cIm9uQmFja0NsaWNrZWQoKVwiPjwvY29tZXRjaGF0LWJ1dHRvbj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWhlYWRlcl9fbGlzdGl0ZW1cIj5cbjxjb21ldGNoYXQtbGlzdC1pdGVtICpuZ0lmPVwiIWxpc3RJdGVtVmlldztlbHNlIGxpc3RpdGVtXCIgW2F2YXRhck5hbWVdPVwidXNlcj8uZ2V0TmFtZSgpIHx8IHRoaXMuZ3JvdXA/LmdldE5hbWUoKVwiIFthdmF0YXJVUkxdPVwidGhpcy51c2VyPy5nZXRBdmF0YXIoKSB8fCB0aGlzLmdyb3VwPy5nZXRJY29uKClcIiBbbGlzdEl0ZW1TdHlsZV09XCJsaXN0SXRlbVN0eWxlXCJcbiBbc3RhdHVzSW5kaWNhdG9yQ29sb3JdPVwiY2hlY2tTdGF0dXNUeXBlKClcIiBbc3RhdHVzSW5kaWNhdG9ySWNvbl09XCJjaGVja0dyb3VwVHlwZSgpXCIgW3RpdGxlXT1cInRoaXMudXNlcj8uZ2V0TmFtZSgpIHx8IHRoaXMuZ3JvdXA/LmdldE5hbWUoKVwiICBbaGlkZVNlcGFyYXRvcl09XCJ0cnVlXCJcbiAgW3N0YXR1c0luZGljYXRvclN0eWxlXT1cInN0YXR1c0luZGljYXRvclN0eWxlXCIgW2F2YXRhclN0eWxlXT1cImF2YXRhclN0eWxlXCI+XG48ZGl2IHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIj5cbjxkaXYgKm5nSWY9XCIhc3VidGl0bGVWaWV3OyBlbHNlIHN1YnRpdGxlXCI+XG48Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cInN1YnRpdGxlVGV4dFwiIFtsYWJlbFN0eWxlXT1cInN1YnRpdGxlU3R5bGUoKVwiPlxuXG48L2NvbWV0Y2hhdC1sYWJlbD5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNzdWJ0aXRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YnRpdGxlVmlldztjb250ZXh0OnsgJGltcGxpY2l0OiB1c2VyID8/IGdyb3VwIH1cIj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuPC9jb21ldGNoYXQtbGlzdC1pdGVtPlxuPG5nLXRlbXBsYXRlICNsaXN0aXRlbT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtVmlld1wiPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaGVhZGVyX19tZW51XCIgKm5nSWY9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVcIj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgICAgPC9kaXY+XG5cbiJdfQ==
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZUhlYWRlci9jb21ldGNoYXQtbWVzc2FnZS1oZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZUhlYWRlci9jb21ldGNoYXQtbWVzc2FnZS1oZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQWEsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUE7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFrRyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFelAsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRzdEOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLCtCQUErQjtJQXdEMUMsWUFBb0IsR0FBcUIsRUFBUyxZQUFrQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQXZEM0UsZ0JBQVcsR0FBZ0I7WUFDbEMsWUFBWSxFQUFFLE1BQU07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Q0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F2YXRhclN0eWxlLCBCYXNlU3R5bGUsIExpc3RJdGVtU3R5bGV9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tZXRDaGF0R3JvdXBFdmVudHMsIENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMsIENvbWV0Q2hhdFRoZW1lLCBDb21ldENoYXRVSUtpdENvbnN0YW50cywgSUdyb3VwTGVmdCwgSUdyb3VwTWVtYmVyQWRkZWQsIElHcm91cE1lbWJlckpvaW5lZCwgSUdyb3VwTWVtYmVyS2lja2VkQmFubmVkLCBJT3duZXJzaGlwQ2hhbmdlZCwgZm9udEhlbHBlciwgbG9jYWxpemUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlcyc7XG5cbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gJ0Bjb21ldGNoYXQvY2hhdC1zZGstamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb24nO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlSGVhZGVyU3R5bGUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4qXG4qIENvbWV0Q2hhdE1lc3NhZ2VIZWFkZXIgaXMgYSB1c2VkIHRvIHJlbmRlciBsaXN0aXRlbSBjb21wb25lbnQuXG4qXG4qIEB2ZXJzaW9uIDEuMC4wXG4qIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuKiBAY29weXJpZ2h0IMKpIDIwMjIgQ29tZXRDaGF0IEluYy5cbipcbiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb21ldGNoYXQtbWVzc2FnZS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbWV0Q2hhdE1lc3NhZ2VIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYXZhdGFyU3R5bGU6IEF2YXRhclN0eWxlID0ge1xuICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMjhweFwiLFxuICAgIGhlaWdodDogXCIyOHB4XCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcblxuICB9XG4gIEBJbnB1dCgpIHN0YXR1c0luZGljYXRvclN0eWxlOiBCYXNlU3R5bGUgPSB7XG4gICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICB3aWR0aDogXCIxMHB4XCIsXG4gICAgaGVpZ2h0OiBcIjEwcHhcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICB9XG4gIEBJbnB1dCgpIG1lc3NhZ2VIZWFkZXJTdHlsZTogTWVzc2FnZUhlYWRlclN0eWxlID0ge1xuICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICB9XG4gIEBJbnB1dCgpIGxpc3RJdGVtU3R5bGU6IExpc3RJdGVtU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIGJvcmRlclJhZGl1czogXCIycHhcIixcbiAgICBzZXBhcmF0b3JDb2xvcjogXCJcIixcbiAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgaG92ZXJCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCJcbiAgfVxuICBASW5wdXQoKSBzdWJ0aXRsZVZpZXc6IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZVVzZXJzUHJlc2VuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVR5cGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwcm90ZWN0ZWRHcm91cEljb246IHN0cmluZyA9IFwiYXNzZXRzL0xvY2tlZC5zdmdcIjtcbiAgQElucHV0KCkgcHJpdmF0ZUdyb3VwSWNvbjogc3RyaW5nID1cImFzc2V0cy9Qcml2YXRlLnN2Z1wiO1xuICBASW5wdXQoKSBtZW51OiBhbnk7XG4gIEBJbnB1dCgpIHVzZXIhOiBDb21ldENoYXQuVXNlcjtcbiAgQElucHV0KCkgZ3JvdXAhOiBDb21ldENoYXQuR3JvdXA7XG4gIEBJbnB1dCgpIGJhY2tCdXR0b25JY29uVVJMOiBzdHJpbmcgPSBcImFzc2V0cy9iYWNrYnV0dG9uLnN2Z1wiO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsaXN0SXRlbVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBvbkVycm9yOigoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PnZvaWQpICB8IG51bGwgPSAoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgfVxuICBASW5wdXQoKSBvbkJhY2s6KCk9PnZvaWQgPSAoKT0+e31cbiAgcHVibGljIGdyb3Vwc0xpc3RlbmVySWQ6IHN0cmluZyA9IFwiZ3JvdXBzTGlzdF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICB1c2VyTGlzdGVuZXJJZCA9IFwidXNlcmxpc3RfXCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgcHVibGljIHN1YnRpdGxlVGV4dDpzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgbG9nZ2VkSW5Vc2VyITpDb21ldENoYXQuVXNlcjtcbiAgcHVibGljIGlzVHlwaW5nOmJvb2xlYW4gPSBmYWxzZTtcbiAgdGhlbWU6Q29tZXRDaGF0VGhlbWUgPSBuZXcgQ29tZXRDaGF0VGhlbWUoe30pXG4gIGNjR3JvdXBNZW1iZXJBZGRlZCE6U3Vic2NyaXB0aW9uO1xuICBjY0dyb3VwTGVmdCE6U3Vic2NyaXB0aW9uO1xuICBjY0dyb3VwTWVtYmVySm9pbmVkITpTdWJzY3JpcHRpb247XG4gIGNjR3JvdXBNZW1iZXJLaWNrZWQhOlN1YnNjcmlwdGlvbjtcbiAgY2NHcm91cE1lbWJlckJhbm5lZCE6U3Vic2NyaXB0aW9uO1xuICBjY093bmVyc2hpcENoYW5nZWQhOlN1YnNjcmlwdGlvbjtcbiAgb25UeXBpbmdTdGFydGVkITogU3Vic2NyaXB0aW9uO1xuICBvblR5cGluZ0VuZGVkITogU3Vic2NyaXB0aW9uO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjpDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHRoZW1lU2VydmljZTpDb21ldENoYXRUaGVtZVNlcnZpY2UpIHtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlc1tcInVzZXJcIl0gfHwgY2hhbmdlc1tcImdyb3VwXCJdKXtcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKVxuICAgICAgaWYoIXRoaXMubG9nZ2VkSW5Vc2VyKXtcbiAgICAgICAgQ29tZXRDaGF0LmdldExvZ2dlZGluVXNlcigpLnRoZW4oKHVzZXI6Q29tZXRDaGF0LlVzZXIgfCBudWxsKT0+e1xuICAgICAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlciBhcyBDb21ldENoYXQuVXNlcjtcbiAgICAgICAgICB0aGlzLmF0dGFjaExpc3RlbmVycygpXG4gICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0pLmNhdGNoKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy5hdHRhY2hMaXN0ZW5lcnMoKVxuICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKVxuICAgIHRoaXMuc2V0QXZhdGFyU3R5bGUoKVxuICAgIHRoaXMuc2V0U3RhdHVzU3R5bGUoKVxuICAgIHRoaXMuc2V0SGVhZGVyc1N0eWxlKClcbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKCk7XG4gICAgdGhpcy5iYWNrQnV0dG9uU3R5bGUuYnV0dG9uSWNvblRpbnQgPSB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZT8uYmFja0J1dHRvbkljb25UaW50O1xuICAgIHRoaXMuc3RhdHVzQ29sb3Iub25saW5lID0gdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUub25saW5lU3RhdHVzQ29sb3JcblxuICB9XG4gICAgLy8gc3Vic2NyaWJlIHRvIGdsb2JhbCBldmVudHNcbiAgICBzdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlckFkZGVkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cE1lbWJlckFkZGVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVyQWRkZWQpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8udXNlckFkZGVkSW4hLmdldEd1aWQoKSl7XG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXAgPT0gaXRlbT8udXNlckFkZGVkSW47XG4gICAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmNjR3JvdXBNZW1iZXJCYW5uZWQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTWVtYmVyQmFubmVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVyS2lja2VkQmFubmVkKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8ua2lja2VkRnJvbSEuZ2V0R3VpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/LmtpY2tlZEZyb207XG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLmNjR3JvdXBNZW1iZXJKb2luZWQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTWVtYmVySm9pbmVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVySm9pbmVkKSA9PiB7XG4gICAgICAgIGlmKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8uam9pbmVkR3JvdXAhLmdldEd1aWQoKSl7XG4gICAgICAgICAgdGhpcy5ncm91cCA9PSBpdGVtPy5qb2luZWRHcm91cDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlcktpY2tlZCA9IENvbWV0Q2hhdEdyb3VwRXZlbnRzLmNjR3JvdXBNZW1iZXJLaWNrZWQuc3Vic2NyaWJlKChpdGVtOiBJR3JvdXBNZW1iZXJLaWNrZWRCYW5uZWQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5raWNrZWRGcm9tIS5nZXRHdWlkKCkpe1xuICAgICAgICAgIHRoaXMuZ3JvdXAgPT0gaXRlbT8ua2lja2VkRnJvbTtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NPd25lcnNoaXBDaGFuZ2VkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NPd25lcnNoaXBDaGFuZ2VkLnN1YnNjcmliZSgoaXRlbTogSU93bmVyc2hpcENoYW5nZWQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5ncm91cCEuZ2V0R3VpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/Lmdyb3VwO1xuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgIHRoaXMudXBkYXRlU3VidGl0bGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRoaXMuY2NHcm91cExlZnQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTGVmdC5zdWJzY3JpYmUoKGl0ZW06IElHcm91cExlZnQpID0+IHtcbiAgICAgICAgaWYodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5sZWZ0R3JvdXAhLmdldEd1aWQoKSAmJiB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkgPT0gaXRlbT8udXNlckxlZnQ/LmdldFVpZCgpKXtcbiAgICAgICAgICB0aGlzLmdyb3VwID09IGl0ZW0/LmxlZnRHcm91cDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gdW5zdWJzY3JpYmUgdG8gc3Vic2NyaWJlZCBldmVudHMuXG4gICAgdW5zdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICAgIHRoaXMuY2NHcm91cE1lbWJlckFkZGVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVyQmFubmVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVySm9pbmVkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY0dyb3VwTWVtYmVyS2lja2VkPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jY093bmVyc2hpcENoYW5nZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNjR3JvdXBMZWZ0Py51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgc2V0TGlzdEl0ZW1TdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6TGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCI0NXB4XCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGFjdGl2ZUJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuICAgICAgdGl0bGVDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBzZXBhcmF0b3JDb2xvcjpcIlwiLFxuICAgICAgaG92ZXJCYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIlxuICAgIH0pXG4gICAgdGhpcy5saXN0SXRlbVN0eWxlID0gey4uLmRlZmF1bHRTdHlsZSwuLi50aGlzLmxpc3RJdGVtU3R5bGV9XG4gIH1cbiAgc2V0QXZhdGFyU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkF2YXRhclN0eWxlID0gbmV3IEF2YXRhclN0eWxlKHtcbiAgICAgIGJvcmRlclJhZGl1czogXCIyNHB4XCIsXG4gICAgICB3aWR0aDogXCIzNnB4XCIsXG4gICAgICBoZWlnaHQ6IFwiMzZweFwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgIG5hbWVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50OTAwKCksXG4gICAgICBiYWNrZ3JvdW5kU2l6ZTogXCJjb3ZlclwiLFxuICAgICAgbmFtZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgIFxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyU3BhY2luZzogXCJcIixcbiAgICB9KVxuICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMuYXZhdGFyU3R5bGV9XG4gIH1cbiAgc2V0U3RhdHVzU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOkJhc2VTdHlsZSA9IHtcbiAgICAgICAgaGVpZ2h0OiBcIjEycHhcIixcbiAgICAgICAgd2lkdGg6XCIxMnB4XCIsXG4gICAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgICAgYm9yZGVyUmFkaXVzOlwiMjRweFwiLFxuXG4gICAgfVxuICAgIHRoaXMuc3RhdHVzSW5kaWNhdG9yU3R5bGUgPSB7Li4uZGVmYXVsdFN0eWxlLC4uLnRoaXMuc3RhdHVzSW5kaWNhdG9yU3R5bGV9XG4gIH1cbiAgc2V0SGVhZGVyc1N0eWxlKCl7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTpNZXNzYWdlSGVhZGVyU3R5bGUgPSBuZXcgTWVzc2FnZUhlYWRlclN0eWxlKHtcbiAgICAgIGJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXI6YG5vbmVgLFxuICAgICAgb25saW5lU3RhdHVzQ29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRTdWNjZXNzKCksXG4gICAgICBwcml2YXRlR3JvdXBJY29uQmFja2dyb3VuZDp0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFN1Y2Nlc3MoKSxcbiAgICAgIHBhc3N3b3JkR3JvdXBJY29uQmFja2dyb3VuZDpcIlJHQigyNDcsIDE2NSwgMClcIixcbiAgICAgIGJhY2tCdXR0b25JY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KCksXG4gICAgICBzdWJ0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTIpLFxuICAgICAgdHlwaW5nSW5kaWNhdG9yVGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICAgIHR5cGluZ0luZGljYXRvclRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICB9KVxuICAgIHRoaXMubWVzc2FnZUhlYWRlclN0eWxlID0gey4uLmRlZmF1bHRTdHlsZSwuLi50aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZX1cbiAgfVxuICBwdWJsaWMgc3RhdHVzQ29sb3I6IGFueSA9IHtcbiAgICBvbmxpbmU6IFwiIzAwZjMwMFwiLFxuICAgIHByaXZhdGU6IFwiIzAwZjMwMFwiLFxuICAgIHBhc3N3b3JkOiBcIiNGN0E1MDBcIixcbiAgICBwdWJsaWM6IFwiXCJcbiAgfVxuICBiYWNrQnV0dG9uU3R5bGU6YW55ID0ge1xuICAgIGhlaWdodDpcIjI0cHhcIixcbiAgICB3aWR0aDpcIjI0cHhcIixcbiAgICBib3JkZXI6XCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOlwibm9uZVwiLFxuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICAgIGJ1dHRvbkljb25UaW50OlwiIzMzOTlGRlwiXG4gIH1cbiAgY2hlY2tTdGF0dXNUeXBlID0gKCk9PiB7XG4gICAgcmV0dXJuICAgdGhpcy51c2VyICYmICF0aGlzLmRpc2FibGVVc2Vyc1ByZXNlbmNlID8gdGhpcy5zdGF0dXNDb2xvclt0aGlzLnVzZXI/LmdldFN0YXR1cygpXSA6IHRoaXMuc3RhdHVzQ29sb3JbdGhpcy5ncm91cD8uZ2V0VHlwZSgpXVxuICB9XG4gIG9uQmFja0NsaWNrZWQoKXtcbiAgICBpZih0aGlzLm9uQmFjayl7XG4gICAgICB0aGlzLm9uQmFjaygpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVN1YnRpdGxlKCkge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5ncm91cD8uZ2V0TWVtYmVyc0NvdW50KCk7XG4gICAgY29uc3QgbWVtYmVyc1RleHQgPSBsb2NhbGl6ZShjb3VudCA+IDEgPyBcIk1FTUJFUlNcIiA6IFwiTUVNQkVSXCIpO1xuICAgIGlmKHRoaXMudXNlcil7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9IHRoaXMuZGlzYWJsZVVzZXJzUHJlc2VuY2UgPyBcIlwiIDogdGhpcy51c2VyLmdldFN0YXR1cygpXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9ICBgJHtjb3VudH0gJHttZW1iZXJzVGV4dH1gO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICB9XG4gIGdldFN1YnRpdGxlVmlldygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZVZpZXcodGhpcy51c2VyIHx8IHRoaXMuZ3JvdXApO1xuICB9XG4gIGNoZWNrR3JvdXBUeXBlKCk6IHN0cmluZyB7XG4gICAgbGV0IGltYWdlOiBzdHJpbmcgPSBcIlwiO1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZ3JvdXA/LmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLkdyb3VwVHlwZXMucGFzc3dvcmQ6XG4gICAgICAgICAgaW1hZ2UgPSB0aGlzLnByb3RlY3RlZEdyb3VwSWNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5Hcm91cFR5cGVzLnByaXZhdGU6XG4gICAgICAgICAgaW1hZ2UgPSB0aGlzLnByaXZhdGVHcm91cEljb247XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaW1hZ2UgPSBcIlwiXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbWFnZVxuICB9XG4gIHVwZGF0ZVVzZXJTdGF0dXModXNlcjpDb21ldENoYXQuVXNlcil7XG5cbiAgICBpZiAodGhpcy51c2VyICYmIHRoaXMudXNlci5nZXRVaWQoKSAmJiB0aGlzLnVzZXIuZ2V0VWlkKCkgPT09IHVzZXIuZ2V0VWlkKCkpIHtcbiAgICAgIHRoaXMudXNlci5zZXRTdGF0dXModXNlci5nZXRTdGF0dXMoKSk7XG4gICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICB9XG4gICAgLy8gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGF0dGFjaExpc3RlbmVycygpIHtcbiAgICB0cnkge1xuICAgICAgaWYoIXRoaXMuZGlzYWJsZVVzZXJzUHJlc2VuY2Upe1xuICAgICAgICBDb21ldENoYXQuYWRkVXNlckxpc3RlbmVyKFxuICAgICAgICAgIHRoaXMudXNlckxpc3RlbmVySWQsXG4gICAgICAgICAgbmV3IENvbWV0Q2hhdC5Vc2VyTGlzdGVuZXIoe1xuICAgICAgICAgICAgb25Vc2VyT25saW5lOiAob25saW5lVXNlcjogQ29tZXRDaGF0LlVzZXIpID0+IHtcbiAgICAgICAgICAgICAgLyogd2hlbiBzb21ldXNlci9mcmllbmQgY29tZXMgb25saW5lLCB1c2VyIHdpbGwgYmUgcmVjZWl2ZWQgaGVyZSAqL1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJTdGF0dXMob25saW5lVXNlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Vc2VyT2ZmbGluZTogKG9mZmxpbmVVc2VyOiBDb21ldENoYXQuVXNlcikgPT4ge1xuICAgICAgICAgICAgICAvKiB3aGVuIHNvbWV1c2VyL2ZyaWVuZCB3ZW50IG9mZmxpbmUsIHVzZXIgd2lsbCBiZSByZWNlaXZlZCBoZXJlICovXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlclN0YXR1cyggb2ZmbGluZVVzZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIGlmKCF0aGlzLmRpc2FibGVUeXBpbmcpe1xuICAgICAgdGhpcy5vblR5cGluZ1N0YXJ0ZWQgPSBDb21ldENoYXRNZXNzYWdlRXZlbnRzLm9uVHlwaW5nU3RhcnRlZC5zdWJzY3JpYmUoKHR5cGluZ0luZGljYXRvcjogQ29tZXRDaGF0LlR5cGluZ0luZGljYXRvcikgPT4ge1xuICAgICAgICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRUeXBpbmdJbmRpY2F0b3JUZXh0KHR5cGluZ0luZGljYXRvcilcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vblR5cGluZ0VuZGVkID0gQ29tZXRDaGF0TWVzc2FnZUV2ZW50cy5vblR5cGluZ0VuZGVkLnN1YnNjcmliZSgodHlwaW5nSW5kaWNhdG9yOiBDb21ldENoYXQuVHlwaW5nSW5kaWNhdG9yKSA9PiB7XG4gICAgICAgIHRoaXMuaXNUeXBpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgQ29tZXRDaGF0LmFkZEdyb3VwTGlzdGVuZXIoXG4gICAgICB0aGlzLmdyb3Vwc0xpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0Lkdyb3VwTGlzdGVuZXIoe1xuICAgICAgICBvbkdyb3VwTWVtYmVyU2NvcGVDaGFuZ2VkOiAoXG4gICAgICAgICAgbWVzc2FnZTogQ29tZXRDaGF0LkFjdGlvbixcbiAgICAgICAgICBjaGFuZ2VkVXNlcjogQ29tZXRDaGF0LlVzZXIsXG4gICAgICAgICAgbmV3U2NvcGU6IENvbWV0Q2hhdC5Hcm91cE1lbWJlclNjb3BlLFxuICAgICAgICAgIG9sZFNjb3BlOiBDb21ldENoYXQuR3JvdXBNZW1iZXJTY29wZSxcbiAgICAgICAgICBjaGFuZ2VkR3JvdXA6IENvbWV0Q2hhdC5Hcm91cFxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAoY2hhbmdlZFVzZXIuZ2V0VWlkKCkgPT0gdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpKSB7XG4gICAgICAgICAgICBjaGFuZ2VkR3JvdXAuc2V0U2NvcGUobmV3U2NvcGUpXG4gICAgICAgICAgfVxuICAgICAgICAgdGhpcy5ncm91cCA9IGNoYW5nZWRHcm91cFxuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgICAgb25Hcm91cE1lbWJlcktpY2tlZDogKG1lc3NhZ2U6IENvbWV0Q2hhdC5BY3Rpb24sIGtpY2tlZFVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBraWNrZWRCeTogQ29tZXRDaGF0LlVzZXIsIGtpY2tlZEZyb206IENvbWV0Q2hhdC5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmIChraWNrZWRVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAga2lja2VkRnJvbS5zZXRIYXNKb2luZWQoZmFsc2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXAgPSBraWNrZWRGcm9tXG4gICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgICAgb25NZW1iZXJBZGRlZFRvR3JvdXA6IChcbiAgICAgICAgICBtZXNzYWdlOiBDb21ldENoYXQuQWN0aW9uLFxuICAgICAgICAgIHVzZXJBZGRlZDogQ29tZXRDaGF0LlVzZXIsXG4gICAgICAgICAgdXNlckFkZGVkQnk6IENvbWV0Q2hhdC5Vc2VyLFxuICAgICAgICAgIHVzZXJBZGRlZEluOiBDb21ldENoYXQuR3JvdXBcbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgaWYgKHVzZXJBZGRlZC5nZXRVaWQoKSA9PSB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkpIHtcbiAgICAgICAgICAgIHVzZXJBZGRlZEluLnNldEhhc0pvaW5lZCh0cnVlKVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwID0gdXNlckFkZGVkSW5cbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0sXG4gICAgICAgIG9uR3JvdXBNZW1iZXJMZWZ0OiAobWVzc2FnZTogQ29tZXRDaGF0LkFjdGlvbiwgbGVhdmluZ1VzZXI6IENvbWV0Q2hhdC5Vc2VyLCBncm91cDogQ29tZXRDaGF0Lkdyb3VwKSA9PiB7XG4gICAgICAgICAgaWYgKGxlYXZpbmdVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAgZ3JvdXAuc2V0SGFzSm9pbmVkKGZhbHNlKVxuICAgICAgICAgIH1cbiAgICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cFxuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0aXRsZSgpXG4gICAgICAgIH0sXG4gICAgICAgIG9uR3JvdXBNZW1iZXJKb2luZWQ6IChtZXNzYWdlOiBDb21ldENoYXQuQWN0aW9uLCBqb2luZWRVc2VyOiBDb21ldENoYXQuVXNlciwgam9pbmVkR3JvdXA6IENvbWV0Q2hhdC5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmIChqb2luZWRVc2VyLmdldFVpZCgpID09IHRoaXMubG9nZ2VkSW5Vc2VyPy5nZXRVaWQoKSkge1xuICAgICAgICAgICAgam9pbmVkR3JvdXAuc2V0SGFzSm9pbmVkKHRydWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXAgPSBqb2luZWRHcm91cFxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YnRpdGxlKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjphbnkpIHtcbmlmKHRoaXMub25FcnJvcil7XG4gIHRoaXMub25FcnJvcihDb21ldENoYXRFeGNlcHRpb24oZXJyb3IpKVxufVxuICAgIH1cbiAgfVxuICByZW1vdmVMaXN0ZW5lcigpe1xuICAgIENvbWV0Q2hhdC5yZW1vdmVVc2VyTGlzdGVuZXIodGhpcy51c2VyTGlzdGVuZXJJZCk7XG4gICAgdGhpcy5vblR5cGluZ1N0YXJ0ZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vblR5cGluZ0VuZGVkPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG5nT25EZXN0cm95KCl7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcigpXG4gICAgdGhpcy51bnN1YnNjcmliZVRvRXZlbnRzKClcbiAgfVxuICBzZXRUeXBpbmdJbmRpY2F0b3JUZXh0ID0gKHR5cGluZzogQ29tZXRDaGF0LlR5cGluZ0luZGljYXRvcikgPT4ge1xuICAgIGNvbnN0IHNlbmRlciA9IHR5cGluZy5nZXRTZW5kZXIoKTtcbiAgICBjb25zdCByZWNlaXZlcklkID0gdHlwaW5nLmdldFJlY2VpdmVySWQoKTtcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcjtcblxuICAgIGlmICh0aGlzLnVzZXIgJiYgc2VuZGVyLmdldFVpZCgpID09PSB0aGlzLnVzZXI/LmdldFVpZCgpICYmIGxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkgPT09IHJlY2VpdmVySWQpIHtcbiAgICAgIHRoaXMuc3VidGl0bGVUZXh0ID0gbG9jYWxpemUoXCJJU19UWVBJTkdcIik7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuZ2V0R3VpZCgpID09PSByZWNlaXZlcklkKSB7XG4gICAgICB0aGlzLnN1YnRpdGxlVGV4dCA9IGAke3NlbmRlci5nZXROYW1lKCl9ICR7bG9jYWxpemUoXCJJU19UWVBJTkdcIil9YDtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBoZWFkZXJTdHlsZSA9ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS5oZWlnaHQsXG4gICAgICAgIGJvcmRlcjogdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuYm9yZGVyLFxuICAgICAgICBib3JkZXJSYWRpdXM6dGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS5iYWNrZ3JvdW5kICxcbiAgICAgIH1cbiAgICB9XG4gIHN1YnRpdGxlU3R5bGUgPSAoKT0+e1xuIGlmKHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZ2V0U3RhdHVzKCkgPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMudXNlclN0YXR1c1R5cGUub25saW5lKXtcbiAgcmV0dXJue1xuICAgIHRleHRGb250OiAgdGhpcy5tZXNzYWdlSGVhZGVyU3R5bGUuc3VidGl0bGVUZXh0Rm9udCxcbiAgICB0ZXh0Q29sb3I6ICB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKVxuICB9XG4gfVxuIGVsc2V7XG4gIHJldHVybntcbiAgICB0ZXh0Rm9udDogdGhpcy5pc1R5cGluZyA/IHRoaXMubWVzc2FnZUhlYWRlclN0eWxlLnR5cGluZ0luZGljYXRvclRleHRGb250IDogICB0aGlzLm1lc3NhZ2VIZWFkZXJTdHlsZS5zdWJ0aXRsZVRleHRGb250LFxuICAgIHRleHRDb2xvcjogdGhpcy5pc1R5cGluZyA/IHRoaXMubWVzc2FnZUhlYWRlclN0eWxlLnR5cGluZ0luZGljYXRvclRleHRDb2xvciA6IHRoaXMubWVzc2FnZUhlYWRlclN0eWxlLnN1YnRpdGxlVGV4dENvbG9yXG4gIH1cbiB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWhlYWRlcl9fd3JhcHBlclwiIFtuZ1N0eWxlXT1cImhlYWRlclN0eWxlKClcIj5cbiAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWhlYWRlcl9fYmFjay1idXR0b25cIiAqbmdJZj1cIiFoaWRlQmFja0J1dHRvblwiPiA8Y29tZXRjaGF0LWJ1dHRvbiBbaWNvblVSTF09XCJiYWNrQnV0dG9uSWNvblVSTFwiIFtidXR0b25TdHlsZV09XCJiYWNrQnV0dG9uU3R5bGVcIiAoY2MtYnV0dG9uLWNsaWNrZWQpPVwib25CYWNrQ2xpY2tlZCgpXCI+PC9jb21ldGNoYXQtYnV0dG9uPjwvZGl2PlxuPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaGVhZGVyX19saXN0aXRlbVwiPlxuPGNvbWV0Y2hhdC1saXN0LWl0ZW0gKm5nSWY9XCIhbGlzdEl0ZW1WaWV3O2Vsc2UgbGlzdGl0ZW1cIiBbYXZhdGFyTmFtZV09XCJ1c2VyPy5nZXROYW1lKCkgfHwgdGhpcy5ncm91cD8uZ2V0TmFtZSgpXCIgW2F2YXRhclVSTF09XCJ0aGlzLnVzZXI/LmdldEF2YXRhcigpIHx8IHRoaXMuZ3JvdXA/LmdldEljb24oKVwiIFtsaXN0SXRlbVN0eWxlXT1cImxpc3RJdGVtU3R5bGVcIlxuIFtzdGF0dXNJbmRpY2F0b3JDb2xvcl09XCJjaGVja1N0YXR1c1R5cGUoKVwiIFtzdGF0dXNJbmRpY2F0b3JJY29uXT1cImNoZWNrR3JvdXBUeXBlKClcIiBbdGl0bGVdPVwidGhpcy51c2VyPy5nZXROYW1lKCkgfHwgdGhpcy5ncm91cD8uZ2V0TmFtZSgpXCIgIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIlxuICBbc3RhdHVzSW5kaWNhdG9yU3R5bGVdPVwic3RhdHVzSW5kaWNhdG9yU3R5bGVcIiBbYXZhdGFyU3R5bGVdPVwiYXZhdGFyU3R5bGVcIj5cbjxkaXYgc2xvdD1cInN1YnRpdGxlVmlld1wiPlxuPGRpdiAqbmdJZj1cIiFzdWJ0aXRsZVZpZXc7IGVsc2Ugc3VidGl0bGVcIj5cbjxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwic3VidGl0bGVUZXh0XCIgW2xhYmVsU3R5bGVdPVwic3VidGl0bGVTdHlsZSgpXCI+XG5cbjwvY29tZXRjaGF0LWxhYmVsPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3N1YnRpdGxlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VidGl0bGVWaWV3O2NvbnRleHQ6eyAkaW1wbGljaXQ6IHVzZXIgPz8gZ3JvdXAgfVwiPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPC9kaXY+XG48L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG48bmctdGVtcGxhdGUgI2xpc3RpdGVtPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEl0ZW1WaWV3XCI+XG5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1oZWFkZXJfX21lbnVcIiAqbmdJZj1cIm1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudVwiPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICAgICA8L2Rpdj5cblxuIl19
@@ -1,8 +1,8 @@
1
- import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
- import { CometChat } from '@cometchat/chat-sdk-javascript';
3
- import { CometChatUIKitConstants, Receipts, States, fontHelper, localize } from '@cometchat/uikit-resources';
4
- import { MessageInformationStyle, MessageReceiptUtils } from '@cometchat/uikit-shared';
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { CometChatMessageEvents, CometChatUIKitConstants, Receipts, States, fontHelper, localize } from '@cometchat/uikit-resources';
5
3
  import { ListItemStyle, ReceiptStyle } from '@cometchat/uikit-elements';
4
+ import { MessageInformationStyle, MessageReceiptUtils } from '@cometchat/uikit-shared';
5
+ import { CometChat } from '@cometchat/chat-sdk-javascript';
6
6
  import { CometChatException } from '../../Shared/Utils/ComeChatException';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../CometChatTheme.service";
@@ -48,7 +48,6 @@ export class CometChatMessageInformationComponent {
48
48
  });
49
49
  this.isUserType = false;
50
50
  this.deliveredReceipt = Receipts.delivered;
51
- this.msgListenerId = "message_" + new Date().getTime();
52
51
  this.readReceipt = Receipts.read;
53
52
  this.listStyle = {};
54
53
  this.messageText = localize("MESSAGE");
@@ -165,24 +164,23 @@ export class CometChatMessageInformationComponent {
165
164
  this.messageInformationStyle = { ...defaultStyle, ...this.messageInformationStyle };
166
165
  }
167
166
  ngOnDestroy() {
168
- CometChat.removeMessageListener(this.msgListenerId);
167
+ this.onMessagesDelivered.unsubscribe();
168
+ this.onMessagesRead.unsubscribe();
169
169
  }
170
170
  addMessageEventListeners() {
171
171
  try {
172
- CometChat.addMessageListener(this.msgListenerId, new CometChat.MessageListener({
173
- onMessagesDelivered: (messageReceipt) => {
174
- if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
175
- this.message?.setDeliveredAt(messageReceipt.getDeliveredAt());
176
- this.ref.detectChanges();
177
- }
178
- },
179
- onMessagesRead: (messageReceipt) => {
180
- if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
181
- this.message?.setReadAt(messageReceipt.getReadAt());
182
- this.ref.detectChanges();
183
- }
172
+ this.onMessagesDelivered = CometChatMessageEvents.onMessagesDelivered.subscribe((messageReceipt) => {
173
+ if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
174
+ this.message?.setDeliveredAt(messageReceipt.getDeliveredAt());
175
+ this.ref.detectChanges();
184
176
  }
185
- }));
177
+ });
178
+ this.onMessagesRead = CometChatMessageEvents.onMessagesRead.subscribe((messageReceipt) => {
179
+ if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
180
+ this.message?.setReadAt(messageReceipt.getReadAt());
181
+ this.ref.detectChanges();
182
+ }
183
+ });
186
184
  }
187
185
  catch (error) {
188
186
  if (this.onError) {
@@ -240,7 +238,7 @@ export class CometChatMessageInformationComponent {
240
238
  }
241
239
  }
242
240
  CometChatMessageInformationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
243
- CometChatMessageInformationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatMessageInformationComponent, selector: "cometchat-message-information", inputs: { closeIconURL: "closeIconURL", message: "message", title: "title", template: "template", bubbleView: "bubbleView", subtitleView: "subtitleView", listItemView: "listItemView", receiptDatePattern: "receiptDatePattern", onError: "onError", messageInformationStyle: "messageInformationStyle", readIcon: "readIcon", deliveredIcon: "deliveredIcon", onClose: "onClose", listItemStyle: "listItemStyle", emptyStateText: "emptyStateText", errorStateText: "errorStateText", emptyStateView: "emptyStateView", loadingIconURL: "loadingIconURL", loadingStateView: "loadingStateView", errorStateView: "errorStateView" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-message-information__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-message-information__header\">\n <div class=\"cc-message-information__title\">\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\" ></cometchat-label>\n </div>\n <div class=\"cc-close-button\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"closeButtonStyle()\" (cc-button-clicked)=\"closeClicked()\">\n </cometchat-button>\n </div>\n </div>\n <div class=\"cc-message-information__bubble\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"messageText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\">\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: message }\">\n </ng-container>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n </div>\n <div class=\"cc-message-information__list-item\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"receiptInfoText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\" *ngIf=\"isUserType; else listView\">\n <ng-container *ngIf=\"listItemView; else userListitem\">\n <ng-container *ngTemplateOutlet=\"listItemView; context:{ $implicit: message }\">\n </ng-container>\n </ng-container>\n <ng-template #userListitem>\n <div *ngIf=\"!getUserReceipt(); else userReceiptView\" class=\"cc-empty-state-view\">\n <cometchat-label *ngIf=\"!emptyStateView else customEmptyView\" [text]=\"emptyStateText\" [labelStyle]=\"emptyLabelStyle\"></cometchat-label>\n <ng-template #customEmptyView>\n <ng-container *ngTemplateOutlet=\"emptyStateView\">\n </ng-container>\n </ng-template>\n </div>\n <ng-template #userReceiptView>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [id]=\"message.getId()\"\n [title]=\"message.getReceiver().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"getAvatarUrl()\" [avatarName]=\"message.getReceiver().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n <div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"message.getDeliveredAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getDeliveredAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"message.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getReadAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n </div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </ng-template>\n </ng-template>\n </div>\n </div>\n</div>\n<!-- list item view -->\n<ng-template #listView>\n<cometchat-list\n[list]=\"receipts\"\n[listItemView]=\"listItemView ? listItemView : listItem\"\n[hideSearch]=\"true\"\n[state]=\"states\"\n[emptyStateText]=\"emptyStateText\"\n[errorStateText]=\"errorStateText\"\n[loadingIconURL]=\"loadingIconURL\"\n[loadingStateView]=\"loadingStateView\"\n[errorStateView]=\"errorStateView\"\n[emptyStateView]=\"emptyStateView\"\n[title]=\"''\"\n></cometchat-list>\n</ng-template>\n<ng-template #listItem let-messageReceipt>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [title]=\"messageReceipt.getSender().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"messageReceipt.getSender()?.getAvatar()\" [avatarName]=\"messageReceipt.getSender().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n<div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"messageReceipt.getDeliveredAt()\">\n<div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n</div>\n <cometchat-date [timestamp]=\"messageReceipt.getDeliveredAt()\" [dateStyle]=\"dateStyle\" [pattern]=\"deliveredReceipt\" [customDateString]=\"getDatePattern(messageReceipt.getDeliveredAt())\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"messageReceipt.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [pattern]=\"readReceipt\" [timestamp]=\"messageReceipt.getReadAt()\" [dateStyle]=\"dateStyle\" [customDateString]=\"getDatePattern(messageReceipt.getReadAt())\"></cometchat-date>\n </div>\n</div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n</ng-template>", styles: [".cc-message-information__wrapper{height:500px;width:500px;background-color:#fff;padding:8px;display:flex;overflow:hidden;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}.cc-message-information__title{display:flex;align-items:center;justify-content:center;height:-moz-fit-content;height:fit-content;width:100%;padding:8px 0}.cc-close-button{padding:8px 0}.cc-message-information__header{display:flex;flex-direction:row;justify-content:flex-end}.cc-message-information__bubble-header{display:flex;align-items:flex-start;justify-content:flex-start;padding-bottom:2px}.cc-message-information__bubble,.cc-message-information__list-item{margin:8px 0;overflow:hidden}.cc-list-item__delivered-receipt,.cc-list-item__read-receipt{display:flex;justify-content:space-between}.cc-list-item__receipt{display:flex}cometchat-label{display:flex;align-items:center;justify-content:flex-start}.cc-empty-state-view{display:flex;align-items:flex-start;justify-content:center}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
241
+ CometChatMessageInformationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatMessageInformationComponent, selector: "cometchat-message-information", inputs: { closeIconURL: "closeIconURL", message: "message", title: "title", template: "template", bubbleView: "bubbleView", subtitleView: "subtitleView", listItemView: "listItemView", receiptDatePattern: "receiptDatePattern", onError: "onError", messageInformationStyle: "messageInformationStyle", readIcon: "readIcon", deliveredIcon: "deliveredIcon", onClose: "onClose", listItemStyle: "listItemStyle", emptyStateText: "emptyStateText", errorStateText: "errorStateText", emptyStateView: "emptyStateView", loadingIconURL: "loadingIconURL", loadingStateView: "loadingStateView", errorStateView: "errorStateView" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-message-information__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-message-information__header\">\n <div class=\"cc-message-information__title\">\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\" ></cometchat-label>\n </div>\n <div class=\"cc-close-button\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"closeButtonStyle()\" (cc-button-clicked)=\"closeClicked()\">\n </cometchat-button>\n </div>\n </div>\n <div class=\"cc-message-information__bubble\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"messageText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\">\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: message }\">\n </ng-container>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n </div>\n <div class=\"cc-message-information__list-item\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"receiptInfoText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\" *ngIf=\"isUserType; else listView\">\n <ng-container *ngIf=\"listItemView; else userListitem\">\n <ng-container *ngTemplateOutlet=\"listItemView; context:{ $implicit: message }\">\n </ng-container>\n </ng-container>\n <ng-template #userListitem>\n <div *ngIf=\"!getUserReceipt(); else userReceiptView\" class=\"cc-empty-state-view\">\n <cometchat-label *ngIf=\"!emptyStateView else customEmptyView\" [text]=\"emptyStateText\" [labelStyle]=\"emptyLabelStyle\"></cometchat-label>\n <ng-template #customEmptyView>\n <ng-container *ngTemplateOutlet=\"emptyStateView\">\n </ng-container>\n </ng-template>\n </div>\n <ng-template #userReceiptView>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [id]=\"message.getId()\"\n [title]=\"message.getReceiver().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"getAvatarUrl()\" [avatarName]=\"message.getReceiver().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n <div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"message.getDeliveredAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getDeliveredAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"message.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getReadAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n </div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </ng-template>\n </ng-template>\n </div>\n </div>\n</div>\n<!-- list item view -->\n<ng-template #listView>\n<cometchat-list\n[list]=\"receipts\"\n[listItemView]=\"listItemView ? listItemView : listItem\"\n[hideSearch]=\"true\"\n[state]=\"states\"\n[emptyStateText]=\"emptyStateText\"\n[errorStateText]=\"errorStateText\"\n[loadingIconURL]=\"loadingIconURL\"\n[loadingStateView]=\"loadingStateView\"\n[errorStateView]=\"errorStateView\"\n[emptyStateView]=\"emptyStateView\"\n[title]=\"''\"\n></cometchat-list>\n</ng-template>\n<ng-template #listItem let-messageReceipt>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [title]=\"messageReceipt.getSender().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"messageReceipt.getSender()?.getAvatar()\" [avatarName]=\"messageReceipt.getSender().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n<div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"messageReceipt.getDeliveredAt()\">\n<div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n</div>\n <cometchat-date [timestamp]=\"messageReceipt.getDeliveredAt()\" [dateStyle]=\"dateStyle\" [pattern]=\"deliveredReceipt\" [customDateString]=\"getDatePattern(messageReceipt.getDeliveredAt())\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"messageReceipt.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [pattern]=\"readReceipt\" [timestamp]=\"messageReceipt.getReadAt()\" [dateStyle]=\"dateStyle\" [customDateString]=\"getDatePattern(messageReceipt.getReadAt())\"></cometchat-date>\n </div>\n</div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n</ng-template>", styles: [".cc-message-information__wrapper{height:500px;width:500px;background-color:#fff;padding:8px;display:flex;overflow:hidden;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}.cc-message-information__title{display:flex;align-items:center;justify-content:center;height:-moz-fit-content;height:fit-content;width:100%;padding:8px 0}.cc-close-button{padding:8px 0}.cc-message-information__header{display:flex;flex-direction:row;justify-content:flex-end}.cc-message-information__bubble-header{display:flex;align-items:flex-start;justify-content:flex-start;padding-bottom:2px}.cc-message-information__bubble,.cc-message-information__list-item{margin:8px 0;overflow:hidden}.cc-list-item__delivered-receipt,.cc-list-item__read-receipt{display:flex;justify-content:space-between}.cc-list-item__receipt{display:flex}cometchat-label{display:flex;align-items:center;justify-content:flex-start}.cc-empty-state-view{display:flex;align-items:flex-start;justify-content:center}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "getSectionHeader", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField", "DateSeparatorPattern", "dateSeparatorStyle"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
244
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformationComponent, decorators: [{
245
243
  type: Component,
246
244
  args: [{ selector: 'cometchat-message-information', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-message-information__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-message-information__header\">\n <div class=\"cc-message-information__title\">\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\" ></cometchat-label>\n </div>\n <div class=\"cc-close-button\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"closeButtonStyle()\" (cc-button-clicked)=\"closeClicked()\">\n </cometchat-button>\n </div>\n </div>\n <div class=\"cc-message-information__bubble\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"messageText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\">\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: message }\">\n </ng-container>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n </div>\n <div class=\"cc-message-information__list-item\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"receiptInfoText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\" *ngIf=\"isUserType; else listView\">\n <ng-container *ngIf=\"listItemView; else userListitem\">\n <ng-container *ngTemplateOutlet=\"listItemView; context:{ $implicit: message }\">\n </ng-container>\n </ng-container>\n <ng-template #userListitem>\n <div *ngIf=\"!getUserReceipt(); else userReceiptView\" class=\"cc-empty-state-view\">\n <cometchat-label *ngIf=\"!emptyStateView else customEmptyView\" [text]=\"emptyStateText\" [labelStyle]=\"emptyLabelStyle\"></cometchat-label>\n <ng-template #customEmptyView>\n <ng-container *ngTemplateOutlet=\"emptyStateView\">\n </ng-container>\n </ng-template>\n </div>\n <ng-template #userReceiptView>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [id]=\"message.getId()\"\n [title]=\"message.getReceiver().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"getAvatarUrl()\" [avatarName]=\"message.getReceiver().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n <div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"message.getDeliveredAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getDeliveredAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"message.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getReadAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n </div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </ng-template>\n </ng-template>\n </div>\n </div>\n</div>\n<!-- list item view -->\n<ng-template #listView>\n<cometchat-list\n[list]=\"receipts\"\n[listItemView]=\"listItemView ? listItemView : listItem\"\n[hideSearch]=\"true\"\n[state]=\"states\"\n[emptyStateText]=\"emptyStateText\"\n[errorStateText]=\"errorStateText\"\n[loadingIconURL]=\"loadingIconURL\"\n[loadingStateView]=\"loadingStateView\"\n[errorStateView]=\"errorStateView\"\n[emptyStateView]=\"emptyStateView\"\n[title]=\"''\"\n></cometchat-list>\n</ng-template>\n<ng-template #listItem let-messageReceipt>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [title]=\"messageReceipt.getSender().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"messageReceipt.getSender()?.getAvatar()\" [avatarName]=\"messageReceipt.getSender().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n<div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"messageReceipt.getDeliveredAt()\">\n<div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n</div>\n <cometchat-date [timestamp]=\"messageReceipt.getDeliveredAt()\" [dateStyle]=\"dateStyle\" [pattern]=\"deliveredReceipt\" [customDateString]=\"getDatePattern(messageReceipt.getDeliveredAt())\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"messageReceipt.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [pattern]=\"readReceipt\" [timestamp]=\"messageReceipt.getReadAt()\" [dateStyle]=\"dateStyle\" [customDateString]=\"getDatePattern(messageReceipt.getReadAt())\"></cometchat-date>\n </div>\n</div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n</ng-template>", styles: [".cc-message-information__wrapper{height:500px;width:500px;background-color:#fff;padding:8px;display:flex;overflow:hidden;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}.cc-message-information__title{display:flex;align-items:center;justify-content:center;height:-moz-fit-content;height:fit-content;width:100%;padding:8px 0}.cc-close-button{padding:8px 0}.cc-message-information__header{display:flex;flex-direction:row;justify-content:flex-end}.cc-message-information__bubble-header{display:flex;align-items:flex-start;justify-content:flex-start;padding-bottom:2px}.cc-message-information__bubble,.cc-message-information__list-item{margin:8px 0;overflow:hidden}.cc-list-item__delivered-receipt,.cc-list-item__read-receipt{display:flex;justify-content:space-between}.cc-list-item__receipt{display:flex}cometchat-label{display:flex;align-items:center;justify-content:flex-start}.cc-empty-state-view{display:flex;align-items:flex-start;justify-content:center}\n"] }]
@@ -285,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
285
283
  }], errorStateView: [{
286
284
  type: Input
287
285
  }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNkIsdUJBQXVCLEVBQTRCLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0QsT0FBTyxFQUE0Qix1QkFBdUIsRUFBZ0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckosT0FBTyxFQUFhLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEcsT0FBTyxFQUF5QixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBQzFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLG9DQUFvQztJQW9EL0MsWUFBb0IsR0FBcUIsRUFBUyxZQUFrQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQW5E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Q0FBQTtJQUNILENBQUM7O2tJQTdOUSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyxnc0JDdEJqRCx1dk1Bc0hjOzRGRGhHRCxvQ0FBb0M7a0JBTmhELFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tICdAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHQnO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBEYXRlUGF0dGVybnMsIFJlY2VpcHRzLCBTdGF0ZXMsIGZvbnRIZWxwZXIsIGxvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTGlzdFN0eWxlLCBNZXNzYWdlSW5mb3JtYXRpb25TdHlsZSwgTWVzc2FnZVJlY2VpcHRVdGlscyB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJztcbmltcG9ydCB7IERhdGVTdHlsZSwgTGFiZWxTdHlsZSwgTGlzdEl0ZW1TdHlsZSwgUmVjZWlwdFN0eWxlIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50cyc7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb24nO1xuLyoqXG4qXG4qIENvbWV0Q2hhdE1lc3NhZ2VJbmZvcm1hdGlvbkNvbXBvbmVudCBpcyBhIHVzZWQgdG8gcmVuZGVyIGxpc3RpdGVtIGNvbXBvbmVudC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0TWVzc2FnZUluZm9ybWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNsb3NlSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9jbG9zZTJ4LnN2Z1wiO1xuICBASW5wdXQoKSBtZXNzYWdlITpDb21ldENoYXQuQmFzZU1lc3NhZ2U7XG4gIEBJbnB1dCgpIHRpdGxlOnN0cmluZyA9IGxvY2FsaXplKFwiTUVTU0FHRV9JTkZPUk1BVElPTlwiKTtcbiAgQElucHV0KCkgdGVtcGxhdGUhOkNvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZTtcbiAgQElucHV0KCkgYnViYmxlVmlldyE6VGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbGlzdEl0ZW1WaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgcmVjZWlwdERhdGVQYXR0ZXJuIToodGltZXN0YW1wOm51bWJlcik9PnN0cmluZztcbiAgQElucHV0KCkgb25FcnJvcjooKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT52b2lkKSB8IG51bGwgPSAoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgfVxuICBASW5wdXQoKSBtZXNzYWdlSW5mb3JtYXRpb25TdHlsZTpNZXNzYWdlSW5mb3JtYXRpb25TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICB3aWR0aDogXCI1MDBweFwiXG4gIH07XG4gIEBJbnB1dCgpIHJlYWRJY29uOnN0cmluZyA9IFwiYXNzZXRzL21lc3NhZ2UtcmVhZC5zdmdcIjtcbiAgQElucHV0KCkgZGVsaXZlcmVkSWNvbjpzdHJpbmcgPSBcImFzc2V0cy9tZXNzYWdlLWRlbGl2ZXJlZC5zdmdcIjtcbiAgQElucHV0KCkgb25DbG9zZSE6KCk9PnZvaWQ7XG4gIEBJbnB1dCgpIGxpc3RJdGVtU3R5bGU6TGlzdEl0ZW1TdHlsZSA9IHt9O1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVGV4dDogc3RyaW5nID0gbG9jYWxpemUoXCJOT19SRUNJUElFTlRTXCIpXG4gIEBJbnB1dCgpIGVycm9yU3RhdGVUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIlNPTUVUSElOR19XUk9OR1wiKTtcbiAgQElucHV0KCkgZW1wdHlTdGF0ZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBsb2FkaW5nSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9TcGlubmVyLnN2Z1wiO1xuICBASW5wdXQoKSBsb2FkaW5nU3RhdGVWaWV3ITpUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBlcnJvclN0YXRlVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHJlY2VpcHRzOkNvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdFtdID0gW107XG4gIHJlY2VpcHRTdHlsZSA9IG5ldyBSZWNlaXB0U3R5bGUoe1xuICAgIHdhaXRJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICBzZW50SWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgZGVsaXZlcmVkSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgcmVhZEljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICBlcnJvckljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEVycm9yKCksXG4gICAgaGVpZ2h0OlwiMjBweFwiLFxuICAgIHdpZHRoOlwiMjBweFwiXG4gIH0pXG4gIGlzVXNlclR5cGU6Ym9vbGVhbiA9IGZhbHNlO1xuICBkZWxpdmVyZWRSZWNlaXB0OlJlY2VpcHRzID0gUmVjZWlwdHMuZGVsaXZlcmVkO1xuICBwdWJsaWMgbXNnTGlzdGVuZXJJZCA9IFwibWVzc2FnZV9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZWFkUmVjZWlwdDpSZWNlaXB0cyA9IFJlY2VpcHRzLnJlYWQ7XG4gIGxpc3RTdHlsZTpMaXN0U3R5bGUgPSB7fTtcbiAgbWVzc2FnZVRleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJNRVNTQUdFXCIpO1xuICByZWNlaXB0SW5mb1RleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJSRUNFSVBUX0lORk9STUFUSU9OXCIpXG4gIGVtcHR5TGFiZWxTdHlsZTpMYWJlbFN0eWxlID0ge1xuICAgIHRleHRGb250Oic0MDAgMTFweCBJbnRlcicsXG4gICAgdGV4dENvbG9yOlwiYmxhY2tcIlxuICB9XG4gIGRhdGVTdHlsZTpEYXRlU3R5bGUgPSB7XG5cbiAgfVxuICBkaXZpZGVyU3R5bGU6YW55ID0ge31cbiAgc3RhdGVzOlN0YXRlcyA9IFN0YXRlcy5sb2FkaW5nXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdGhlbWVTZXJ2aWNlOkNvbWV0Q2hhdFRoZW1lU2VydmljZSkge31cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gIH1cbiAgZ2V0RGF0ZVBhdHRlcm4odGltZXN0YW1wOm51bWJlcil7XG4gICAgaWYodGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4pe1xuICAgICByZXR1cm4gdGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4odGltZXN0YW1wKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG50aGlzLnNldFRoZW1lKClcbnRoaXMuZ2V0TWVzc2FnZVJlY2VpcHRzKClcbnRoaXMuYWRkTWVzc2FnZUV2ZW50TGlzdGVuZXJzKClcblxuICB9XG4gIHNldFRoZW1lKCl7XG4gICAgdGhpcy5zZXRNZXNzYWdlSW5mb1N0eWxlKClcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKVxuICAgIHRoaXMubGlzdFN0eWxlID17XG4gICAgICB0aXRsZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS50aXRsZVRleHRGb250LFxuICAgICAgdGl0bGVUZXh0Q29sb3IgOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgZW1wdHlTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dEZvbnQsXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dENvbG9yLFxuICAgICAgZXJyb3JTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dEZvbnQsXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dENvbG9yLFxuICAgICAgbG9hZGluZ0ljb25UaW50IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5sb2FkaW5nSWNvblRpbnQsXG4gICAgfVxuICAgIHRoaXMuZGl2aWRlclN0eWxlID0ge1xuICAgICAgYmFja2dyb3VuZDp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmRpdmlkZXJUaW50LFxuICAgICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIH1cbiAgICB0aGlzLmRhdGVTdHlsZSA9IHtcbiAgICAgIHRleHRGb250OiAnNDAwIDExcHggSW50ZXInLFxuICAgICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICB9XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgc2V0TGlzdEl0ZW1TdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6TGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCJmaXQtY29udGVudFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgdGl0bGVGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUyKSxcbiAgICAgIHRpdGxlQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQyMDAoKSxcbiAgICAgIGhvdmVyQmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJcbiAgICB9KVxuICAgIHRoaXMubGlzdEl0ZW1TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5saXN0SXRlbVN0eWxlfVxuICB9XG4gIHNldE1lc3NhZ2VJbmZvU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOk1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlID0gbmV3IE1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlKHtcbiAgICAgIGJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXI6YDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NTAoKX1gLFxuICAgICAgdGl0bGVUZXh0Rm9udDpmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIHRpdGxlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBlbXB0eVN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBlcnJvclN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBsb2FkaW5nSWNvblRpbnQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgc3VidGl0bGVUZXh0Q29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKSxcbiAgICAgIGRpdmlkZXJUaW50OnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICAgIHdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICBjYXB0aW9uVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBjYXB0aW9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKVxuICAgIH0pXG4gICAgdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZX1cbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIENvbWV0Q2hhdC5yZW1vdmVNZXNzYWdlTGlzdGVuZXIodGhpcy5tc2dMaXN0ZW5lcklkKTtcbiAgfVxuICBhZGRNZXNzYWdlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIENvbWV0Q2hhdC5hZGRNZXNzYWdlTGlzdGVuZXIoXG4gICAgICAgIHRoaXMubXNnTGlzdGVuZXJJZCxcbiAgICAgICAgbmV3IENvbWV0Q2hhdC5NZXNzYWdlTGlzdGVuZXIoe1xuICAgICAgICAgIG9uTWVzc2FnZXNEZWxpdmVyZWQ6IChtZXNzYWdlUmVjZWlwdDogQ29tZXRDaGF0Lk1lc3NhZ2VSZWNlaXB0KSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLm1lc3NhZ2U/LmdldElkKCkgPT0gTnVtYmVyKG1lc3NhZ2VSZWNlaXB0LmdldE1lc3NhZ2VJZCgpKSl7XG4gICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnNldERlbGl2ZXJlZEF0KG1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KCkpXG4gICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTWVzc2FnZXNSZWFkOiAobWVzc2FnZVJlY2VpcHQ6IENvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdCkgPT4ge1xuICAgICAgICAgICAgaWYodGhpcy5tZXNzYWdlPy5nZXRJZCgpID09IE51bWJlcihtZXNzYWdlUmVjZWlwdC5nZXRNZXNzYWdlSWQoKSkpe1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnNldFJlYWRBdChtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKSlcbiAgICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICB0aGlzLm9uRXJyb3IoQ29tZXRDaGF0RXhjZXB0aW9uKGVycm9yKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldEF2YXRhclVybCgpe1xuICAgIHJldHVybiB0aGlzLmlzVXNlclR5cGUgPyAodGhpcy5tZXNzYWdlLmdldFJlY2VpdmVyKCkgYXMgQ29tZXRDaGF0LlVzZXIpLmdldEF2YXRhcigpIDogXCJcIlxuICB9XG4gIGdldFVzZXJSZWNlaXB0KCl7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZS5nZXRSZWFkQXQoKSB8fCB0aGlzLm1lc3NhZ2UuZ2V0RGVsaXZlcmVkQXQoKVxuICB9XG4gIGdldE1lc3NhZ2VSZWNlaXB0KCkge1xuICAgIGxldCByZWNlaXB0ID0gTWVzc2FnZVJlY2VpcHRVdGlscy5nZXRSZWNlaXB0U3RhdHVzKHRoaXMubWVzc2FnZSlcbiAgICByZXR1cm4gcmVjZWlwdFxuICB9XG4gIGdldE1lc3NhZ2VSZWNlaXB0cygpe1xuICAgIGlmKHRoaXMubWVzc2FnZS5nZXRSZWNlaXZlclR5cGUoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlUmVjZWl2ZXJUeXBlLnVzZXIpe1xuICAgICAgdGhpcy5pc1VzZXJUeXBlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZVRleHQgPSBsb2NhbGl6ZShcIk5PX1JFQ0lQSUVOVFwiKVxuICAgICAgdGhpcy5zdGF0ZXMgPSBTdGF0ZXMubG9hZGVkXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZVRleHQgPSBsb2NhbGl6ZShcIk5PX1JFQ0lQSUVOVFNcIilcbnRoaXMuc3RhdGVzID0gU3RhdGVzLmxvYWRpbmdcbiAgICAgIHRoaXMuaXNVc2VyVHlwZSA9IGZhbHNlO1xuICAgICAgQ29tZXRDaGF0LmdldE1lc3NhZ2VSZWNlaXB0cyh0aGlzLm1lc3NhZ2UuZ2V0SWQoKSkudGhlbigocmVjZWlwdHMpPT57XG4gICAgICAgIHRoaXMucmVjZWlwdHMgPSByZWNlaXB0cyBhcyBDb21ldENoYXQuTWVzc2FnZVJlY2VpcHRbXTtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnJlY2VpcHRzLmxlbmd0aCA+IDAgPyBTdGF0ZXMubG9hZGVkIDogU3RhdGVzLmVtcHR5XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnI6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICAgICAgIHRoaXMuc3RhdGVzID0gU3RhdGVzLmVycm9yXG4gICAgICB9KVxuICAgIH1cblxuICB9XG4gIGNsb3NlQ2xpY2tlZCgpe1xuICAgIGlmKHRoaXMub25DbG9zZSl7XG4gICAgICB0aGlzLm9uQ2xvc2UoKVxuICAgIH1cbiAgfVxuICAgIGNsb3NlQnV0dG9uU3R5bGUgPSAoKT0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDpcIjI0cHhcIixcbiAgICAgICAgd2lkdGg6XCIyNHB4XCIsXG4gICAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgICAgYm9yZGVyUmFkaXVzOlwiMFwiLFxuICAgICAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgYnV0dG9uSWNvblRpbnQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KClcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0U3VidGl0bGVTdHlsZSgpe1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dEZvbnQ6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5zdWJ0aXRsZVRleHRGb250LFxuICAgICAgICB0ZXh0Q29sb3I6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICAgICAgfVxuICAgIH1cbiAgICBnZXRUaXRsZVN0eWxlKCl7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0Rm9udDp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dEZvbnQsXG4gICAgICAgIHRleHRDb2xvcjp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dENvbG9yXG4gICAgICB9XG4gICAgfVxuICAgIHdyYXBwZXJTdHlsZSA9ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLndpZHRoLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmJhY2tncm91bmQsXG4gICAgICAgIGJvcmRlcjogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5ib3JkZXIsXG4gICAgICAgIGJvcmRlclJhZGl1czogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5ib3JkZXJSYWRpdXNcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0Q2FwdGlvblN0eWxlID0gKCk9PntcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHRGb250OiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmNhcHRpb25UZXh0Rm9udCxcbiAgICAgICAgdGV4dENvbG9yOnRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuY2FwdGlvblRleHRDb2xvclxuICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX3RpdGxlXCI+XG4gICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cInRpdGxlXCIgW2xhYmVsU3R5bGVdPVwiZ2V0VGl0bGVTdHlsZSgpXCIgID48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJjYy1jbG9zZS1idXR0b25cIj5cbiAgICAgIDxjb21ldGNoYXQtYnV0dG9uIFtpY29uVVJMXT1cImNsb3NlSWNvblVSTFwiIFtidXR0b25TdHlsZV09XCJjbG9zZUJ1dHRvblN0eWxlKClcIiAoY2MtYnV0dG9uLWNsaWNrZWQpPVwiY2xvc2VDbGlja2VkKClcIj5cbiAgICAgIDwvY29tZXRjaGF0LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19idWJibGVcIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fY2FwdGlvblwiIFtsYWJlbFN0eWxlXT1cImdldENhcHRpb25TdHlsZSgpXCIgW3RleHRdPVwibWVzc2FnZVRleHRcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19idWJibGUtdmlld1wiPlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1YmJsZVZpZXc7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IG1lc3NhZ2UgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19saXN0LWl0ZW1cIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fY2FwdGlvblwiIFtsYWJlbFN0eWxlXT1cImdldENhcHRpb25TdHlsZSgpXCIgW3RleHRdPVwicmVjZWlwdEluZm9UZXh0XCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX2J1YmJsZS12aWV3XCIgKm5nSWY9XCJpc1VzZXJUeXBlOyBlbHNlIGxpc3RWaWV3XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdEl0ZW1WaWV3OyBlbHNlIHVzZXJMaXN0aXRlbVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEl0ZW1WaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiBtZXNzYWdlIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlckxpc3RpdGVtPlxuICA8ZGl2ICpuZ0lmPVwiIWdldFVzZXJSZWNlaXB0KCk7IGVsc2UgdXNlclJlY2VpcHRWaWV3XCIgY2xhc3M9XCJjYy1lbXB0eS1zdGF0ZS12aWV3XCI+XG4gPGNvbWV0Y2hhdC1sYWJlbCAqbmdJZj1cIiFlbXB0eVN0YXRlVmlldyBlbHNlIGN1c3RvbUVtcHR5Vmlld1wiIFt0ZXh0XT1cImVtcHR5U3RhdGVUZXh0XCIgW2xhYmVsU3R5bGVdPVwiZW1wdHlMYWJlbFN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gPG5nLXRlbXBsYXRlICNjdXN0b21FbXB0eVZpZXc+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVN0YXRlVmlld1wiPlxuICA8L25nLWNvbnRhaW5lcj5cbiA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN1c2VyUmVjZWlwdFZpZXc+XG4gICAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgICA8Y29tZXRjaGF0LWxpc3QtaXRlbSBbaGlkZVNlcGFyYXRvcl09XCJ0cnVlXCJcbiAgICBbaWRdPVwibWVzc2FnZS5nZXRJZCgpXCJcbiAgICAgW3RpdGxlXT1cIm1lc3NhZ2UuZ2V0UmVjZWl2ZXIoKS5nZXROYW1lKClcIlxuICAgIFtsaXN0SXRlbVN0eWxlXT1cImxpc3RJdGVtU3R5bGVcIiBbYXZhdGFyVVJMXT1cImdldEF2YXRhclVybCgpXCIgW2F2YXRhck5hbWVdPVwibWVzc2FnZS5nZXRSZWNlaXZlcigpLmdldE5hbWUoKVwiPlxuICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgKm5nSWY9XCJzdWJ0aXRsZVZpZXc7ZWxzZSB1c2VyU3VidGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YnRpdGxlVmlld1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3VzZXJTdWJ0aXRsZT5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19zdWJ0aXRsZS12aWV3IFwiIHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fc3VidGl0bGVcIj5cbiAgIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX2RlbGl2ZXJlZC1yZWNlaXB0XCIgICpuZ0lmPVwibWVzc2FnZS5nZXREZWxpdmVyZWRBdCgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiAgIDxjb21ldGNoYXQtcmVjZWlwdCAgW3JlY2VpcHRdPVwiZGVsaXZlcmVkUmVjZWlwdFwiIFtyZWNlaXB0U3R5bGVdPVwicmVjZWlwdFN0eWxlXCIgW2RlbGl2ZXJlZEljb25dPVwiZGVsaXZlcmVkSWNvblwiIFtyZWFkSWNvbl09XCJyZWFkSWNvblwiPjwvY29tZXRjaGF0LXJlY2VpcHQ+XG4gICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidEZWxpdmVyZWQnXCIgW2xhYmVsU3R5bGVdPVwiZ2V0U3VidGl0bGVTdHlsZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gIDwvZGl2PlxuICAgICA8Y29tZXRjaGF0LWRhdGUgIFt0aW1lc3RhbXBdPVwibWVzc2FnZS5nZXREZWxpdmVyZWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIj48L2NvbWV0Y2hhdC1kYXRlPlxuICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fcmVhZC1yZWNlaXB0XCIgKm5nSWY9XCJtZXNzYWdlLmdldFJlYWRBdCgpXCI+XG4gICAgIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiAgICAgICA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cInJlYWRSZWNlaXB0XCIgW3JlY2VpcHRTdHlsZV09XCJyZWNlaXB0U3R5bGVcIiBbZGVsaXZlcmVkSWNvbl09XCJkZWxpdmVyZWRJY29uXCIgW3JlYWRJY29uXT1cInJlYWRJY29uXCI+PC9jb21ldGNoYXQtcmVjZWlwdD5cbiAgICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidSZWFkJ1wiIFtsYWJlbFN0eWxlXT1cImdldFN1YnRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8Y29tZXRjaGF0LWRhdGUgIFt0aW1lc3RhbXBdPVwibWVzc2FnZS5nZXRSZWFkQXQoKVwiIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG4gICAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIGxpc3QgaXRlbSB2aWV3IC0tPlxuPG5nLXRlbXBsYXRlICNsaXN0Vmlldz5cbjxjb21ldGNoYXQtbGlzdFxuW2xpc3RdPVwicmVjZWlwdHNcIlxuW2xpc3RJdGVtVmlld109XCJsaXN0SXRlbVZpZXcgPyBsaXN0SXRlbVZpZXcgOiBsaXN0SXRlbVwiXG5baGlkZVNlYXJjaF09XCJ0cnVlXCJcbltzdGF0ZV09XCJzdGF0ZXNcIlxuW2VtcHR5U3RhdGVUZXh0XT1cImVtcHR5U3RhdGVUZXh0XCJcbltlcnJvclN0YXRlVGV4dF09XCJlcnJvclN0YXRlVGV4dFwiXG5bbG9hZGluZ0ljb25VUkxdPVwibG9hZGluZ0ljb25VUkxcIlxuW2xvYWRpbmdTdGF0ZVZpZXddPVwibG9hZGluZ1N0YXRlVmlld1wiXG5bZXJyb3JTdGF0ZVZpZXddPVwiZXJyb3JTdGF0ZVZpZXdcIlxuW2VtcHR5U3RhdGVWaWV3XT1cImVtcHR5U3RhdGVWaWV3XCJcblt0aXRsZV09XCInJ1wiXG4+PC9jb21ldGNoYXQtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RJdGVtIGxldC1tZXNzYWdlUmVjZWlwdD5cbiAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgPGNvbWV0Y2hhdC1saXN0LWl0ZW0gW2hpZGVTZXBhcmF0b3JdPVwidHJ1ZVwiXG4gICBbdGl0bGVdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCkuZ2V0TmFtZSgpXCJcbiAgW2xpc3RJdGVtU3R5bGVdPVwibGlzdEl0ZW1TdHlsZVwiIFthdmF0YXJVUkxdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCk/LmdldEF2YXRhcigpXCIgW2F2YXRhck5hbWVdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCkuZ2V0TmFtZSgpXCI+XG4gICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgKm5nSWY9XCJzdWJ0aXRsZVZpZXc7ZWxzZSB1c2VyU3VidGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN1c2VyU3VidGl0bGU+XG4gIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3N1YnRpdGxlLXZpZXcgXCIgc2xvdD1cInN1YnRpdGxlVmlld1wiPlxuPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fc3VidGl0bGVcIj5cbiA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19kZWxpdmVyZWQtcmVjZWlwdFwiICAqbmdJZj1cIm1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KClcIj5cbjxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cImRlbGl2ZXJlZFJlY2VpcHRcIiBbcmVjZWlwdFN0eWxlXT1cInJlY2VpcHRTdHlsZVwiIFtkZWxpdmVyZWRJY29uXT1cImRlbGl2ZXJlZEljb25cIiBbcmVhZEljb25dPVwicmVhZEljb25cIj48L2NvbWV0Y2hhdC1yZWNlaXB0PlxuIDxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwiJ0RlbGl2ZXJlZCdcIiAgW2xhYmVsU3R5bGVdPVwiZ2V0U3VidGl0bGVTdHlsZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG48L2Rpdj5cbiAgIDxjb21ldGNoYXQtZGF0ZSAgW3RpbWVzdGFtcF09XCJtZXNzYWdlUmVjZWlwdC5nZXREZWxpdmVyZWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbcGF0dGVybl09XCJkZWxpdmVyZWRSZWNlaXB0XCIgW2N1c3RvbURhdGVTdHJpbmddPVwiZ2V0RGF0ZVBhdHRlcm4obWVzc2FnZVJlY2VpcHQuZ2V0RGVsaXZlcmVkQXQoKSlcIj48L2NvbWV0Y2hhdC1kYXRlPlxuIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWFkLXJlY2VpcHRcIiAqbmdJZj1cIm1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpXCI+XG4gICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWNlaXB0XCI+XG4gICAgIDxjb21ldGNoYXQtcmVjZWlwdCAgW3JlY2VpcHRdPVwicmVhZFJlY2VpcHRcIiBbcmVjZWlwdFN0eWxlXT1cInJlY2VpcHRTdHlsZVwiIFtkZWxpdmVyZWRJY29uXT1cImRlbGl2ZXJlZEljb25cIiBbcmVhZEljb25dPVwicmVhZEljb25cIj48L2NvbWV0Y2hhdC1yZWNlaXB0PlxuICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidSZWFkJ1wiICBbbGFiZWxTdHlsZV09XCJnZXRTdWJ0aXRsZVN0eWxlKClcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8Y29tZXRjaGF0LWRhdGUgW3BhdHRlcm5dPVwicmVhZFJlY2VpcHRcIiBbdGltZXN0YW1wXT1cIm1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbY3VzdG9tRGF0ZVN0cmluZ109XCJnZXREYXRlUGF0dGVybihtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKSlcIj48L2NvbWV0Y2hhdC1kYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9jb21ldGNoYXQtbGlzdC1pdGVtPlxuICA8Y29tZXRjaGF0LWRpdmlkZXIgW2RpdmlkZXJTdHlsZV09XCJkaXZpZGVyU3R5bGVcIj48L2NvbWV0Y2hhdC1kaXZpZGVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsc0JBQXNCLEVBQTRCLHVCQUF1QixFQUFnQixRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3SyxPQUFPLEVBQXlCLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRixPQUFPLEVBQWEsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBSTFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLG9DQUFvQztJQXFEL0MsWUFBb0IsR0FBcUIsRUFBUyxZQUFrQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFB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QUM7O2tJQXpOUSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyxnc0JDekJqRCx1dk1Bc0hjOzRGRDdGRCxvQ0FBb0M7a0JBTmhELFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlRXZlbnRzLCBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBEYXRlUGF0dGVybnMsIFJlY2VpcHRzLCBTdGF0ZXMsIGZvbnRIZWxwZXIsIGxvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgRGF0ZVN0eWxlLCBMYWJlbFN0eWxlLCBMaXN0SXRlbVN0eWxlLCBSZWNlaXB0U3R5bGUgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzJztcbmltcG9ydCB7IExpc3RTdHlsZSwgTWVzc2FnZUluZm9ybWF0aW9uU3R5bGUsIE1lc3NhZ2VSZWNlaXB0VXRpbHMgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZCc7XG5cbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gJ0Bjb21ldGNoYXQvY2hhdC1zZGstamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb24nO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG4vKipcbipcbiogQ29tZXRDaGF0TWVzc2FnZUluZm9ybWF0aW9uQ29tcG9uZW50IGlzIGEgdXNlZCB0byByZW5kZXIgbGlzdGl0ZW0gY29tcG9uZW50LlxuKlxuKiBAdmVyc2lvbiAxLjAuMFxuKiBAYXV0aG9yIENvbWV0Q2hhdFRlYW1cbiogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4qXG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21ldGNoYXQtbWVzc2FnZS1pbmZvcm1hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY2xvc2VJY29uVVJMOnN0cmluZyA9IFwiYXNzZXRzL2Nsb3NlMnguc3ZnXCI7XG4gIEBJbnB1dCgpIG1lc3NhZ2UhOkNvbWV0Q2hhdC5CYXNlTWVzc2FnZTtcbiAgQElucHV0KCkgdGl0bGU6c3RyaW5nID0gbG9jYWxpemUoXCJNRVNTQUdFX0lORk9STUFUSU9OXCIpO1xuICBASW5wdXQoKSB0ZW1wbGF0ZSE6Q29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlO1xuICBASW5wdXQoKSBidWJibGVWaWV3ITpUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBzdWJ0aXRsZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBsaXN0SXRlbVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSByZWNlaXB0RGF0ZVBhdHRlcm4hOih0aW1lc3RhbXA6bnVtYmVyKT0+c3RyaW5nO1xuICBASW5wdXQoKSBvbkVycm9yOigoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PnZvaWQpIHwgbnVsbCA9IChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICB9XG4gIEBJbnB1dCgpIG1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlOk1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlID0ge1xuICAgIGhlaWdodDogXCI1MDBweFwiLFxuICAgIHdpZHRoOiBcIjUwMHB4XCJcbiAgfTtcbiAgQElucHV0KCkgcmVhZEljb246c3RyaW5nID0gXCJhc3NldHMvbWVzc2FnZS1yZWFkLnN2Z1wiO1xuICBASW5wdXQoKSBkZWxpdmVyZWRJY29uOnN0cmluZyA9IFwiYXNzZXRzL21lc3NhZ2UtZGVsaXZlcmVkLnN2Z1wiO1xuICBASW5wdXQoKSBvbkNsb3NlITooKT0+dm9pZDtcbiAgQElucHV0KCkgbGlzdEl0ZW1TdHlsZTpMaXN0SXRlbVN0eWxlID0ge307XG4gIEBJbnB1dCgpIGVtcHR5U3RhdGVUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIk5PX1JFQ0lQSUVOVFNcIilcbiAgQElucHV0KCkgZXJyb3JTdGF0ZVRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiU09NRVRISU5HX1dST05HXCIpO1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGxvYWRpbmdJY29uVVJMOnN0cmluZyA9IFwiYXNzZXRzL1NwaW5uZXIuc3ZnXCI7XG4gIEBJbnB1dCgpIGxvYWRpbmdTdGF0ZVZpZXchOlRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGVycm9yU3RhdGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgb25NZXNzYWdlc0RlbGl2ZXJlZCE6IFN1YnNjcmlwdGlvbjtcbiAgb25NZXNzYWdlc1JlYWQhOiBTdWJzY3JpcHRpb247XG4gIHJlY2VpcHRzOkNvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdFtdID0gW107XG4gIHJlY2VpcHRTdHlsZSA9IG5ldyBSZWNlaXB0U3R5bGUoe1xuICAgIHdhaXRJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICBzZW50SWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgZGVsaXZlcmVkSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgcmVhZEljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICBlcnJvckljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEVycm9yKCksXG4gICAgaGVpZ2h0OlwiMjBweFwiLFxuICAgIHdpZHRoOlwiMjBweFwiXG4gIH0pXG4gIGlzVXNlclR5cGU6Ym9vbGVhbiA9IGZhbHNlO1xuICBkZWxpdmVyZWRSZWNlaXB0OlJlY2VpcHRzID0gUmVjZWlwdHMuZGVsaXZlcmVkO1xuICByZWFkUmVjZWlwdDpSZWNlaXB0cyA9IFJlY2VpcHRzLnJlYWQ7XG4gIGxpc3RTdHlsZTpMaXN0U3R5bGUgPSB7fTtcbiAgbWVzc2FnZVRleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJNRVNTQUdFXCIpO1xuICByZWNlaXB0SW5mb1RleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJSRUNFSVBUX0lORk9STUFUSU9OXCIpXG4gIGVtcHR5TGFiZWxTdHlsZTpMYWJlbFN0eWxlID0ge1xuICAgIHRleHRGb250Oic0MDAgMTFweCBJbnRlcicsXG4gICAgdGV4dENvbG9yOlwiYmxhY2tcIlxuICB9XG4gIGRhdGVTdHlsZTpEYXRlU3R5bGUgPSB7XG5cbiAgfVxuICBkaXZpZGVyU3R5bGU6YW55ID0ge31cbiAgc3RhdGVzOlN0YXRlcyA9IFN0YXRlcy5sb2FkaW5nXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdGhlbWVTZXJ2aWNlOkNvbWV0Q2hhdFRoZW1lU2VydmljZSkge31cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gIH1cbiAgZ2V0RGF0ZVBhdHRlcm4odGltZXN0YW1wOm51bWJlcil7XG4gICAgaWYodGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4pe1xuICAgICByZXR1cm4gdGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4odGltZXN0YW1wKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG50aGlzLnNldFRoZW1lKClcbnRoaXMuZ2V0TWVzc2FnZVJlY2VpcHRzKClcbnRoaXMuYWRkTWVzc2FnZUV2ZW50TGlzdGVuZXJzKClcblxuICB9XG4gIHNldFRoZW1lKCl7XG4gICAgdGhpcy5zZXRNZXNzYWdlSW5mb1N0eWxlKClcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKVxuICAgIHRoaXMubGlzdFN0eWxlID17XG4gICAgICB0aXRsZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS50aXRsZVRleHRGb250LFxuICAgICAgdGl0bGVUZXh0Q29sb3IgOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgZW1wdHlTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dEZvbnQsXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dENvbG9yLFxuICAgICAgZXJyb3JTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dEZvbnQsXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dENvbG9yLFxuICAgICAgbG9hZGluZ0ljb25UaW50IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5sb2FkaW5nSWNvblRpbnQsXG4gICAgfVxuICAgIHRoaXMuZGl2aWRlclN0eWxlID0ge1xuICAgICAgYmFja2dyb3VuZDp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmRpdmlkZXJUaW50LFxuICAgICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIH1cbiAgICB0aGlzLmRhdGVTdHlsZSA9IHtcbiAgICAgIHRleHRGb250OiAnNDAwIDExcHggSW50ZXInLFxuICAgICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICB9XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgc2V0TGlzdEl0ZW1TdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6TGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCJmaXQtY29udGVudFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgdGl0bGVGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUyKSxcbiAgICAgIHRpdGxlQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQyMDAoKSxcbiAgICAgIGhvdmVyQmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJcbiAgICB9KVxuICAgIHRoaXMubGlzdEl0ZW1TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5saXN0SXRlbVN0eWxlfVxuICB9XG4gIHNldE1lc3NhZ2VJbmZvU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOk1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlID0gbmV3IE1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlKHtcbiAgICAgIGJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXI6YDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NTAoKX1gLFxuICAgICAgdGl0bGVUZXh0Rm9udDpmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIHRpdGxlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBlbXB0eVN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBlcnJvclN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBsb2FkaW5nSWNvblRpbnQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgc3VidGl0bGVUZXh0Q29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKSxcbiAgICAgIGRpdmlkZXJUaW50OnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICAgIHdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICBjYXB0aW9uVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBjYXB0aW9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKVxuICAgIH0pXG4gICAgdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZX1cbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIHRoaXMub25NZXNzYWdlc0RlbGl2ZXJlZC51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5vbk1lc3NhZ2VzUmVhZC51bnN1YnNjcmliZSgpXG4gIH1cbiAgYWRkTWVzc2FnZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uTWVzc2FnZXNEZWxpdmVyZWQgPSBDb21ldENoYXRNZXNzYWdlRXZlbnRzLm9uTWVzc2FnZXNEZWxpdmVyZWQuc3Vic2NyaWJlKChtZXNzYWdlUmVjZWlwdDpDb21ldENoYXQuTWVzc2FnZVJlY2VpcHQpPT57XG4gICAgICAgIGlmKHRoaXMubWVzc2FnZT8uZ2V0SWQoKSA9PSBOdW1iZXIobWVzc2FnZVJlY2VpcHQuZ2V0TWVzc2FnZUlkKCkpKXtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnNldERlbGl2ZXJlZEF0KG1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KCkpXG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICB0aGlzLm9uTWVzc2FnZXNSZWFkID0gQ29tZXRDaGF0TWVzc2FnZUV2ZW50cy5vbk1lc3NhZ2VzUmVhZC5zdWJzY3JpYmUoKG1lc3NhZ2VSZWNlaXB0OkNvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdCk9PntcbiAgICAgICAgaWYodGhpcy5tZXNzYWdlPy5nZXRJZCgpID09IE51bWJlcihtZXNzYWdlUmVjZWlwdC5nZXRNZXNzYWdlSWQoKSkpe1xuICAgICAgICAgIHRoaXMubWVzc2FnZT8uc2V0UmVhZEF0KG1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpKVxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmICh0aGlzLm9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbkVycm9yKENvbWV0Q2hhdEV4Y2VwdGlvbihlcnJvcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXRBdmF0YXJVcmwoKXtcbiAgICByZXR1cm4gdGhpcy5pc1VzZXJUeXBlID8gKHRoaXMubWVzc2FnZS5nZXRSZWNlaXZlcigpIGFzIENvbWV0Q2hhdC5Vc2VyKS5nZXRBdmF0YXIoKSA6IFwiXCJcbiAgfVxuICBnZXRVc2VyUmVjZWlwdCgpe1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2UuZ2V0UmVhZEF0KCkgfHwgdGhpcy5tZXNzYWdlLmdldERlbGl2ZXJlZEF0KClcbiAgfVxuICBnZXRNZXNzYWdlUmVjZWlwdCgpIHtcbiAgICBsZXQgcmVjZWlwdCA9IE1lc3NhZ2VSZWNlaXB0VXRpbHMuZ2V0UmVjZWlwdFN0YXR1cyh0aGlzLm1lc3NhZ2UpXG4gICAgcmV0dXJuIHJlY2VpcHRcbiAgfVxuICBnZXRNZXNzYWdlUmVjZWlwdHMoKXtcbiAgICBpZih0aGlzLm1lc3NhZ2UuZ2V0UmVjZWl2ZXJUeXBlKCkgPT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS51c2VyKXtcbiAgICAgIHRoaXMuaXNVc2VyVHlwZSA9IHRydWU7XG4gICAgICB0aGlzLmVtcHR5U3RhdGVUZXh0ID0gbG9jYWxpemUoXCJOT19SRUNJUElFTlRcIilcbiAgICAgIHRoaXMuc3RhdGVzID0gU3RhdGVzLmxvYWRlZFxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLmVtcHR5U3RhdGVUZXh0ID0gbG9jYWxpemUoXCJOT19SRUNJUElFTlRTXCIpXG50aGlzLnN0YXRlcyA9IFN0YXRlcy5sb2FkaW5nXG4gICAgICB0aGlzLmlzVXNlclR5cGUgPSBmYWxzZTtcbiAgICAgIENvbWV0Q2hhdC5nZXRNZXNzYWdlUmVjZWlwdHModGhpcy5tZXNzYWdlLmdldElkKCkpLnRoZW4oKHJlY2VpcHRzKT0+e1xuICAgICAgICB0aGlzLnJlY2VpcHRzID0gcmVjZWlwdHMgYXMgQ29tZXRDaGF0Lk1lc3NhZ2VSZWNlaXB0W107XG4gICAgICAgIHRoaXMuc3RhdGVzID0gdGhpcy5yZWNlaXB0cy5sZW5ndGggPiAwID8gU3RhdGVzLmxvYWRlZCA6IFN0YXRlcy5lbXB0eVxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgICAgICB0aGlzLnN0YXRlcyA9IFN0YXRlcy5lcnJvclxuICAgICAgfSlcbiAgICB9XG5cbiAgfVxuICBjbG9zZUNsaWNrZWQoKXtcbiAgICBpZih0aGlzLm9uQ2xvc2Upe1xuICAgICAgdGhpcy5vbkNsb3NlKClcbiAgICB9XG4gIH1cbiAgICBjbG9zZUJ1dHRvblN0eWxlID0gKCk9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6XCIyNHB4XCIsXG4gICAgICAgIHdpZHRoOlwiMjRweFwiLFxuICAgICAgICBib3JkZXI6XCJub25lXCIsXG4gICAgICAgIGJvcmRlclJhZGl1czpcIjBcIixcbiAgICAgICAgYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIGJ1dHRvbkljb25UaW50OnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpXG4gICAgICB9XG4gICAgfVxuICAgIGdldFN1YnRpdGxlU3R5bGUoKXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHRGb250OnRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuc3VidGl0bGVUZXh0Rm9udCxcbiAgICAgICAgdGV4dENvbG9yOnRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuc3VidGl0bGVUZXh0Q29sb3JcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0VGl0bGVTdHlsZSgpe1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dEZvbnQ6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS50aXRsZVRleHRGb250LFxuICAgICAgICB0ZXh0Q29sb3I6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS50aXRsZVRleHRDb2xvclxuICAgICAgfVxuICAgIH1cbiAgICB3cmFwcGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IHRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuaGVpZ2h0LFxuICAgICAgICB3aWR0aDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS53aWR0aCxcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5iYWNrZ3JvdW5kLFxuICAgICAgICBib3JkZXI6IHRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuYm9yZGVyLFxuICAgICAgICBib3JkZXJSYWRpdXM6IHRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuYm9yZGVyUmFkaXVzXG4gICAgICB9XG4gICAgfVxuICAgIGdldENhcHRpb25TdHlsZSA9ICgpPT57XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0Rm9udDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5jYXB0aW9uVGV4dEZvbnQsXG4gICAgICAgIHRleHRDb2xvcjp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmNhcHRpb25UZXh0Q29sb3JcbiAgICAgIH1cbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX193cmFwcGVyXCIgW25nU3R5bGVdPVwid3JhcHBlclN0eWxlKClcIj5cbiAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX190aXRsZVwiPlxuICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJ0aXRsZVwiIFtsYWJlbFN0eWxlXT1cImdldFRpdGxlU3R5bGUoKVwiICA+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwiY2MtY2xvc2UtYnV0dG9uXCI+XG4gICAgICA8Y29tZXRjaGF0LWJ1dHRvbiBbaWNvblVSTF09XCJjbG9zZUljb25VUkxcIiBbYnV0dG9uU3R5bGVdPVwiY2xvc2VCdXR0b25TdHlsZSgpXCIgKGNjLWJ1dHRvbi1jbGlja2VkKT1cImNsb3NlQ2xpY2tlZCgpXCI+XG4gICAgICA8L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fYnViYmxlXCI+XG4gICAgPGNvbWV0Y2hhdC1sYWJlbCBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX2NhcHRpb25cIiBbbGFiZWxTdHlsZV09XCJnZXRDYXB0aW9uU3R5bGUoKVwiIFt0ZXh0XT1cIm1lc3NhZ2VUZXh0XCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fYnViYmxlLXZpZXdcIj5cbiAgICA8Y29tZXRjaGF0LWRpdmlkZXIgW2RpdmlkZXJTdHlsZV09XCJkaXZpZGVyU3R5bGVcIj48L2NvbWV0Y2hhdC1kaXZpZGVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidWJibGVWaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiBtZXNzYWdlIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8Y29tZXRjaGF0LWRpdmlkZXIgW2RpdmlkZXJTdHlsZV09XCJkaXZpZGVyU3R5bGVcIj48L2NvbWV0Y2hhdC1kaXZpZGVyPlxuICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fbGlzdC1pdGVtXCI+XG4gICAgPGNvbWV0Y2hhdC1sYWJlbCBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX2NhcHRpb25cIiBbbGFiZWxTdHlsZV09XCJnZXRDYXB0aW9uU3R5bGUoKVwiIFt0ZXh0XT1cInJlY2VpcHRJbmZvVGV4dFwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19idWJibGUtdmlld1wiICpuZ0lmPVwiaXNVc2VyVHlwZTsgZWxzZSBsaXN0Vmlld1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3RJdGVtVmlldzsgZWxzZSB1c2VyTGlzdGl0ZW1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtVmlldzsgY29udGV4dDp7ICRpbXBsaWNpdDogbWVzc2FnZSB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3VzZXJMaXN0aXRlbT5cbiAgPGRpdiAqbmdJZj1cIiFnZXRVc2VyUmVjZWlwdCgpOyBlbHNlIHVzZXJSZWNlaXB0Vmlld1wiIGNsYXNzPVwiY2MtZW1wdHktc3RhdGUtdmlld1wiPlxuIDxjb21ldGNoYXQtbGFiZWwgKm5nSWY9XCIhZW1wdHlTdGF0ZVZpZXcgZWxzZSBjdXN0b21FbXB0eVZpZXdcIiBbdGV4dF09XCJlbXB0eVN0YXRlVGV4dFwiIFtsYWJlbFN0eWxlXT1cImVtcHR5TGFiZWxTdHlsZVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRW1wdHlWaWV3PlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlTdGF0ZVZpZXdcIj5cbiAgPC9uZy1jb250YWluZXI+XG4gPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdXNlclJlY2VpcHRWaWV3PlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gICAgPGNvbWV0Y2hhdC1saXN0LWl0ZW0gW2hpZGVTZXBhcmF0b3JdPVwidHJ1ZVwiXG4gICAgW2lkXT1cIm1lc3NhZ2UuZ2V0SWQoKVwiXG4gICAgIFt0aXRsZV09XCJtZXNzYWdlLmdldFJlY2VpdmVyKCkuZ2V0TmFtZSgpXCJcbiAgICBbbGlzdEl0ZW1TdHlsZV09XCJsaXN0SXRlbVN0eWxlXCIgW2F2YXRhclVSTF09XCJnZXRBdmF0YXJVcmwoKVwiIFthdmF0YXJOYW1lXT1cIm1lc3NhZ2UuZ2V0UmVjZWl2ZXIoKS5nZXROYW1lKClcIj5cbiAgICAgIDxkaXYgc2xvdD1cInN1YnRpdGxlVmlld1wiICpuZ0lmPVwic3VidGl0bGVWaWV3O2Vsc2UgdXNlclN1YnRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICN1c2VyU3VidGl0bGU+XG4gICAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fc3VidGl0bGUtdmlldyBcIiBzbG90PVwic3VidGl0bGVWaWV3XCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3N1YnRpdGxlXCI+XG4gICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19kZWxpdmVyZWQtcmVjZWlwdFwiICAqbmdJZj1cIm1lc3NhZ2UuZ2V0RGVsaXZlcmVkQXQoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWNlaXB0XCI+XG4gICA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cImRlbGl2ZXJlZFJlY2VpcHRcIiBbcmVjZWlwdFN0eWxlXT1cInJlY2VpcHRTdHlsZVwiIFtkZWxpdmVyZWRJY29uXT1cImRlbGl2ZXJlZEljb25cIiBbcmVhZEljb25dPVwicmVhZEljb25cIj48L2NvbWV0Y2hhdC1yZWNlaXB0PlxuICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCInRGVsaXZlcmVkJ1wiIFtsYWJlbFN0eWxlXT1cImdldFN1YnRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICA8L2Rpdj5cbiAgICAgPGNvbWV0Y2hhdC1kYXRlICBbdGltZXN0YW1wXT1cIm1lc3NhZ2UuZ2V0RGVsaXZlcmVkQXQoKVwiIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlYWQtcmVjZWlwdFwiICpuZ0lmPVwibWVzc2FnZS5nZXRSZWFkQXQoKVwiPlxuICAgICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWNlaXB0XCI+XG4gICAgICAgPGNvbWV0Y2hhdC1yZWNlaXB0ICBbcmVjZWlwdF09XCJyZWFkUmVjZWlwdFwiIFtyZWNlaXB0U3R5bGVdPVwicmVjZWlwdFN0eWxlXCIgW2RlbGl2ZXJlZEljb25dPVwiZGVsaXZlcmVkSWNvblwiIFtyZWFkSWNvbl09XCJyZWFkSWNvblwiPjwvY29tZXRjaGF0LXJlY2VpcHQ+XG4gICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCInUmVhZCdcIiBbbGFiZWxTdHlsZV09XCJnZXRTdWJ0aXRsZVN0eWxlKClcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNvbWV0Y2hhdC1kYXRlICBbdGltZXN0YW1wXT1cIm1lc3NhZ2UuZ2V0UmVhZEF0KClcIiBbZGF0ZVN0eWxlXT1cImRhdGVTdHlsZVwiPjwvY29tZXRjaGF0LWRhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9jb21ldGNoYXQtbGlzdC1pdGVtPlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBsaXN0IGl0ZW0gdmlldyAtLT5cbjxuZy10ZW1wbGF0ZSAjbGlzdFZpZXc+XG48Y29tZXRjaGF0LWxpc3RcbltsaXN0XT1cInJlY2VpcHRzXCJcbltsaXN0SXRlbVZpZXddPVwibGlzdEl0ZW1WaWV3ID8gbGlzdEl0ZW1WaWV3IDogbGlzdEl0ZW1cIlxuW2hpZGVTZWFyY2hdPVwidHJ1ZVwiXG5bc3RhdGVdPVwic3RhdGVzXCJcbltlbXB0eVN0YXRlVGV4dF09XCJlbXB0eVN0YXRlVGV4dFwiXG5bZXJyb3JTdGF0ZVRleHRdPVwiZXJyb3JTdGF0ZVRleHRcIlxuW2xvYWRpbmdJY29uVVJMXT1cImxvYWRpbmdJY29uVVJMXCJcbltsb2FkaW5nU3RhdGVWaWV3XT1cImxvYWRpbmdTdGF0ZVZpZXdcIlxuW2Vycm9yU3RhdGVWaWV3XT1cImVycm9yU3RhdGVWaWV3XCJcbltlbXB0eVN0YXRlVmlld109XCJlbXB0eVN0YXRlVmlld1wiXG5bdGl0bGVdPVwiJydcIlxuPjwvY29tZXRjaGF0LWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNsaXN0SXRlbSBsZXQtbWVzc2FnZVJlY2VpcHQ+XG4gIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gIDxjb21ldGNoYXQtbGlzdC1pdGVtIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIlxuICAgW3RpdGxlXT1cIm1lc3NhZ2VSZWNlaXB0LmdldFNlbmRlcigpLmdldE5hbWUoKVwiXG4gIFtsaXN0SXRlbVN0eWxlXT1cImxpc3RJdGVtU3R5bGVcIiBbYXZhdGFyVVJMXT1cIm1lc3NhZ2VSZWNlaXB0LmdldFNlbmRlcigpPy5nZXRBdmF0YXIoKVwiIFthdmF0YXJOYW1lXT1cIm1lc3NhZ2VSZWNlaXB0LmdldFNlbmRlcigpLmdldE5hbWUoKVwiPlxuICAgIDxkaXYgc2xvdD1cInN1YnRpdGxlVmlld1wiICpuZ0lmPVwic3VidGl0bGVWaWV3O2Vsc2UgdXNlclN1YnRpdGxlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VidGl0bGVWaWV3XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdXNlclN1YnRpdGxlPlxuICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19zdWJ0aXRsZS12aWV3IFwiIHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIj5cbjxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3N1YnRpdGxlXCI+XG4gPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fZGVsaXZlcmVkLXJlY2VpcHRcIiAgKm5nSWY9XCJtZXNzYWdlUmVjZWlwdC5nZXREZWxpdmVyZWRBdCgpXCI+XG48ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWNlaXB0XCI+XG4gPGNvbWV0Y2hhdC1yZWNlaXB0ICBbcmVjZWlwdF09XCJkZWxpdmVyZWRSZWNlaXB0XCIgW3JlY2VpcHRTdHlsZV09XCJyZWNlaXB0U3R5bGVcIiBbZGVsaXZlcmVkSWNvbl09XCJkZWxpdmVyZWRJY29uXCIgW3JlYWRJY29uXT1cInJlYWRJY29uXCI+PC9jb21ldGNoYXQtcmVjZWlwdD5cbiA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidEZWxpdmVyZWQnXCIgIFtsYWJlbFN0eWxlXT1cImdldFN1YnRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuPC9kaXY+XG4gICA8Y29tZXRjaGF0LWRhdGUgIFt0aW1lc3RhbXBdPVwibWVzc2FnZVJlY2VpcHQuZ2V0RGVsaXZlcmVkQXQoKVwiIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCIgW3BhdHRlcm5dPVwiZGVsaXZlcmVkUmVjZWlwdFwiIFtjdXN0b21EYXRlU3RyaW5nXT1cImdldERhdGVQYXR0ZXJuKG1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KCkpXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fcmVhZC1yZWNlaXB0XCIgKm5nSWY9XCJtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKVwiPlxuICAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fcmVjZWlwdFwiPlxuICAgICA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cInJlYWRSZWNlaXB0XCIgW3JlY2VpcHRTdHlsZV09XCJyZWNlaXB0U3R5bGVcIiBbZGVsaXZlcmVkSWNvbl09XCJkZWxpdmVyZWRJY29uXCIgW3JlYWRJY29uXT1cInJlYWRJY29uXCI+PC9jb21ldGNoYXQtcmVjZWlwdD5cbiAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCInUmVhZCdcIiAgW2xhYmVsU3R5bGVdPVwiZ2V0U3VidGl0bGVTdHlsZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGNvbWV0Y2hhdC1kYXRlIFtwYXR0ZXJuXT1cInJlYWRSZWNlaXB0XCIgW3RpbWVzdGFtcF09XCJtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKVwiIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCIgW2N1c3RvbURhdGVTdHJpbmddPVwiZ2V0RGF0ZVBhdHRlcm4obWVzc2FnZVJlY2VpcHQuZ2V0UmVhZEF0KCkpXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwvY29tZXRjaGF0LWxpc3QtaXRlbT5cbiAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbjwvbmctdGVtcGxhdGU+Il19