stream-chat-angular 5.3.1 → 5.4.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 (91) hide show
  1. package/assets/i18n/en.d.ts +4 -0
  2. package/assets/version.d.ts +1 -1
  3. package/esm2020/assets/i18n/en.mjs +5 -1
  4. package/esm2020/assets/version.mjs +2 -2
  5. package/esm2020/lib/attachment-list/attachment-list.component.mjs +4 -4
  6. package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +5 -5
  7. package/esm2020/lib/attachment.service.mjs +44 -10
  8. package/esm2020/lib/channel-list/channel-list.component.mjs +5 -5
  9. package/esm2020/lib/channel-preview/channel-preview.component.mjs +1 -1
  10. package/esm2020/lib/file-utils.mjs +35 -0
  11. package/esm2020/lib/format-duration.mjs +16 -0
  12. package/esm2020/lib/icon/icon-placeholder/icon-placeholder.component.mjs +28 -0
  13. package/esm2020/lib/icon/icon.component.mjs +1 -1
  14. package/esm2020/lib/icon/icon.module.mjs +37 -0
  15. package/esm2020/lib/{loading-indicator → icon/loading-indicator}/loading-indicator.component.mjs +1 -1
  16. package/esm2020/lib/{loading-indicator-placeholder → icon/loading-indicator-placeholder}/loading-indicator-placeholder.component.mjs +2 -2
  17. package/esm2020/lib/is-safari.mjs +2 -0
  18. package/esm2020/lib/message/message.component.mjs +6 -6
  19. package/esm2020/lib/message-input/message-input-config.service.mjs +6 -1
  20. package/esm2020/lib/message-input/message-input.component.mjs +57 -14
  21. package/esm2020/lib/message-input/voice-recorder.service.mjs +27 -0
  22. package/esm2020/lib/message-list/message-list.component.mjs +9 -9
  23. package/esm2020/lib/modal/modal.component.mjs +1 -1
  24. package/esm2020/lib/paginated-list/paginated-list.component.mjs +1 -1
  25. package/esm2020/lib/stream-chat.module.mjs +21 -35
  26. package/esm2020/lib/thread/thread.component.mjs +1 -1
  27. package/esm2020/lib/types.mjs +1 -1
  28. package/esm2020/lib/voice-recorder/amplitude-recorder.service.mjs +119 -0
  29. package/esm2020/lib/voice-recorder/audio-recorder.service.mjs +79 -0
  30. package/esm2020/lib/voice-recorder/media-recorder.mjs +190 -0
  31. package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +61 -0
  32. package/esm2020/lib/voice-recorder/transcoder.service.mjs +121 -0
  33. package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +35 -0
  34. package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +80 -0
  35. package/esm2020/lib/voice-recorder/voice-recorder.module.mjs +34 -0
  36. package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +4 -75
  37. package/esm2020/lib/voice-recording/voice-recording.component.mjs +4 -15
  38. package/esm2020/lib/voice-recording/voice-recording.module.mjs +21 -0
  39. package/esm2020/lib/wave-form-sampler.mjs +72 -0
  40. package/esm2020/public-api.mjs +18 -5
  41. package/fesm2015/stream-chat-angular.mjs +1040 -146
  42. package/fesm2015/stream-chat-angular.mjs.map +1 -1
  43. package/fesm2020/stream-chat-angular.mjs +991 -141
  44. package/fesm2020/stream-chat-angular.mjs.map +1 -1
  45. package/lib/attachment.service.d.ts +7 -1
  46. package/lib/file-utils.d.ts +9 -0
  47. package/lib/format-duration.d.ts +1 -0
  48. package/lib/{icon-placeholder → icon/icon-placeholder}/icon-placeholder.component.d.ts +3 -3
  49. package/lib/icon/icon.component.d.ts +1 -1
  50. package/lib/icon/icon.module.d.ts +11 -0
  51. package/lib/{loading-indicator-placeholder → icon/loading-indicator-placeholder}/loading-indicator-placeholder.component.d.ts +1 -1
  52. package/lib/is-safari.d.ts +1 -0
  53. package/lib/message-input/message-input-config.service.d.ts +5 -0
  54. package/lib/message-input/message-input.component.d.ts +19 -5
  55. package/lib/message-input/voice-recorder.service.d.ts +19 -0
  56. package/lib/message-list/message-list.component.d.ts +0 -1
  57. package/lib/stream-chat.module.d.ts +20 -24
  58. package/lib/types.d.ts +11 -1
  59. package/lib/voice-recorder/amplitude-recorder.service.d.ts +71 -0
  60. package/lib/voice-recorder/audio-recorder.service.d.ts +46 -0
  61. package/lib/voice-recorder/media-recorder.d.ts +46 -0
  62. package/lib/voice-recorder/mp3-transcoder.d.ts +1 -0
  63. package/lib/voice-recorder/transcoder.service.d.ts +40 -0
  64. package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +21 -0
  65. package/lib/voice-recorder/voice-recorder.component.d.ts +30 -0
  66. package/lib/voice-recorder/voice-recorder.module.d.ts +12 -0
  67. package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +0 -7
  68. package/lib/voice-recording/voice-recording.component.d.ts +0 -1
  69. package/lib/voice-recording/voice-recording.module.d.ts +11 -0
  70. package/lib/wave-form-sampler.d.ts +1 -0
  71. package/package.json +8 -1
  72. package/public-api.d.ts +17 -4
  73. package/src/assets/assets/icons/stream-chat-icons.eot +0 -0
  74. package/src/assets/assets/icons/stream-chat-icons.svg +4 -0
  75. package/src/assets/assets/icons/stream-chat-icons.ttf +0 -0
  76. package/src/assets/assets/icons/stream-chat-icons.woff +0 -0
  77. package/src/assets/assets/icons/stream-chat-icons.woff2 +0 -0
  78. package/src/assets/i18n/en.ts +6 -0
  79. package/src/assets/styles/css/index.css +1 -1
  80. package/src/assets/styles/css/index.layout.css +1 -1
  81. package/src/assets/styles/scss/AudioRecorder/AudioRecorder-layout.scss +64 -14
  82. package/src/assets/styles/scss/AudioRecorder/AudioRecorder-theme.scss +11 -1
  83. package/src/assets/styles/scss/ChannelList/ChannelList-layout.scss +4 -0
  84. package/src/assets/styles/scss/Icon/Icon-layout.scss +6 -1
  85. package/src/assets/styles/scss/MessageInput/MessageInput-layout.scss +1 -0
  86. package/src/assets/styles/scss/MessageInput/MessageInput-theme.scss +1 -0
  87. package/src/assets/version.ts +1 -1
  88. package/esm2020/lib/icon-placeholder/icon-placeholder.component.mjs +0 -28
  89. package/esm2020/lib/is-image-file.mjs +0 -5
  90. package/lib/is-image-file.d.ts +0 -1
  91. /package/lib/{loading-indicator → icon/loading-indicator}/loading-indicator.component.d.ts +0 -0
@@ -7,8 +7,6 @@ import { MessageComponent } from './message/message.component';
7
7
  import { MessageInputComponent } from './message-input/message-input.component';
8
8
  import { MessageListComponent } from './message-list/message-list.component';
9
9
  import { CommonModule } from '@angular/common';
10
- import { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';
11
- import { IconComponent } from './icon/icon.component';
12
10
  import { MessageActionsBoxComponent } from './message-actions-box/message-actions-box.component';
13
11
  import { AttachmentListComponent } from './attachment-list/attachment-list.component';
14
12
  import { MessageReactionsComponent } from './message-reactions/message-reactions.component';
@@ -19,16 +17,15 @@ import { ModalComponent } from './modal/modal.component';
19
17
  import { TextareaDirective } from './message-input/textarea.directive';
20
18
  import { StreamAvatarModule } from './stream-avatar.module';
21
19
  import { ThreadComponent } from './thread/thread.component';
22
- import { IconPlaceholderComponent } from './icon-placeholder/icon-placeholder.component';
23
- import { LoadingIndicatorPlaceholderComponent } from './loading-indicator-placeholder/loading-indicator-placeholder.component';
24
20
  import { MessageBouncePromptComponent } from './message-bounce-prompt/message-bounce-prompt.component';
25
- import { VoiceRecordingComponent } from './voice-recording/voice-recording.component';
26
- import { VoiceRecordingWavebarComponent } from './voice-recording/voice-recording-wavebar/voice-recording-wavebar.component';
27
21
  import { NgxFloatUiModule } from 'ngx-float-ui';
28
22
  import { TranslateModule } from '@ngx-translate/core';
29
23
  import { MessageReactionsSelectorComponent } from './message-reactions-selector/message-reactions-selector.component';
30
24
  import { PaginatedListComponent } from './paginated-list/paginated-list.component';
31
25
  import { UserListComponent } from './user-list/user-list.component';
26
+ import { VoiceRecordingModule } from './voice-recording/voice-recording.module';
27
+ import { IconModule } from './icon/icon.module';
28
+ import { VoiceRecorderService } from './message-input/voice-recorder.service';
32
29
  import * as i0 from "@angular/core";
33
30
  export class StreamChatModule {
34
31
  }
@@ -40,8 +37,6 @@ StreamChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
40
37
  MessageComponent,
41
38
  MessageInputComponent,
42
39
  MessageListComponent,
43
- LoadingIndicatorComponent,
44
- IconComponent,
45
40
  MessageActionsBoxComponent,
46
41
  AttachmentListComponent,
47
42
  MessageReactionsComponent,
@@ -51,25 +46,21 @@ StreamChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
51
46
  ModalComponent,
52
47
  TextareaDirective,
53
48
  ThreadComponent,
54
- IconPlaceholderComponent,
55
- LoadingIndicatorPlaceholderComponent,
56
49
  MessageBouncePromptComponent,
57
- VoiceRecordingComponent,
58
- VoiceRecordingWavebarComponent,
59
50
  MessageReactionsSelectorComponent,
60
51
  UserListComponent,
61
52
  PaginatedListComponent], imports: [CommonModule,
62
53
  NgxFloatUiModule,
63
54
  StreamAvatarModule,
64
- TranslateModule], exports: [ChannelComponent,
55
+ TranslateModule,
56
+ VoiceRecordingModule,
57
+ IconModule], exports: [ChannelComponent,
65
58
  ChannelHeaderComponent,
66
59
  ChannelListComponent,
67
60
  ChannelPreviewComponent,
68
61
  MessageComponent,
69
62
  MessageInputComponent,
70
63
  MessageListComponent,
71
- LoadingIndicatorComponent,
72
- IconComponent,
73
64
  MessageActionsBoxComponent,
74
65
  AttachmentListComponent,
75
66
  MessageReactionsComponent,
@@ -79,18 +70,20 @@ StreamChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
79
70
  ModalComponent,
80
71
  StreamAvatarModule,
81
72
  ThreadComponent,
82
- IconPlaceholderComponent,
83
- LoadingIndicatorPlaceholderComponent,
84
73
  MessageBouncePromptComponent,
85
- VoiceRecordingComponent,
86
- VoiceRecordingWavebarComponent,
74
+ VoiceRecordingModule,
87
75
  MessageReactionsSelectorComponent,
88
76
  UserListComponent,
89
- PaginatedListComponent] });
90
- StreamChatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamChatModule, imports: [CommonModule,
77
+ PaginatedListComponent,
78
+ IconModule] });
79
+ StreamChatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamChatModule, providers: [VoiceRecorderService], imports: [CommonModule,
91
80
  NgxFloatUiModule,
92
81
  StreamAvatarModule,
93
- TranslateModule, StreamAvatarModule] });
82
+ TranslateModule,
83
+ VoiceRecordingModule,
84
+ IconModule, StreamAvatarModule,
85
+ VoiceRecordingModule,
86
+ IconModule] });
94
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamChatModule, decorators: [{
95
88
  type: NgModule,
96
89
  args: [{
@@ -102,8 +95,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
102
95
  MessageComponent,
103
96
  MessageInputComponent,
104
97
  MessageListComponent,
105
- LoadingIndicatorComponent,
106
- IconComponent,
107
98
  MessageActionsBoxComponent,
108
99
  AttachmentListComponent,
109
100
  MessageReactionsComponent,
@@ -113,11 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
113
104
  ModalComponent,
114
105
  TextareaDirective,
115
106
  ThreadComponent,
116
- IconPlaceholderComponent,
117
- LoadingIndicatorPlaceholderComponent,
118
107
  MessageBouncePromptComponent,
119
- VoiceRecordingComponent,
120
- VoiceRecordingWavebarComponent,
121
108
  MessageReactionsSelectorComponent,
122
109
  UserListComponent,
123
110
  PaginatedListComponent,
@@ -127,6 +114,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
127
114
  NgxFloatUiModule,
128
115
  StreamAvatarModule,
129
116
  TranslateModule,
117
+ VoiceRecordingModule,
118
+ IconModule,
130
119
  ],
131
120
  exports: [
132
121
  ChannelComponent,
@@ -136,8 +125,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
136
125
  MessageComponent,
137
126
  MessageInputComponent,
138
127
  MessageListComponent,
139
- LoadingIndicatorComponent,
140
- IconComponent,
141
128
  MessageActionsBoxComponent,
142
129
  AttachmentListComponent,
143
130
  MessageReactionsComponent,
@@ -147,15 +134,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
147
134
  ModalComponent,
148
135
  StreamAvatarModule,
149
136
  ThreadComponent,
150
- IconPlaceholderComponent,
151
- LoadingIndicatorPlaceholderComponent,
152
137
  MessageBouncePromptComponent,
153
- VoiceRecordingComponent,
154
- VoiceRecordingWavebarComponent,
138
+ VoiceRecordingModule,
155
139
  MessageReactionsSelectorComponent,
156
140
  UserListComponent,
157
141
  PaginatedListComponent,
142
+ IconModule,
158
143
  ],
144
+ providers: [VoiceRecorderService],
159
145
  }]
160
146
  }] });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWNoYXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3N0cmVhbS1jaGF0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLDhCQUE4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QUNwQyw0QkFBNEI7d0JBQzVCLHVCQUF1Qjt3QkFDdkIsOEJBQThCO3dCQUM5QixpQ0FBaUM7d0JBQ2pDLGlCQUFpQjt3QkFDakIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6QixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIseUJBQXlCO3dCQUN6Qiw4QkFBOEI7d0JBQzlCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsb0NBQW9DO3dCQUNwQyw0QkFBNEI7d0JBQzVCLHVCQUF1Qjt3QkFDdkIsOEJBQThCO3dCQUM5QixpQ0FBaUM7d0JBQ2pDLGlCQUFpQjt3QkFDakIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFubmVsL2NoYW5uZWwuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5uZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFubmVsTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY2hhbm5lbC1saXN0L2NoYW5uZWwtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbm5lbFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwtcHJldmlldy9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGluZ0luZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1pbmRpY2F0b3IvbG9hZGluZy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtYWN0aW9ucy1ib3gvbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudExpc3RDb21wb25lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQtbGlzdC9hdHRhY2htZW50LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1saXN0L25vdGlmaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlld0xpc3RDb21wb25lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQtcHJldmlldy1saXN0L2F0dGFjaG1lbnQtcHJldmlldy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRhcmVhRGlyZWN0aXZlIH0gZnJvbSAnLi9tZXNzYWdlLWlucHV0L3RleHRhcmVhLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdHJlYW1BdmF0YXJNb2R1bGUgfSBmcm9tICcuL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcbmltcG9ydCB7IFRocmVhZENvbXBvbmVudCB9IGZyb20gJy4vdGhyZWFkL3RocmVhZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvblBsYWNlaG9sZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uLXBsYWNlaG9sZGVyL2ljb24tcGxhY2Vob2xkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdJbmRpY2F0b3JQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1pbmRpY2F0b3ItcGxhY2Vob2xkZXIvbG9hZGluZy1pbmRpY2F0b3ItcGxhY2Vob2xkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCb3VuY2VQcm9tcHRDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtYm91bmNlLXByb21wdC9tZXNzYWdlLWJvdW5jZS1wcm9tcHQuY29tcG9uZW50JztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnQgfSBmcm9tICcuL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RmxvYXRVaU1vZHVsZSB9IGZyb20gJ25neC1mbG9hdC11aSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IvbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRlZExpc3RDb21wb25lbnQgfSBmcm9tICcuL3BhZ2luYXRlZC1saXN0L3BhZ2luYXRlZC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4vdXNlci1saXN0L3VzZXItbGlzdC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDaGFubmVsQ29tcG9uZW50LFxuICAgIENoYW5uZWxIZWFkZXJDb21wb25lbnQsXG4gICAgQ2hhbm5lbExpc3RDb21wb25lbnQsXG4gICAgQ2hhbm5lbFByZXZpZXdDb21wb25lbnQsXG4gICAgTWVzc2FnZUNvbXBvbmVudCxcbiAgICBNZXNzYWdlSW5wdXRDb21wb25lbnQsXG4gICAgTWVzc2FnZUxpc3RDb21wb25lbnQsXG4gICAgTG9hZGluZ0luZGljYXRvckNvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIFRleHRhcmVhRGlyZWN0aXZlLFxuICAgIFRocmVhZENvbXBvbmVudCxcbiAgICBJY29uUGxhY2Vob2xkZXJDb21wb25lbnQsXG4gICAgTG9hZGluZ0luZGljYXRvclBsYWNlaG9sZGVyQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VCb3VuY2VQcm9tcHRDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvcmRpbmdXYXZlYmFyQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBVc2VyTGlzdENvbXBvbmVudCxcbiAgICBQYWdpbmF0ZWRMaXN0Q29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5neEZsb2F0VWlNb2R1bGUsXG4gICAgU3RyZWFtQXZhdGFyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENoYW5uZWxDb21wb25lbnQsXG4gICAgQ2hhbm5lbEhlYWRlckNvbXBvbmVudCxcbiAgICBDaGFubmVsTGlzdENvbXBvbmVudCxcbiAgICBDaGFubmVsUHJldmlld0NvbXBvbmVudCxcbiAgICBNZXNzYWdlQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VJbnB1dENvbXBvbmVudCxcbiAgICBNZXNzYWdlTGlzdENvbXBvbmVudCxcbiAgICBMb2FkaW5nSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQsXG4gICAgQXR0YWNobWVudExpc3RDb21wb25lbnQsXG4gICAgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25Db21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50UHJldmlld0xpc3RDb21wb25lbnQsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgU3RyZWFtQXZhdGFyTW9kdWxlLFxuICAgIFRocmVhZENvbXBvbmVudCxcbiAgICBJY29uUGxhY2Vob2xkZXJDb21wb25lbnQsXG4gICAgTG9hZGluZ0luZGljYXRvclBsYWNlaG9sZGVyQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VCb3VuY2VQcm9tcHRDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQsXG4gICAgVm9pY2VSZWNvcmRpbmdXYXZlYmFyQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBVc2VyTGlzdENvbXBvbmVudCxcbiAgICBQYWdpbmF0ZWRMaXN0Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJlYW1DaGF0TW9kdWxlIHt9XG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWNoYXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3N0cmVhbS1jaGF0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFp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LHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLDhCQUE4Qjt3QkFDOUIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixvQkFBb0I7d0JBQ3BCLGlDQUFpQzt3QkFDakMsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLFVBQVU7cUJBQ1g7b0JBQ0QsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5uZWxDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwvY2hhbm5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbm5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY2hhbm5lbC1oZWFkZXIvY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5uZWxMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFubmVsLWxpc3QvY2hhbm5lbC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFubmVsUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2hhbm5lbC1wcmV2aWV3L2NoYW5uZWwtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUxpc3RDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtbGlzdC9tZXNzYWdlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZXNzYWdlQWN0aW9uc0JveENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdHRhY2htZW50TGlzdENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudC1saXN0L2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uLWxpc3Qvbm90aWZpY2F0aW9uLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudC1wcmV2aWV3LWxpc3QvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFEaXJlY3RpdmUgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7IFN0cmVhbUF2YXRhck1vZHVsZSB9IGZyb20gJy4vc3RyZWFtLWF2YXRhci5tb2R1bGUnO1xuaW1wb3J0IHsgVGhyZWFkQ29tcG9uZW50IH0gZnJvbSAnLi90aHJlYWQvdGhyZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdlQm91bmNlUHJvbXB0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWJvdW5jZS1wcm9tcHQvbWVzc2FnZS1ib3VuY2UtcHJvbXB0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hGbG9hdFVpTW9kdWxlIH0gZnJvbSAnbmd4LWZsb2F0LXVpJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlYWN0aW9uc1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLXJlYWN0aW9ucy1zZWxlY3Rvci9tZXNzYWdlLXJlYWN0aW9ucy1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdGVkLWxpc3QvcGFnaW5hdGVkLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGluZ01vZHVsZSB9IGZyb20gJy4vdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC92b2ljZS1yZWNvcmRlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhbm5lbENvbXBvbmVudCxcbiAgICBDaGFubmVsSGVhZGVyQ29tcG9uZW50LFxuICAgIENoYW5uZWxMaXN0Q29tcG9uZW50LFxuICAgIENoYW5uZWxQcmV2aWV3Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VDb21wb25lbnQsXG4gICAgTWVzc2FnZUlucHV0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIFRleHRhcmVhRGlyZWN0aXZlLFxuICAgIFRocmVhZENvbXBvbmVudCxcbiAgICBNZXNzYWdlQm91bmNlUHJvbXB0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBVc2VyTGlzdENvbXBvbmVudCxcbiAgICBQYWdpbmF0ZWRMaXN0Q29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5neEZsb2F0VWlNb2R1bGUsXG4gICAgU3RyZWFtQXZhdGFyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBWb2ljZVJlY29yZGluZ01vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ2hhbm5lbENvbXBvbmVudCxcbiAgICBDaGFubmVsSGVhZGVyQ29tcG9uZW50LFxuICAgIENoYW5uZWxMaXN0Q29tcG9uZW50LFxuICAgIENoYW5uZWxQcmV2aWV3Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VDb21wb25lbnQsXG4gICAgTWVzc2FnZUlucHV0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIFN0cmVhbUF2YXRhck1vZHVsZSxcbiAgICBUaHJlYWRDb21wb25lbnQsXG4gICAgTWVzc2FnZUJvdW5jZVByb21wdENvbXBvbmVudCxcbiAgICBWb2ljZVJlY29yZGluZ01vZHVsZSxcbiAgICBNZXNzYWdlUmVhY3Rpb25zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVXNlckxpc3RDb21wb25lbnQsXG4gICAgUGFnaW5hdGVkTGlzdENvbXBvbmVudCxcbiAgICBJY29uTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtWb2ljZVJlY29yZGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0cmVhbUNoYXRNb2R1bGUge31cbiJdfQ==
@@ -6,7 +6,7 @@ import * as i2 from "../channel.service";
6
6
  import * as i3 from "../chat-client.service";
7
7
  import * as i4 from "@angular/common";
8
8
  import * as i5 from "@ngx-translate/core";
9
- import * as i6 from "../icon-placeholder/icon-placeholder.component";
9
+ import * as i6 from "../icon/icon-placeholder/icon-placeholder.component";
10
10
  /**
11
11
  * The `Thread` component represents a [message thread](https://getstream.io/chat/docs/javascript/threads/?language=javascript), it is a container component that displays a thread with a header, [`MessageList`](./MessageListComponent.mdx) and [`MessageInput`](./MessageInputComponent.mdx) components.
12
12
  */
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uR3JvdXBSZXNwb25zZSxcbiAgUmVhY3Rpb25SZXNwb25zZSxcbiAgVXNlcixcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBVbmtub3duVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBDdXN0b21UcmlnZ2VyID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29tcG9uZW50UHJvcHM6IFVua25vd25UeXBlO1xuICAgIGRhdGE6IFVua25vd25UeXBlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IEV4dGVuZGFibGVHZW5lcmljcyAmIHtcbiAgYXR0YWNobWVudFR5cGU6IERlZmF1bHRBdHRhY2htZW50VHlwZTtcbiAgY2hhbm5lbFR5cGU6IERlZmF1bHRDaGFubmVsVHlwZTtcbiAgY29tbWFuZFR5cGU6IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcbiAgZXZlbnRUeXBlOiBVbmtub3duVHlwZTtcbiAgbWVzc2FnZVR5cGU6IERlZmF1bHRNZXNzYWdlVHlwZTtcbiAgcmVhY3Rpb25UeXBlOiBVbmtub3duVHlwZTtcbiAgdXNlclR5cGU6IERlZmF1bHRVc2VyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRBdHRhY2htZW50VHlwZSA9IFVua25vd25UeXBlICYge1xuICBhc3NldF91cmw/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpbWFnZXM/OiBBcnJheTxBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+PjtcbiAgbWltZV90eXBlPzogc3RyaW5nO1xuICBpc0N1c3RvbUF0dGFjaG1lbnQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENoYW5uZWxUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBtZW1iZXJfY291bnQ/OiBudW1iZXI7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENvbW1hbmRUeXBlID0gTGl0ZXJhbFN0cmluZ0ZvclVuaW9uO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TWVzc2FnZVR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgY3VzdG9tVHlwZT86ICdjaGFubmVsLmludHJvJyB8ICdtZXNzYWdlLmRhdGUnO1xuICBkYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgZXJyb3JTdGF0dXNDb2RlPzogbnVtYmVyO1xuICBldmVudD86IEV2ZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICB1bnJlYWQ/OiBib29sZWFuO1xuICByZWFkQnk6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICB0cmFuc2xhdGlvbj86IHN0cmluZztcbiAgcXVvdGVkX21lc3NhZ2U/OiBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlSW50ZXJuYWwgPSB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0VXNlclR5cGUgPSBVbmtub3duVHlwZSAmXG4gIERlZmF1bHRVc2VyVHlwZUludGVybmFsICYge1xuICAgIG11dGVzPzogQXJyYXk8TXV0ZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIH07XG5cbmV4cG9ydCB0eXBlIFN0cmVhbU1lc3NhZ2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IEZvcm1hdE1lc3NhZ2VSZXNwb25zZTxUPjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uID1cbiAgfCAnZmlsZS1zaXplJ1xuICB8ICdmaWxlLWV4dGVuc2lvbidcbiAgfCAndW5rbm93bic7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgZmlsZTogRmlsZTtcbiAgc3RhdGU6ICdlcnJvcicgfCAnc3VjY2VzcycgfCAndXBsb2FkaW5nJztcbiAgZXJyb3JSZWFzb24/OiBBdHRhY2htZW50VXBsb2FkRXJyb3JSZWFzb247XG4gIGVycm9yRXh0cmFJbmZvPzogeyBwYXJhbTogc3RyaW5nIH1bXTtcbiAgdXJsPzogc3RyaW5nO1xuICB0eXBlOiAnaW1hZ2UnIHwgJ2ZpbGUnIHwgJ3ZpZGVvJztcbiAgcHJldmlld1VyaT86IHN0cmluZyB8IEFycmF5QnVmZmVyO1xuICB0aHVtYl91cmw/OiBzdHJpbmc7XG4gIGZyb21BdHRhY2htZW50PzogQXR0YWNobWVudDxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0ID0ge1xuICBpdGVtOiBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtID0gKFxuICB8IENoYW5uZWxNZW1iZXJSZXNwb25zZVxuICB8IFVzZXJSZXNwb25zZVxuKSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIENvbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtID0gQ29tbWFuZFJlc3BvbnNlICYge1xuICBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uVHlwZSA9ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnaW5mbyc7XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblBheWxvYWQ8VCA9IG9iamVjdD4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IE5vdGlmaWNhdGlvblR5cGU7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHRyYW5zbGF0ZVBhcmFtcz86IG9iamVjdDtcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUPjtcbiAgdGVtcGxhdGVDb250ZXh0PzogVDtcbiAgZGlzbWlzc0ZuOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdDb250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGNoYW5uZWw6IENoYW5uZWw8VD47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUHJldmlld0luZm9Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBDaGFubmVsUHJldmlld0NvbnRleHQgJiB7XG4gIGxhdGVzdE1lc3NhZ2U/OiBTdHJlYW1NZXNzYWdlPFQ+O1xuICAvKipcbiAgICogVGhlIHRleHQgb2YgdGhlIGxhdGVzdCBtZXNzYWdlLCBvciBzb21lIG1ldGEgaW5mb3JtYXRpb24gKGZvciBleGFtcGxlOiBcIk5vdGhpbmcgeWV0XCIpXG4gICAqL1xuICBsYXRlc3RNZXNzYWdlVGV4dDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBjaGFubmVsLCBvciB0aGUgbmFtZSBvZiB0aGUgY2hhbm5lbCBtZW1iZXJzXG4gICAqL1xuICBjaGFubmVsRGlzcGxheVRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBsYXN0IG1lc3NhZ2UgKG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBsYXN0IG1lc3NhZ2Ugd2FzIHNlbnQgYnkgdGhlIGN1cnJlbnQgdXNlcilcbiAgICovXG4gIGxhdGVzdE1lc3NhZ2VTdGF0dXM/OiAnZGVsaXZlcmVkJyB8ICdyZWFkJztcbiAgLyoqXG4gICAqIFRoZSB0aW1lIG9mIHRoZSBsYXN0IG1lc3NhZ2UgKGZvcm1hdHRlZCB0byBhIHVzZXItZnJpZW5kbHkgc3RyaW5nKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRpbWU/OiBzdHJpbmc7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uVGVtcGxhdGVDb250ZXh0ID0ge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHVzZXI6IFVzZXJSZXNwb25zZTtcbn07XG5cbmV4cG9ydCB0eXBlIEVtb2ppUGlja2VyQ29udGV4dCA9IHtcbiAgZW1vamlJbnB1dCQ6IFN1YmplY3Q8c3RyaW5nPjtcbn07XG5cbmV4cG9ydCB0eXBlIFR5cGluZ0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVzZXJzVHlwaW5nJDogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXT47XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQ29udGV4dCA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXTtcbiAgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nO1xuICBpc0hpZ2hsaWdodGVkOiBib29sZWFuO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdO1xuICBzY3JvbGwkPzogT2JzZXJ2YWJsZTx2b2lkPjtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxBY3Rpb25zQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0geyBjaGFubmVsOiBDaGFubmVsPFQ+IH07XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRMaXN0Q29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIHBhcmVudE1lc3NhZ2VJZD86IHN0cmluZztcbiAgaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj86IChzdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEF2YXRhclR5cGUgPSAnY2hhbm5lbCcgfCAndXNlcic7XG5cbmV4cG9ydCB0eXBlIEF2YXRhckxvY2F0aW9uID1cbiAgfCAnY2hhbm5lbC1wcmV2aWV3J1xuICB8ICdjaGFubmVsLWhlYWRlcidcbiAgfCAnbWVzc2FnZS1zZW5kZXInXG4gIHwgJ21lc3NhZ2UtcmVhZGVyJ1xuICB8ICdxdW90ZWQtbWVzc2FnZS1zZW5kZXInXG4gIHwgJ2F1dG9jb21wbGV0ZS1pdGVtJ1xuICB8ICd0eXBpbmctaW5kaWNhdG9yJ1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdGhpcyB3aWxsIGJlIHJlbmFtZWQgdG8gdXNlci1saXN0IGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2VcbiAgICovXG4gIHwgJ3JlYWN0aW9uJztcblxuZXhwb3J0IHR5cGUgQXZhdGFyQ29udGV4dCA9IHtcbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0eXBlOiBBdmF0YXJUeXBlIHwgdW5kZWZpbmVkO1xuICBsb2NhdGlvbjogQXZhdGFyTG9jYXRpb24gfCB1bmRlZmluZWQ7XG4gIGNoYW5uZWw/OiBDaGFubmVsPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICB1c2VyPzogVXNlcjxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgaW5pdGlhbHNUeXBlPzogJ2ZpcnN0LWxldHRlci1vZi1maXJzdC13b3JkJyB8ICdmaXJzdC1sZXR0ZXItb2YtZWFjaC13b3JkJztcbiAgc2hvd09ubGluZUluZGljYXRvcj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50UHJldmlld0xpc3RDb250ZXh0ID0ge1xuICBhdHRhY2htZW50VXBsb2FkcyQ6IE9ic2VydmFibGU8QXR0YWNobWVudFVwbG9hZFtdPiB8IHVuZGVmaW5lZDtcbiAgcmV0cnlVcGxvYWRIYW5kbGVyOiAoZjogRmlsZSkgPT4gdm9pZDtcbiAgZGVsZXRlVXBsb2FkSGFuZGxlcjogKHU6IEF0dGFjaG1lbnRVcGxvYWQpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBJY29uQ29udGV4dCA9IHtcbiAgaWNvbjogSWNvbiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBpc01pbmU6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4gfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXTtcbiAgbWVzc2FnZVRleHRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uSGFuZGxlckV4dHJhUGFyYW1zID0ge1xuICBpc01pbmU6IGJvb2xlYW47XG4gIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25IYW5kbGVyPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSAoXG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4sXG4gIHBhcmFtczogTWVzc2FnZUFjdGlvbkhhbmRsZXJFeHRyYVBhcmFtc1xuKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uQm94SXRlbUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbiAgYWN0aW9uSGFuZGxlckV4dHJhUGFyYW1zOiBNZXNzYWdlQWN0aW9uSGFuZGxlckV4dHJhUGFyYW1zO1xuICBhY3Rpb25IYW5kbGVyOiBNZXNzYWdlQWN0aW9uSGFuZGxlcjxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvbkFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTmFtZTogJ3JlYWN0JztcbiAgaXNWaXNpYmxlOiAoXG4gICAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGlzTWluZTogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+XG4gICkgPT4gYm9vbGVhbjtcbn07XG5cbnR5cGUgTWVzc2FnZUFjdGlvbkl0ZW1CYXNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGFjdGlvbkxhYmVsT3JUcmFuc2xhdGlvbktleTogKChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBpc1Zpc2libGU6IChcbiAgICBlbmFibGVkQWN0aW9uczogc3RyaW5nW10sXG4gICAgaXNNaW5lOiBib29sZWFuLFxuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD5cbiAgKSA9PiBib29sZWFuO1xuICBhY3Rpb25IYW5kbGVyOiBNZXNzYWdlQWN0aW9uSGFuZGxlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25JdGVtPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8VD4gJiB7XG4gIGFjdGlvbk5hbWU6XG4gICAgfCAncXVvdGUnXG4gICAgfCAncGluJ1xuICAgIHwgJ2ZsYWcnXG4gICAgfCAnZWRpdCdcbiAgICB8ICdkZWxldGUnXG4gICAgfCAnbWFyay11bnJlYWQnXG4gICAgfCAndGhyZWFkLXJlcGx5J1xuICAgIHwgJ2NvcHktbWVzc2FnZS10ZXh0Jztcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8VD4gJiB7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvd25SZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvbnNDb250ZXh0ID0ge1xuICBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBgbWVzc2FnZVJlYWN0aW9uR3JvdXBzYCAqL1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICAvKiogQGRlcHJlY2F0ZWQgeW91IGNhbiBmZXRjaCB0aGUgcmVhY3Rpb25zIHVzaW5nIFtgY2hhdFNlcnZpY2UuY2hhdENsaWVudC5xdWVyeVJlYWN0aW9ucygpYF0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvc2VuZF9yZWFjdGlvbi8/bGFuZ3VhZ2U9amF2YXNjcmlwdCZxPXF1ZXJ5UmVhY3Rpb25zI3F1ZXJ5LXJlYWN0aW9ucykgKi9cbiAgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBtZXNzYWdlUmVhY3Rpb25Hcm91cHM6IHtcbiAgICBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdOiBSZWFjdGlvbkdyb3VwUmVzcG9uc2U7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRleHQgPSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgaXNPcGVuQ2hhbmdlSGFuZGxlcjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25Db250ZXh0ID0ge1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkO1xuICBjb250ZW50OiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIFRocmVhZEhlYWRlckNvbnRleHQgPSB7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGNsb3NlVGhyZWFkSGFuZGxlcjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvblR5cGUgPSBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXRhZGF0YUNvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xuICByZWFkQnlUZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsSGVhZGVySW5mb0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCA9IHtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2U7XG59O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudDogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2VDb250ZXh0ID0gTWVzc2FnZUNvbnRleHQgJiB7XG4gIHBhcnNlZERhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGVTZXBhcmF0b3JDb250ZXh0ID0ge1xuICBkYXRlOiBEYXRlO1xuICBwYXJzZWREYXRlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgPSB7XG4gIHVucmVhZENvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBVbnJlYWRNZXNzYWdlc05vdGlmaWNhdGlvbkNvbnRleHQgPVxuICBVbnJlYWRNZXNzYWdlc0luZGljYXRvckNvbnRleHQgJiB7XG4gICAgb25KdW1wOiAoKSA9PiB2b2lkO1xuICAgIG9uRGlzbWlzczogKCkgPT4gdm9pZDtcbiAgfTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFF1ZXJ5U3RhdGUgPSB7XG4gIHN0YXRlOiAnaW4tcHJvZ3Jlc3MnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgLy8gTm8gdHlwZSBkZWYgZnJvbSBzdHJlYW0tY2hhdFxuICBlcnJvcj86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlSW5wdXQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgdGV4dDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxUPltdO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlPFQ+W107XG4gIHBhcmVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHF1b3RlZE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjdXN0b21EYXRhOiB1bmRlZmluZWQgfCBQYXJ0aWFsPFRbJ21lc3NhZ2VUeXBlJ10+O1xufTtcblxuZXhwb3J0IHR5cGUgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uID0ge1xuICB0eXBlOiAnb2Zmc2V0JztcbiAgb2Zmc2V0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJ0TmV4dFBhZ2VDb25maWd1cmF0aW9uPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIHR5cGU6ICdmaWx0ZXInO1xuICBwYWdpbmF0aW9uRmlsdGVyOiBDaGFubmVsRmlsdGVyczxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5leHRQYWdlQ29uZmlndXJhdGlvbiA9XG4gIHwgT2Zmc2V0TmV4dFBhZ2VDb25maWd1cmF0aW9uXG4gIHwgRmlsdGVydE5leHRQYWdlQ29uZmlndXJhdGlvblxuICB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uQ2xpY2tEZXRhaWxzID0ge1xuICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVhY3Rpb25UeXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uc0NsaWNrRGV0YWlsczxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0PFQ+ICYgeyBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdIH07XG5cbmV4cG9ydCB0eXBlIEdyb3VwU3R5bGVPcHRpb25zID0ge1xuICBub0dyb3VwQnlVc2VyPzogYm9vbGVhbjtcbiAgbGFzdFJlYWRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIG5vR3JvdXBCeVJlYWRTdGF0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlUeXBlID0gJ2ZpcnN0LXBhZ2UnIHwgJ25leHQtcGFnZScgfCAncmVjb3Zlci1zdGF0ZSc7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxRdWVyeVJlc3VsdDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsczogQ2hhbm5lbDxUPltdO1xuICBoYXNNb3JlUGFnZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZpcnR1YWxpemVkTGlzdFNjcm9sbFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RRdWVyeVN0YXRlID0ge1xuICBzdGF0ZTogJ2xvYWRpbmctdG9wJyB8ICdsb2FkaW5nLWJvdHRvbScgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuICBlcnJvcj86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RRdWVyeURpcmVjdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbmV4cG9ydCB0eXBlIFZpcnR1YWxpemVkTGlzdFZlcnRpY2FsSXRlbVBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsTWVtYmVyUmVzcG9uc2UsXG4gIENvbW1hbmRSZXNwb25zZSxcbiAgRXZlbnQsXG4gIEV4dGVuZGFibGVHZW5lcmljcyxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBMaXRlcmFsU3RyaW5nRm9yVW5pb24sXG4gIE1lc3NhZ2VSZXNwb25zZUJhc2UsXG4gIE11dGUsXG4gIFJlYWN0aW9uR3JvdXBSZXNwb25zZSxcbiAgUmVhY3Rpb25SZXNwb25zZSxcbiAgVXNlcixcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBVbmtub3duVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBDdXN0b21UcmlnZ2VyID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29tcG9uZW50UHJvcHM6IFVua25vd25UeXBlO1xuICAgIGRhdGE6IFVua25vd25UeXBlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IEV4dGVuZGFibGVHZW5lcmljcyAmIHtcbiAgYXR0YWNobWVudFR5cGU6IERlZmF1bHRBdHRhY2htZW50VHlwZTtcbiAgY2hhbm5lbFR5cGU6IERlZmF1bHRDaGFubmVsVHlwZTtcbiAgY29tbWFuZFR5cGU6IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcbiAgZXZlbnRUeXBlOiBVbmtub3duVHlwZTtcbiAgbWVzc2FnZVR5cGU6IERlZmF1bHRNZXNzYWdlVHlwZTtcbiAgcmVhY3Rpb25UeXBlOiBVbmtub3duVHlwZTtcbiAgdXNlclR5cGU6IERlZmF1bHRVc2VyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRBdHRhY2htZW50VHlwZSA9IFVua25vd25UeXBlICYge1xuICBhc3NldF91cmw/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpbWFnZXM/OiBBcnJheTxBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+PjtcbiAgbWltZV90eXBlPzogc3RyaW5nO1xuICBpc0N1c3RvbUF0dGFjaG1lbnQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENoYW5uZWxUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBtZW1iZXJfY291bnQ/OiBudW1iZXI7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENvbW1hbmRUeXBlID0gTGl0ZXJhbFN0cmluZ0ZvclVuaW9uO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TWVzc2FnZVR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgY3VzdG9tVHlwZT86ICdjaGFubmVsLmludHJvJyB8ICdtZXNzYWdlLmRhdGUnO1xuICBkYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgZXJyb3JTdGF0dXNDb2RlPzogbnVtYmVyO1xuICBldmVudD86IEV2ZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICB1bnJlYWQ/OiBib29sZWFuO1xuICByZWFkQnk6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICB0cmFuc2xhdGlvbj86IHN0cmluZztcbiAgcXVvdGVkX21lc3NhZ2U/OiBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlSW50ZXJuYWwgPSB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0VXNlclR5cGUgPSBVbmtub3duVHlwZSAmXG4gIERlZmF1bHRVc2VyVHlwZUludGVybmFsICYge1xuICAgIG11dGVzPzogQXJyYXk8TXV0ZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIH07XG5cbmV4cG9ydCB0eXBlIFN0cmVhbU1lc3NhZ2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IEZvcm1hdE1lc3NhZ2VSZXNwb25zZTxUPjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFVwbG9hZEVycm9yUmVhc29uID1cbiAgfCAnZmlsZS1zaXplJ1xuICB8ICdmaWxlLWV4dGVuc2lvbidcbiAgfCAndW5rbm93bic7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRVcGxvYWQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgZmlsZTogRmlsZTtcbiAgc3RhdGU6ICdlcnJvcicgfCAnc3VjY2VzcycgfCAndXBsb2FkaW5nJztcbiAgZXJyb3JSZWFzb24/OiBBdHRhY2htZW50VXBsb2FkRXJyb3JSZWFzb247XG4gIGVycm9yRXh0cmFJbmZvPzogeyBwYXJhbTogc3RyaW5nIH1bXTtcbiAgdXJsPzogc3RyaW5nO1xuICB0eXBlOiAnaW1hZ2UnIHwgJ2ZpbGUnIHwgJ3ZpZGVvJyB8ICd2b2ljZVJlY29yZGluZyc7XG4gIHByZXZpZXdVcmk/OiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbiAgdGh1bWJfdXJsPzogc3RyaW5nO1xuICBleHRyYURhdGE/OiBQYXJ0aWFsPEF0dGFjaG1lbnQ8VD4+O1xuICBmcm9tQXR0YWNobWVudD86IEF0dGFjaG1lbnQ8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCA9IHtcbiAgaXRlbTogQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW07XG59O1xuXG5leHBvcnQgdHlwZSBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSA9IChcbiAgfCBDaGFubmVsTWVtYmVyUmVzcG9uc2VcbiAgfCBVc2VyUmVzcG9uc2VcbikgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb21hbmRBdXRvY29tcGxldGVMaXN0SXRlbSA9IENvbW1hbmRSZXNwb25zZSAmIHtcbiAgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblR5cGUgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nO1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QYXlsb2FkPFQgPSBvYmplY3Q+ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0cmFuc2xhdGVQYXJhbXM/OiBvYmplY3Q7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG4gIHRlbXBsYXRlQ29udGV4dD86IFQ7XG4gIGRpc21pc3NGbjogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxQcmV2aWV3Q29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBjaGFubmVsOiBDaGFubmVsPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFByZXZpZXdJbmZvQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gQ2hhbm5lbFByZXZpZXdDb250ZXh0ICYge1xuICBsYXRlc3RNZXNzYWdlPzogU3RyZWFtTWVzc2FnZTxUPjtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IG9mIHRoZSBsYXRlc3QgbWVzc2FnZSwgb3Igc29tZSBtZXRhIGluZm9ybWF0aW9uIChmb3IgZXhhbXBsZTogXCJOb3RoaW5nIHlldFwiKVxuICAgKi9cbiAgbGF0ZXN0TWVzc2FnZVRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY2hhbm5lbCwgb3IgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwgbWVtYmVyc1xuICAgKi9cbiAgY2hhbm5lbERpc3BsYXlUaXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGFzdCBtZXNzYWdlIChvbmx5IGF2YWlsYWJsZSBpZiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBzZW50IGJ5IHRoZSBjdXJyZW50IHVzZXIpXG4gICAqL1xuICBsYXRlc3RNZXNzYWdlU3RhdHVzPzogJ2RlbGl2ZXJlZCcgfCAncmVhZCc7XG4gIC8qKlxuICAgKiBUaGUgdGltZSBvZiB0aGUgbGFzdCBtZXNzYWdlIChmb3JtYXR0ZWQgdG8gYSB1c2VyLWZyaWVuZGx5IHN0cmluZylcbiAgICovXG4gIGxhdGVzdE1lc3NhZ2VUaW1lPzogc3RyaW5nO1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvblRlbXBsYXRlQ29udGV4dCA9IHtcbiAgY29udGVudDogc3RyaW5nO1xuICB1c2VyOiBVc2VyUmVzcG9uc2U7XG59O1xuXG5leHBvcnQgdHlwZSBFbW9qaVBpY2tlckNvbnRleHQgPSB7XG4gIGVtb2ppSW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBUeXBpbmdJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1c2Vyc1R5cGluZyQ6IE9ic2VydmFibGU8VXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUNvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW107XG4gIGlzTGFzdFNlbnRNZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJztcbiAgaXNIaWdobGlnaHRlZDogYm9vbGVhbjtcbiAgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXTtcbiAgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQWN0aW9uc0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGlzdENvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI/OiAoc3RhdGU6ICdvcGVuZWQnIHwgJ2Nsb3NlZCcpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBdmF0YXJUeXBlID0gJ2NoYW5uZWwnIHwgJ3VzZXInO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJMb2NhdGlvbiA9XG4gIHwgJ2NoYW5uZWwtcHJldmlldydcbiAgfCAnY2hhbm5lbC1oZWFkZXInXG4gIHwgJ21lc3NhZ2Utc2VuZGVyJ1xuICB8ICdtZXNzYWdlLXJlYWRlcidcbiAgfCAncXVvdGVkLW1lc3NhZ2Utc2VuZGVyJ1xuICB8ICdhdXRvY29tcGxldGUtaXRlbSdcbiAgfCAndHlwaW5nLWluZGljYXRvcidcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHRoaXMgd2lsbCBiZSByZW5hbWVkIHRvIHVzZXItbGlzdCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlXG4gICAqL1xuICB8ICdyZWFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIEF2YXRhckNvbnRleHQgPSB7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW1hZ2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdHlwZTogQXZhdGFyVHlwZSB8IHVuZGVmaW5lZDtcbiAgbG9jYXRpb246IEF2YXRhckxvY2F0aW9uIHwgdW5kZWZpbmVkO1xuICBjaGFubmVsPzogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIGluaXRpYWxzVHlwZT86ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCcgfCAnZmlyc3QtbGV0dGVyLW9mLWVhY2gtd29yZCc7XG4gIHNob3dPbmxpbmVJbmRpY2F0b3I/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT4gfCB1bmRlZmluZWQ7XG4gIHJldHJ5VXBsb2FkSGFuZGxlcjogKGY6IEZpbGUpID0+IHZvaWQ7XG4gIGRlbGV0ZVVwbG9hZEhhbmRsZXI6ICh1OiBBdHRhY2htZW50VXBsb2FkKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgSWNvbkNvbnRleHQgPSB7XG4gIGljb246IEljb24gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uc0JveENvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+IHwgdW5kZWZpbmVkO1xuICBlbmFibGVkQWN0aW9uczogc3RyaW5nW107XG4gIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkhhbmRsZXJFeHRyYVBhcmFtcyA9IHtcbiAgaXNNaW5lOiBib29sZWFuO1xuICBtZXNzYWdlVGV4dEh0bWxFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uSGFuZGxlcjxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gKFxuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+LFxuICBwYXJhbXM6IE1lc3NhZ2VBY3Rpb25IYW5kbGVyRXh0cmFQYXJhbXNcbikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbkJveEl0ZW1Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG4gIGFjdGlvbkhhbmRsZXJFeHRyYVBhcmFtczogTWVzc2FnZUFjdGlvbkhhbmRsZXJFeHRyYVBhcmFtcztcbiAgYWN0aW9uSGFuZGxlcjogTWVzc2FnZUFjdGlvbkhhbmRsZXI8VD47XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25BY3Rpb25JdGVtPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIGFjdGlvbk5hbWU6ICdyZWFjdCc7XG4gIGlzVmlzaWJsZTogKFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBpc01pbmU6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPlxuICApID0+IGJvb2xlYW47XG59O1xuXG50eXBlIE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25MYWJlbE9yVHJhbnNsYXRpb25LZXk6ICgobWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPikgPT4gc3RyaW5nKSB8IHN0cmluZztcbiAgaXNWaXNpYmxlOiAoXG4gICAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGlzTWluZTogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+XG4gICkgPT4gYm9vbGVhbjtcbiAgYWN0aW9uSGFuZGxlcjogTWVzc2FnZUFjdGlvbkhhbmRsZXI7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlQWN0aW9uSXRlbTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gTWVzc2FnZUFjdGlvbkl0ZW1CYXNlPFQ+ICYge1xuICBhY3Rpb25OYW1lOlxuICAgIHwgJ3F1b3RlJ1xuICAgIHwgJ3BpbidcbiAgICB8ICdmbGFnJ1xuICAgIHwgJ2VkaXQnXG4gICAgfCAnZGVsZXRlJ1xuICAgIHwgJ21hcmstdW5yZWFkJ1xuICAgIHwgJ3RocmVhZC1yZXBseSdcbiAgICB8ICdjb3B5LW1lc3NhZ2UtdGV4dCc7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbTxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0gTWVzc2FnZUFjdGlvbkl0ZW1CYXNlPFQ+ICYge1xuICBhY3Rpb25OYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25zU2VsZWN0b3JDb250ZXh0ID0ge1xuICBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb3duUmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgYG1lc3NhZ2VSZWFjdGlvbkdyb3Vwc2AgKi9cbiAgbWVzc2FnZVJlYWN0aW9uQ291bnRzOiB7IFtrZXkgaW4gTWVzc2FnZVJlYWN0aW9uVHlwZV0/OiBudW1iZXIgfTtcbiAgLyoqIEBkZXByZWNhdGVkIHlvdSBjYW4gZmV0Y2ggdGhlIHJlYWN0aW9ucyB1c2luZyBbYGNoYXRTZXJ2aWNlLmNoYXRDbGllbnQucXVlcnlSZWFjdGlvbnMoKWBdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3NlbmRfcmVhY3Rpb24vP2xhbmd1YWdlPWphdmFzY3JpcHQmcT1xdWVyeVJlYWN0aW9ucyNxdWVyeS1yZWFjdGlvbnMpICovXG4gIGxhdGVzdFJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBvd25SZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXTtcbiAgbWVzc2FnZVJlYWN0aW9uR3JvdXBzOiB7XG4gICAgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXTogUmVhY3Rpb25Hcm91cFJlc3BvbnNlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgTW9kYWxDb250ZXh0ID0ge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGlzT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQ29udGV4dCA9IHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZSB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJlYWRIZWFkZXJDb250ZXh0ID0ge1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBjbG9zZVRocmVhZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUmVhY3Rpb25UeXBlID0gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50Q29uZmlncmF0aW9uID0ge1xuICB1cmw6IHN0cmluZztcbiAgaGVpZ2h0OiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBJbWFnZUF0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gQXR0YWNobWVudENvbmZpZ3JhdGlvbiAmIHtcbiAgb3JpZ2luYWxIZWlnaHQ6IG51bWJlcjtcbiAgb3JpZ2luYWxXaWR0aDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgVmlkZW9BdHRhY2htZW50Q29uZmlndXJhdGlvbiA9IEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gJiB7XG4gIHRodW1iVXJsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVsaXZlcmVkU3RhdHVzQ29udGV4dCA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRpbmdTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWV0YWRhdGFDb250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG59O1xuXG5leHBvcnQgdHlwZSBSZWFkU3RhdHVzQ29udGV4dCA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTtcbiAgcmVhZEJ5VGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbEhlYWRlckluZm9Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7IGNoYW5uZWw6IENoYW5uZWw8VD4gfTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tQXR0YWNobWVudFVwbG9hZENvbnRleHQgPSB7XG4gIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXR0YWNobWVudFNlcnZpY2U6IEF0dGFjaG1lbnRTZXJ2aWNlO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudENvbnRleHQgPSB7XG4gIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG59O1xuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlQ29udGV4dCA9IE1lc3NhZ2VDb250ZXh0ICYge1xuICBwYXJzZWREYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRlU2VwYXJhdG9yQ29udGV4dCA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgcGFyc2VkRGF0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVW5yZWFkTWVzc2FnZXNJbmRpY2F0b3JDb250ZXh0ID0ge1xuICB1bnJlYWRDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgVW5yZWFkTWVzc2FnZXNOb3RpZmljYXRpb25Db250ZXh0ID1cbiAgVW5yZWFkTWVzc2FnZXNJbmRpY2F0b3JDb250ZXh0ICYge1xuICAgIG9uSnVtcDogKCkgPT4gdm9pZDtcbiAgICBvbkRpc21pc3M6ICgpID0+IHZvaWQ7XG4gIH07XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxRdWVyeVN0YXRlID0ge1xuICBzdGF0ZTogJ2luLXByb2dyZXNzJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic7XG4gIC8vIE5vIHR5cGUgZGVmIGZyb20gc3RyZWFtLWNoYXRcbiAgZXJyb3I/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUlucHV0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7XG4gIHRleHQ6IHN0cmluZztcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnQ8VD5bXTtcbiAgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZTxUPltdO1xuICBwYXJlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBxdW90ZWRNZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY3VzdG9tRGF0YTogdW5kZWZpbmVkIHwgUGFydGlhbDxUWydtZXNzYWdlVHlwZSddPjtcbn07XG5cbmV4cG9ydCB0eXBlIE9mZnNldE5leHRQYWdlQ29uZmlndXJhdGlvbiA9IHtcbiAgdHlwZTogJ29mZnNldCc7XG4gIG9mZnNldDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVydE5leHRQYWdlQ29uZmlndXJhdGlvbjxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICB0eXBlOiAnZmlsdGVyJztcbiAgcGFnaW5hdGlvbkZpbHRlcjogQ2hhbm5lbEZpbHRlcnM8VD47XG59O1xuXG5leHBvcnQgdHlwZSBOZXh0UGFnZUNvbmZpZ3VyYXRpb24gPVxuICB8IE9mZnNldE5leHRQYWdlQ29uZmlndXJhdGlvblxuICB8IEZpbHRlcnROZXh0UGFnZUNvbmZpZ3VyYXRpb25cbiAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VSZWFjdGlvbkNsaWNrRGV0YWlscyA9IHtcbiAgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIHJlYWN0aW9uVHlwZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNDbGlja0RldGFpbHM8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dDxUPiAmIHsgY3VzdG9tQWN0aW9uczogQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW1bXSB9O1xuXG5leHBvcnQgdHlwZSBHcm91cFN0eWxlT3B0aW9ucyA9IHtcbiAgbm9Hcm91cEJ5VXNlcj86IGJvb2xlYW47XG4gIGxhc3RSZWFkTWVzc2FnZUlkPzogc3RyaW5nO1xuICBub0dyb3VwQnlSZWFkU3RhdGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFF1ZXJ5VHlwZSA9ICdmaXJzdC1wYWdlJyB8ICduZXh0LXBhZ2UnIHwgJ3JlY292ZXItc3RhdGUnO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUXVlcnlSZXN1bHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgY2hhbm5lbHM6IENoYW5uZWw8VD5bXTtcbiAgaGFzTW9yZVBhZ2U6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RTY3JvbGxQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJztcblxuZXhwb3J0IHR5cGUgVmlydHVhbGl6ZWRMaXN0UXVlcnlTdGF0ZSA9IHtcbiAgc3RhdGU6ICdsb2FkaW5nLXRvcCcgfCAnbG9hZGluZy1ib3R0b20nIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgZXJyb3I/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgVmlydHVhbGl6ZWRMaXN0UXVlcnlEaXJlY3Rpb24gPSAndG9wJyB8ICdib3R0b20nO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsaXplZExpc3RWZXJ0aWNhbEl0ZW1Qb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJztcblxuZXhwb3J0IHR5cGUgQXVkaW9SZWNvcmRpbmcgPSBNZWRpYVJlY29yZGluZyAmIHsgd2F2ZWZvcm1fZGF0YTogbnVtYmVyW10gfTtcblxuZXhwb3J0IHR5cGUgTWVkaWFSZWNvcmRpbmcgPSB7XG4gIHJlY29yZGluZzogRmlsZTtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgbWltZV90eXBlOiBzdHJpbmc7XG4gIGFzc2V0X3VybDogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQ7XG59O1xuIl19
@@ -0,0 +1,119 @@
1
+ import { Injectable, NgModule } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../chat-client.service";
5
+ const MAX_FREQUENCY_AMPLITUDE = 255;
6
+ const rootMeanSquare = (values) => Math.sqrt(values.reduce((acc, val) => acc + Math.pow(val, 2), 0) / values.length);
7
+ export const DEFAULT_AMPLITUDE_RECORDER_CONFIG = {
8
+ analyserConfig: {
9
+ fftSize: 32,
10
+ maxDecibels: 0,
11
+ minDecibels: -100,
12
+ },
13
+ sampleCount: 100,
14
+ samplingFrequencyMs: 60,
15
+ };
16
+ /**
17
+ * The `AmplitudeRecorderService` is a utility service used to create amplitude values for voice recordings, making it possible to display a wave bar
18
+ */
19
+ export class AmplitudeRecorderService {
20
+ constructor(chatService) {
21
+ this.chatService = chatService;
22
+ this.config = DEFAULT_AMPLITUDE_RECORDER_CONFIG;
23
+ this.amplitudesSubject = new BehaviorSubject([]);
24
+ this.errorSubject = new BehaviorSubject(undefined);
25
+ /**
26
+ * Start amplitude recording for the given media stream
27
+ * @param stream
28
+ */
29
+ this.start = (stream) => {
30
+ this.stop();
31
+ this.stream = stream;
32
+ this.init();
33
+ this.resume();
34
+ };
35
+ this.amplitudes$ = this.amplitudesSubject.asObservable();
36
+ this.error$ = this.errorSubject.asObservable();
37
+ }
38
+ /**
39
+ * The recorded amplitudes
40
+ */
41
+ get amplitudes() {
42
+ return this.amplitudesSubject.value;
43
+ }
44
+ /**
45
+ * Temporarily pause amplitude recording, recording can be resumed with `resume`
46
+ */
47
+ pause() {
48
+ clearInterval(this.amplitudeSamplingInterval);
49
+ this.amplitudeSamplingInterval = undefined;
50
+ }
51
+ /**
52
+ * Resume amplited recording after it was pasued
53
+ */
54
+ resume() {
55
+ this.amplitudeSamplingInterval = setInterval(() => {
56
+ if (!this.analyserNode) {
57
+ return;
58
+ }
59
+ const frequencyBins = new Uint8Array(this.analyserNode.frequencyBinCount);
60
+ try {
61
+ this.analyserNode.getByteFrequencyData(frequencyBins);
62
+ }
63
+ catch (e) {
64
+ this.logError(e);
65
+ this.errorSubject.next(e);
66
+ return;
67
+ }
68
+ const normalizedSignalStrength = rootMeanSquare(frequencyBins) / MAX_FREQUENCY_AMPLITUDE;
69
+ this.amplitudesSubject.next([
70
+ ...this.amplitudesSubject.value,
71
+ normalizedSignalStrength,
72
+ ]);
73
+ }, this.config.samplingFrequencyMs);
74
+ }
75
+ /**
76
+ * Stop the amplitude recording and frees up used resources
77
+ */
78
+ stop() {
79
+ if (!this.stream) {
80
+ return;
81
+ }
82
+ this.stream = undefined;
83
+ clearInterval(this.amplitudeSamplingInterval);
84
+ this.amplitudeSamplingInterval = undefined;
85
+ this.amplitudesSubject.next([]);
86
+ this.errorSubject.next(undefined);
87
+ this.microphone?.disconnect();
88
+ this.analyserNode?.disconnect();
89
+ if (this.audioContext?.state !== 'closed') {
90
+ void this.audioContext?.close();
91
+ }
92
+ }
93
+ init() {
94
+ if (!this.stream) {
95
+ return;
96
+ }
97
+ this.audioContext = new AudioContext();
98
+ this.analyserNode = this.audioContext.createAnalyser();
99
+ const { analyserConfig } = this.config;
100
+ this.analyserNode.fftSize = analyserConfig.fftSize;
101
+ this.analyserNode.maxDecibels = analyserConfig.maxDecibels;
102
+ this.analyserNode.minDecibels = analyserConfig.minDecibels;
103
+ this.microphone = this.audioContext.createMediaStreamSource(this.stream);
104
+ this.microphone.connect(this.analyserNode);
105
+ }
106
+ logError(error) {
107
+ this.chatService.chatClient?.logger('error', error.message, {
108
+ error: error,
109
+ tag: ['AmplitudeRecorderService'],
110
+ });
111
+ }
112
+ }
113
+ AmplitudeRecorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AmplitudeRecorderService, deps: [{ token: i1.ChatClientService }], target: i0.ɵɵFactoryTarget.Injectable });
114
+ AmplitudeRecorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AmplitudeRecorderService, providedIn: NgModule });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AmplitudeRecorderService, decorators: [{
116
+ type: Injectable,
117
+ args: [{ providedIn: NgModule }]
118
+ }], ctorParameters: function () { return [{ type: i1.ChatClientService }]; } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlLXJlY29yZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkZXIvYW1wbGl0dWRlLXJlY29yZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBR25ELE1BQU0sdUJBQXVCLEdBQUcsR0FBWSxDQUFDO0FBRTdDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBa0IsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN2RSxDQUFDO0FBK0JKLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUE0QjtJQUN4RSxjQUFjLEVBQUU7UUFDZCxPQUFPLEVBQUUsRUFBRTtRQUNYLFdBQVcsRUFBRSxDQUFDO1FBQ2QsV0FBVyxFQUFFLENBQUMsR0FBRztLQUNTO0lBQzVCLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLG1CQUFtQixFQUFFLEVBQUU7Q0FDeEIsQ0FBQztBQUVGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQWFuQyxZQUFvQixXQUE4QjtRQUE5QixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFabEQsV0FBTSxHQUFHLGlDQUFpQyxDQUFDO1FBSW5DLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsSUFBSSxl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LENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkQsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFZO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUMxRCxLQUFLLEVBQUUsS0FBSztZQUNaLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7O3FIQS9HVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQURYLFFBQVE7MkZBQ3JCLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuXG5jb25zdCBNQVhfRlJFUVVFTkNZX0FNUExJVFVERSA9IDI1NSBhcyBjb25zdDtcblxuY29uc3Qgcm9vdE1lYW5TcXVhcmUgPSAodmFsdWVzOiBVaW50OEFycmF5KSA9PlxuICBNYXRoLnNxcnQoXG4gICAgdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyArIE1hdGgucG93KHZhbCwgMiksIDApIC8gdmFsdWVzLmxlbmd0aFxuICApO1xuXG4vKipcbiAqIGZmdFNpemVcbiAqIEFuIHVuc2lnbmVkIGludGVnZXIsIHJlcHJlc2VudGluZyB0aGUgd2luZG93IHNpemUgb2YgdGhlIEZGVCwgZ2l2ZW4gaW4gbnVtYmVyIG9mIHNhbXBsZXMuXG4gKiBBIGhpZ2hlciB2YWx1ZSB3aWxsIHJlc3VsdCBpbiBtb3JlIGRldGFpbHMgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gYnV0IGZld2VyIGRldGFpbHNcbiAqIGluIHRoZSBhbXBsaXR1ZGUgZG9tYWluLlxuICpcbiAqIE11c3QgYmUgYSBwb3dlciBvZiAyIGJldHdlZW4gMl41IGFuZCAyXjE1LCBzbyBvbmUgb2Y6IDMyLCA2NCwgMTI4LCAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsIGFuZCAzMjc2OC5cbiAqIERlZmF1bHRzIHRvIDMyLlxuICpcbiAqIG1heERlY2liZWxzXG4gKiBBIGRvdWJsZSwgcmVwcmVzZW50aW5nIHRoZSBtYXhpbXVtIGRlY2liZWwgdmFsdWUgZm9yIHNjYWxpbmcgdGhlIEZGVCBhbmFseXNpcyBkYXRhLFxuICogd2hlcmUgMCBkQiBpcyB0aGUgbG91ZGVzdCBwb3NzaWJsZSBzb3VuZCwgLTEwIGRCIGlzIGEgMTB0aCBvZiB0aGF0LCBldGMuXG4gKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAtMzAgZEIuXG4gKlxuICogbWluRGVjaWJlbHNcbiAqIEEgZG91YmxlLCByZXByZXNlbnRpbmcgdGhlIG1pbmltdW0gZGVjaWJlbCB2YWx1ZSBmb3Igc2NhbGluZyB0aGUgRkZUIGFuYWx5c2lzIGRhdGEsXG4gKiB3aGVyZSAwIGRCIGlzIHRoZSBsb3VkZXN0IHBvc3NpYmxlIHNvdW5kLCAtMTAgZEIgaXMgYSAxMHRoIG9mIHRoYXQsIGV0Yy5cbiAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIC0xMDAgZEIuXG4gKi9cbmV4cG9ydCB0eXBlIEFtcGxpdHVkZUFuYWx5c2VyQ29uZmlnID0gUGljazxcbiAgQW5hbHlzZXJOb2RlLFxuICAnZmZ0U2l6ZScgfCAnbWF4RGVjaWJlbHMnIHwgJ21pbkRlY2liZWxzJ1xuPjtcbmV4cG9ydCB0eXBlIEFtcGxpdHVkZVJlY29yZGVyQ29uZmlnID0ge1xuICBhbmFseXNlckNvbmZpZzogQW1wbGl0dWRlQW5hbHlzZXJDb25maWc7XG4gIHNhbXBsZUNvdW50OiBudW1iZXI7XG4gIHNhbXBsaW5nRnJlcXVlbmN5TXM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FNUExJVFVERV9SRUNPUkRFUl9DT05GSUc6IEFtcGxpdHVkZVJlY29yZGVyQ29uZmlnID0ge1xuICBhbmFseXNlckNvbmZpZzoge1xuICAgIGZmdFNpemU6IDMyLFxuICAgIG1heERlY2liZWxzOiAwLFxuICAgIG1pbkRlY2liZWxzOiAtMTAwLFxuICB9IGFzIEFtcGxpdHVkZUFuYWx5c2VyQ29uZmlnLFxuICBzYW1wbGVDb3VudDogMTAwLFxuICBzYW1wbGluZ0ZyZXF1ZW5jeU1zOiA2MCxcbn07XG5cbi8qKlxuICogVGhlIGBBbXBsaXR1ZGVSZWNvcmRlclNlcnZpY2VgIGlzIGEgdXRpbGl0eSBzZXJ2aWNlIHVzZWQgdG8gY3JlYXRlIGFtcGxpdHVkZSB2YWx1ZXMgZm9yIHZvaWNlIHJlY29yZGluZ3MsIG1ha2luZyBpdCBwb3NzaWJsZSB0byBkaXNwbGF5IGEgd2F2ZSBiYXJcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBOZ01vZHVsZSB9KVxuZXhwb3J0IGNsYXNzIEFtcGxpdHVkZVJlY29yZGVyU2VydmljZSB7XG4gIGNvbmZpZyA9IERFRkFVTFRfQU1QTElUVURFX1JFQ09SREVSX0NPTkZJRztcbiAgYW1wbGl0dWRlcyQ6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICBlcnJvciQ6IE9ic2VydmFibGU8RXJyb3IgfCB1bmRlZmluZWQ+O1xuXG4gIHByaXZhdGUgYW1wbGl0dWRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdPihbXSk7XG4gIHByaXZhdGUgZXJyb3JTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFcnJvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBhdWRpb0NvbnRleHQ6IEF1ZGlvQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhbmFseXNlck5vZGU6IEFuYWx5c2VyTm9kZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtaWNyb3Bob25lOiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzdHJlYW06IE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGFtcGxpdHVkZVNhbXBsaW5nSW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYXRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSkge1xuICAgIHRoaXMuYW1wbGl0dWRlcyQgPSB0aGlzLmFtcGxpdHVkZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZXJyb3IkID0gdGhpcy5lcnJvclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlY29yZGVkIGFtcGxpdHVkZXNcbiAgICovXG4gIGdldCBhbXBsaXR1ZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmFtcGxpdHVkZXNTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGFtcGxpdHVkZSByZWNvcmRpbmcgZm9yIHRoZSBnaXZlbiBtZWRpYSBzdHJlYW1cbiAgICogQHBhcmFtIHN0cmVhbVxuICAgKi9cbiAgc3RhcnQgPSAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07XG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnJlc3VtZSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBwYXVzZSBhbXBsaXR1ZGUgcmVjb3JkaW5nLCByZWNvcmRpbmcgY2FuIGJlIHJlc3VtZWQgd2l0aCBgcmVzdW1lYFxuICAgKi9cbiAgcGF1c2UoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFtcGxpdHVkZVNhbXBsaW5nSW50ZXJ2YWwpO1xuICAgIHRoaXMuYW1wbGl0dWRlU2FtcGxpbmdJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1bWUgYW1wbGl0ZWQgcmVjb3JkaW5nIGFmdGVyIGl0IHdhcyBwYXN1ZWRcbiAgICovXG4gIHJlc3VtZSgpIHtcbiAgICB0aGlzLmFtcGxpdHVkZVNhbXBsaW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYW5hbHlzZXJOb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZyZXF1ZW5jeUJpbnMgPSBuZXcgVWludDhBcnJheSh0aGlzLmFuYWx5c2VyTm9kZS5mcmVxdWVuY3lCaW5Db3VudCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmFuYWx5c2VyTm9kZS5nZXRCeXRlRnJlcXVlbmN5RGF0YShmcmVxdWVuY3lCaW5zKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dFcnJvcihlIGFzIEVycm9yKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChlIGFzIEVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFNpZ25hbFN0cmVuZ3RoID1cbiAgICAgICAgcm9vdE1lYW5TcXVhcmUoZnJlcXVlbmN5QmlucykgLyBNQVhfRlJFUVVFTkNZX0FNUExJVFVERTtcbiAgICAgIHRoaXMuYW1wbGl0dWRlc1N1YmplY3QubmV4dChbXG4gICAgICAgIC4uLnRoaXMuYW1wbGl0dWRlc1N1YmplY3QudmFsdWUsXG4gICAgICAgIG5vcm1hbGl6ZWRTaWduYWxTdHJlbmd0aCxcbiAgICAgIF0pO1xuICAgIH0sIHRoaXMuY29uZmlnLnNhbXBsaW5nRnJlcXVlbmN5TXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgdGhlIGFtcGxpdHVkZSByZWNvcmRpbmcgYW5kIGZyZWVzIHVwIHVzZWQgcmVzb3VyY2VzXG4gICAqL1xuICBzdG9wKCkge1xuICAgIGlmICghdGhpcy5zdHJlYW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFtcGxpdHVkZVNhbXBsaW5nSW50ZXJ2YWwpO1xuICAgIHRoaXMuYW1wbGl0dWRlU2FtcGxpbmdJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFtcGxpdHVkZXNTdWJqZWN0Lm5leHQoW10pO1xuICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1pY3JvcGhvbmU/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmFuYWx5c2VyTm9kZT8uZGlzY29ubmVjdCgpO1xuICAgIGlmICh0aGlzLmF1ZGlvQ29udGV4dD8uc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICB2b2lkIHRoaXMuYXVkaW9Db250ZXh0Py5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc3RyZWFtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdWRpb0NvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7XG4gICAgdGhpcy5hbmFseXNlck5vZGUgPSB0aGlzLmF1ZGlvQ29udGV4dC5jcmVhdGVBbmFseXNlcigpO1xuICAgIGNvbnN0IHsgYW5hbHlzZXJDb25maWcgfSA9IHRoaXMuY29uZmlnO1xuICAgIHRoaXMuYW5hbHlzZXJOb2RlLmZmdFNpemUgPSBhbmFseXNlckNvbmZpZy5mZnRTaXplO1xuICAgIHRoaXMuYW5hbHlzZXJOb2RlLm1heERlY2liZWxzID0gYW5hbHlzZXJDb25maWcubWF4RGVjaWJlbHM7XG4gICAgdGhpcy5hbmFseXNlck5vZGUubWluRGVjaWJlbHMgPSBhbmFseXNlckNvbmZpZy5taW5EZWNpYmVscztcblxuICAgIHRoaXMubWljcm9waG9uZSA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHRoaXMuc3RyZWFtKTtcbiAgICB0aGlzLm1pY3JvcGhvbmUuY29ubmVjdCh0aGlzLmFuYWx5c2VyTm9kZSk7XG4gIH1cblxuICBwcml2YXRlIGxvZ0Vycm9yKGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMuY2hhdFNlcnZpY2UuY2hhdENsaWVudD8ubG9nZ2VyKCdlcnJvcicsIGVycm9yLm1lc3NhZ2UsIHtcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgIHRhZzogWydBbXBsaXR1ZGVSZWNvcmRlclNlcnZpY2UnXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,79 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { isSafari } from '../is-safari';
3
+ import { MultimediaRecorder } from './media-recorder';
4
+ import { resampleWaveForm } from '../wave-form-sampler';
5
+ import { NgModel } from '@angular/forms';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../notification.service";
8
+ import * as i2 from "../chat-client.service";
9
+ import * as i3 from "./transcoder.service";
10
+ import * as i4 from "./amplitude-recorder.service";
11
+ /**
12
+ * The `AudioRecorderService` can record an audio file, the SDK uses this to record a voice message
13
+ */
14
+ export class AudioRecorderService extends MultimediaRecorder {
15
+ constructor(notificationService, chatService, transcoder, amplitudeRecorder) {
16
+ super(notificationService, chatService, transcoder);
17
+ this.amplitudeRecorder = amplitudeRecorder;
18
+ /**
19
+ * Due to browser restrictions the following config is used:
20
+ * - In Safari we record in audio/mp4
21
+ * - For all other browsers we use audio/webm (which is then transcoded to wav)
22
+ */
23
+ this.config = {
24
+ mimeType: isSafari ? 'audio/mp4;codecs=mp4a.40.2' : 'audio/webm',
25
+ };
26
+ }
27
+ enrichWithExtraData() {
28
+ const waveformData = resampleWaveForm(this.amplitudeRecorder.amplitudes, this.amplitudeRecorder.config.sampleCount);
29
+ return { waveform_data: waveformData };
30
+ }
31
+ /**
32
+ * Start audio recording
33
+ */
34
+ async start() {
35
+ const result = await super.start();
36
+ if (this.mediaRecorder?.stream) {
37
+ this.amplitudeRecorder.start(this.mediaRecorder?.stream);
38
+ }
39
+ return result;
40
+ }
41
+ /**
42
+ * Pause audio recording, it can be restarted using `resume`
43
+ */
44
+ pause() {
45
+ const result = super.pause();
46
+ this.amplitudeRecorder.pause();
47
+ return result;
48
+ }
49
+ /**
50
+ * Resume a previously paused recording
51
+ */
52
+ resume() {
53
+ const result = super.resume();
54
+ this.amplitudeRecorder.resume();
55
+ return result;
56
+ }
57
+ /**
58
+ * Stop the recording and free up used resources
59
+ * @param options
60
+ * @param options.cancel if this is `true` no recording will be created, but resources will be freed
61
+ * @returns the recording
62
+ */
63
+ async stop(options) {
64
+ try {
65
+ const result = await super.stop(options);
66
+ return result;
67
+ }
68
+ finally {
69
+ this.amplitudeRecorder.stop();
70
+ }
71
+ }
72
+ }
73
+ AudioRecorderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AudioRecorderService, deps: [{ token: i1.NotificationService }, { token: i2.ChatClientService }, { token: i3.TranscoderService }, { token: i4.AmplitudeRecorderService }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ AudioRecorderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AudioRecorderService, providedIn: NgModel });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AudioRecorderService, decorators: [{
76
+ type: Injectable,
77
+ args: [{ providedIn: NgModel }]
78
+ }], ctorParameters: function () { return [{ type: i1.NotificationService }, { type: i2.ChatClientService }, { type: i3.TranscoderService }, { type: i4.AmplitudeRecorderService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tcmVjb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRlci9hdWRpby1yZWNvcmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQXVCLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFFekM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBRXpDO0lBVUMsWUFDRSxtQkFBd0MsRUFDeEMsV0FBOEIsRUFDOUIsVUFBNkIsRUFDckIsaUJBQTJDO1FBRW5ELEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFGNUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQWJyRDs7OztXQUlHO1FBQ0gsV0FBTSxHQUF3QjtZQUM1QixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsWUFBWTtTQUNqRSxDQUFDO0lBU0YsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQzFDLENBQUM7UUFFRixPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDMUQ7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQTZCO1FBQ3RDLElBQUk7WUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFekMsT0FBTyxNQUFNLENBQUM7U0FDZjtnQkFBUztZQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7O2lIQS9FVSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQURQLE9BQU87MkZBQ3BCLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbXBsaXR1ZGVSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuL2FtcGxpdHVkZS1yZWNvcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vaXMtc2FmYXJpJztcbmltcG9ydCB7IE1lZGlhUmVjb3JkZXJDb25maWcsIE11bHRpbWVkaWFSZWNvcmRlciB9IGZyb20gJy4vbWVkaWEtcmVjb3JkZXInO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2NvZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNjb2Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IHJlc2FtcGxlV2F2ZUZvcm0gfSBmcm9tICcuLi93YXZlLWZvcm0tc2FtcGxlcic7XG5pbXBvcnQgeyBBdWRpb1JlY29yZGluZywgTWVkaWFSZWNvcmRpbmcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIFRoZSBgQXVkaW9SZWNvcmRlclNlcnZpY2VgIGNhbiByZWNvcmQgYW4gYXVkaW8gZmlsZSwgdGhlIFNESyB1c2VzIHRoaXMgdG8gcmVjb3JkIGEgdm9pY2UgbWVzc2FnZVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IE5nTW9kZWwgfSlcbmV4cG9ydCBjbGFzcyBBdWRpb1JlY29yZGVyU2VydmljZSBleHRlbmRzIE11bHRpbWVkaWFSZWNvcmRlcjxcbiAgT21pdDxBdWRpb1JlY29yZGluZywga2V5b2YgTWVkaWFSZWNvcmRpbmc+XG4+IHtcbiAgLyoqXG4gICAqIER1ZSB0byBicm93c2VyIHJlc3RyaWN0aW9ucyB0aGUgZm9sbG93aW5nIGNvbmZpZyBpcyB1c2VkOlxuICAgKiAtIEluIFNhZmFyaSB3ZSByZWNvcmQgaW4gYXVkaW8vbXA0XG4gICAqIC0gRm9yIGFsbCBvdGhlciBicm93c2VycyB3ZSB1c2UgYXVkaW8vd2VibSAod2hpY2ggaXMgdGhlbiB0cmFuc2NvZGVkIHRvIHdhdilcbiAgICovXG4gIGNvbmZpZzogTWVkaWFSZWNvcmRlckNvbmZpZyA9IHtcbiAgICBtaW1lVHlwZTogaXNTYWZhcmkgPyAnYXVkaW8vbXA0O2NvZGVjcz1tcDRhLjQwLjInIDogJ2F1ZGlvL3dlYm0nLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgY2hhdFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHRyYW5zY29kZXI6IFRyYW5zY29kZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW1wbGl0dWRlUmVjb3JkZXI6IEFtcGxpdHVkZVJlY29yZGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihub3RpZmljYXRpb25TZXJ2aWNlLCBjaGF0U2VydmljZSwgdHJhbnNjb2Rlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5yaWNoV2l0aEV4dHJhRGF0YSgpIHtcbiAgICBjb25zdCB3YXZlZm9ybURhdGEgPSByZXNhbXBsZVdhdmVGb3JtKFxuICAgICAgdGhpcy5hbXBsaXR1ZGVSZWNvcmRlci5hbXBsaXR1ZGVzLFxuICAgICAgdGhpcy5hbXBsaXR1ZGVSZWNvcmRlci5jb25maWcuc2FtcGxlQ291bnRcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgd2F2ZWZvcm1fZGF0YTogd2F2ZWZvcm1EYXRhIH07XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYXVkaW8gcmVjb3JkaW5nXG4gICAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzdXBlci5zdGFydCgpO1xuXG4gICAgaWYgKHRoaXMubWVkaWFSZWNvcmRlcj8uc3RyZWFtKSB7XG4gICAgICB0aGlzLmFtcGxpdHVkZVJlY29yZGVyLnN0YXJ0KHRoaXMubWVkaWFSZWNvcmRlcj8uc3RyZWFtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIGF1ZGlvIHJlY29yZGluZywgaXQgY2FuIGJlIHJlc3RhcnRlZCB1c2luZyBgcmVzdW1lYFxuICAgKi9cbiAgcGF1c2UoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VwZXIucGF1c2UoKTtcblxuICAgIHRoaXMuYW1wbGl0dWRlUmVjb3JkZXIucGF1c2UoKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzdW1lIGEgcHJldmlvdXNseSBwYXVzZWQgcmVjb3JkaW5nXG4gICAqL1xuICByZXN1bWUoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VwZXIucmVzdW1lKCk7XG5cbiAgICB0aGlzLmFtcGxpdHVkZVJlY29yZGVyLnJlc3VtZSgpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSByZWNvcmRpbmcgYW5kIGZyZWUgdXAgdXNlZCByZXNvdXJjZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMuY2FuY2VsIGlmIHRoaXMgaXMgYHRydWVgIG5vIHJlY29yZGluZyB3aWxsIGJlIGNyZWF0ZWQsIGJ1dCByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZFxuICAgKiBAcmV0dXJucyB0aGUgcmVjb3JkaW5nXG4gICAqL1xuICBhc3luYyBzdG9wKG9wdGlvbnM/OiB7IGNhbmNlbDogYm9vbGVhbiB9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLnN0b3Aob3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYW1wbGl0dWRlUmVjb3JkZXIuc3RvcCgpO1xuICAgIH1cbiAgfVxufVxuIl19