@elderbyte/ngx-starter 17.6.3 → 17.7.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 (24) hide show
  1. package/esm2022/lib/common/data/field-comparator.mjs +11 -2
  2. package/esm2022/lib/features/event-source/fetch/public_api.mjs +3 -0
  3. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +212 -0
  4. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +53 -0
  5. package/esm2022/lib/features/event-source/public_api.mjs +3 -3
  6. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +56 -0
  7. package/esm2022/lib/features/event-source/standard/public_api.mjs +3 -0
  8. package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +198 -0
  9. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +2 -2
  10. package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +1 -1
  11. package/fesm2022/elderbyte-ngx-starter.mjs +271 -4
  12. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  13. package/lib/features/event-source/fetch/public_api.d.ts +2 -0
  14. package/lib/features/event-source/fetch/reactive-fetch-event-source.d.ts +108 -0
  15. package/lib/features/event-source/fetch/reactive-fetch-event-source.service.d.ts +39 -0
  16. package/lib/features/event-source/public_api.d.ts +2 -2
  17. package/lib/features/event-source/standard/public_api.d.ts +2 -0
  18. package/lib/features/kafent/sse/kafent-event-stream-sse.service.d.ts +1 -1
  19. package/lib/features/kafent/sse/kafent-topic-sse.d.ts +1 -1
  20. package/package.json +3 -2
  21. package/esm2022/lib/features/event-source/elder-event-source.service.mjs +0 -56
  22. package/esm2022/lib/features/event-source/reactive-event-source.mjs +0 -198
  23. /package/lib/features/event-source/{elder-event-source.service.d.ts → standard/elder-event-source.service.d.ts} +0 -0
  24. /package/lib/features/event-source/{reactive-event-source.d.ts → standard/reactive-event-source.d.ts} +0 -0
@@ -0,0 +1,198 @@
1
+ import { Subject } from 'rxjs';
2
+ import { LoggerFactory } from '@elderbyte/ts-logger';
3
+ import { map } from 'rxjs/operators';
4
+ /**
5
+ * This class provides a reactive wrapper around an event source.
6
+ *
7
+ * It supports event type filtering out of the box and manages the registrations.
8
+ *
9
+ * Additionally, it also handles reconnects since the default reconect handling by browsers
10
+ * is not working in a lot of cases (5xx errors etc).
11
+ *
12
+ */
13
+ export class ReactiveEventSource {
14
+ /***************************************************************************
15
+ * *
16
+ * Static Builder *
17
+ * *
18
+ **************************************************************************/
19
+ static staticUrl(zone, eventSourceUrl, eventSourceInitDict) {
20
+ if (!eventSourceUrl) {
21
+ throw new Error('You must provide a event source url!');
22
+ }
23
+ return new ReactiveEventSource(zone, () => eventSourceUrl, eventSourceInitDict);
24
+ }
25
+ static dynamicUrl(zone, eventSourceUrlProvider, eventSourceInitDict) {
26
+ return new ReactiveEventSource(zone, eventSourceUrlProvider, eventSourceInitDict);
27
+ }
28
+ /***************************************************************************
29
+ * *
30
+ * Constructor *
31
+ * *
32
+ **************************************************************************/
33
+ constructor(zone, eventSourceUrlProvider, eventSourceInitDict) {
34
+ this.zone = zone;
35
+ this.eventSourceUrlProvider = eventSourceUrlProvider;
36
+ this.eventSourceInitDict = eventSourceInitDict;
37
+ /***************************************************************************
38
+ * *
39
+ * Fields *
40
+ * *
41
+ **************************************************************************/
42
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
43
+ this.eventTopics = new Map();
44
+ this.currentListeners = new Set();
45
+ if (!eventSourceUrlProvider) {
46
+ throw new Error('You must provide a event source url provider!');
47
+ }
48
+ this.open();
49
+ }
50
+ /***************************************************************************
51
+ * *
52
+ * Properties *
53
+ * *
54
+ **************************************************************************/
55
+ get closed() {
56
+ return this._closed;
57
+ }
58
+ /***************************************************************************
59
+ * *
60
+ * Public API *
61
+ * *
62
+ **************************************************************************/
63
+ /**
64
+ * Open the event source.
65
+ *
66
+ * Note: The connection is opened automatically upon object creation.
67
+ * This method should only be used if this reactive-event-source has
68
+ * been closed explicitly.
69
+ */
70
+ open() {
71
+ this._closed = false;
72
+ this.reconnect();
73
+ }
74
+ /**
75
+ * Get an event stream for the given event type.
76
+ * @param eventType The event type. Defaults to 'message'.
77
+ */
78
+ events(eventType = 'message') {
79
+ if (!this.eventTopics.has(eventType)) {
80
+ this.eventTopics.set(eventType, new Subject());
81
+ this.ensureRegistrations();
82
+ }
83
+ const eventSubj = this.eventTopics.get(eventType);
84
+ return eventSubj.asObservable();
85
+ }
86
+ /**
87
+ * Get an event stream of messages parsed from json.
88
+ * (event.data must be in json format)
89
+ *
90
+ * @param eventType The event type. Defaults to 'message'.
91
+ */
92
+ eventsJson(eventType = 'message') {
93
+ return this.events(eventType).pipe(map(event => JSON.parse(event.data)));
94
+ }
95
+ /**
96
+ * Close this event source. It wont reconnect.
97
+ */
98
+ close() {
99
+ this._closed = true;
100
+ this.closeCurrent();
101
+ this.logger.debug('Closing the event-source.');
102
+ }
103
+ /**
104
+ * Keeps this reactive event source open until the given observable emits an event.
105
+ * @param unsubscribe
106
+ */
107
+ openUntil(unsubscribe) {
108
+ this.cleanUpOpenUntil();
109
+ this._unsubscribeSub = unsubscribe
110
+ .subscribe(() => this.close());
111
+ return this;
112
+ }
113
+ /***************************************************************************
114
+ * *
115
+ * Private methods *
116
+ * *
117
+ **************************************************************************/
118
+ cleanUpOpenUntil() {
119
+ if (this._unsubscribeSub) {
120
+ this._unsubscribeSub.unsubscribe();
121
+ this._unsubscribeSub = null;
122
+ }
123
+ }
124
+ /**
125
+ * Reconnects this event source, unless closed is true;
126
+ */
127
+ reconnect() {
128
+ if (this._closed) {
129
+ return;
130
+ }
131
+ this.closeCurrent();
132
+ const eventSourceUrl = this.eventSourceUrlProvider();
133
+ try {
134
+ this.currentSource = new EventSource(eventSourceUrl, this.eventSourceInitDict);
135
+ this.ensureRegistrations();
136
+ this.currentSource.onopen = (event) => {
137
+ this.logger.debug('EventSource connection opened to: ' + eventSourceUrl +
138
+ ', state: ' + this.readyStateAsString(this.currentSource), event);
139
+ };
140
+ this.currentSource.onerror = (error) => {
141
+ this.logger.trace('There was an SSE error, current state: ' + this.readyStateAsString(this.currentSource), error);
142
+ if (!this.closed) {
143
+ // There was an error - try reconnecting
144
+ this.logger.debug('Attempting to reconnect event-source at' + eventSourceUrl + '...');
145
+ setTimeout(() => this.reconnect(), 3000); // Delay the reconnect
146
+ }
147
+ else {
148
+ this.logger.debug('There was an error in the sse connection (closed).', error);
149
+ }
150
+ };
151
+ }
152
+ catch (err) {
153
+ this.logger.error('Failed to create EventSource for ' + eventSourceUrl, err);
154
+ setTimeout(() => this.reconnect(), 3000); // Delay the reconnect
155
+ }
156
+ }
157
+ ensureRegistrations() {
158
+ if (this.currentSource) {
159
+ this.eventTopics.forEach((subject, type) => {
160
+ if (!this.currentListeners.has(type)) {
161
+ this.currentSource.addEventListener(type, msg => subject.next(msg), false);
162
+ this.currentListeners.add(type);
163
+ this.logger.debug('Listening to event type: ' + type);
164
+ }
165
+ });
166
+ }
167
+ }
168
+ /**
169
+ * Close the current event source
170
+ */
171
+ closeCurrent() {
172
+ this.currentListeners.clear();
173
+ if (!this.currentClosed) {
174
+ // Close Event Source if not already closed.
175
+ this.logger.debug('Closing the event-source.');
176
+ this.currentSource.close();
177
+ this.currentSource = null;
178
+ }
179
+ }
180
+ get currentClosed() {
181
+ return !this.currentSource || this.currentSource.readyState === this.currentSource.CLOSED;
182
+ }
183
+ readyStateAsString(source) {
184
+ if (source.readyState === source.OPEN) {
185
+ return 'OPEN';
186
+ }
187
+ else if (source.readyState === source.CLOSED) {
188
+ return 'CLOSED';
189
+ }
190
+ else if (source.readyState === source.CONNECTING) {
191
+ return 'CONNECTING';
192
+ }
193
+ else {
194
+ return 'UNKNOWN';
195
+ }
196
+ }
197
+ }
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtZXZlbnQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvZmVhdHVyZXMvZXZlbnQtc291cmNlL3N0YW5kYXJkL3JlYWN0aXZlLWV2ZW50LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI5Qjs7OztnRkFJNEU7SUFFckUsTUFBTSxDQUFDLFNBQVMsQ0FDckIsSUFBWSxFQUNaLGNBQXNCLEVBQ3RCLG1CQUFxQztRQUdyQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUN6RDtRQUNELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLElBQVksRUFDWixzQkFBb0MsRUFDcEMsbUJBQXFDO1FBRXJDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLElBQVksRUFDckIsc0JBQW9DLEVBQ3BDLG1CQUFxQztRQUY1QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ3JCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBYztRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENB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QU0sRUFBRTtZQUM5QyxPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ2xELE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Tmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgcmVhY3RpdmUgd3JhcHBlciBhcm91bmQgYW4gZXZlbnQgc291cmNlLlxuICpcbiAqIEl0IHN1cHBvcnRzIGV2ZW50IHR5cGUgZmlsdGVyaW5nIG91dCBvZiB0aGUgYm94IGFuZCBtYW5hZ2VzIHRoZSByZWdpc3RyYXRpb25zLlxuICpcbiAqIEFkZGl0aW9uYWxseSwgaXQgYWxzbyBoYW5kbGVzIHJlY29ubmVjdHMgc2luY2UgdGhlIGRlZmF1bHQgcmVjb25lY3QgaGFuZGxpbmcgYnkgYnJvd3NlcnNcbiAqIGlzIG5vdCB3b3JraW5nIGluIGEgbG90IG9mIGNhc2VzICg1eHggZXJyb3JzIGV0YykuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RpdmVFdmVudFNvdXJjZTxUID0gYW55PiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRUb3BpY3MgPSBuZXcgTWFwPHN0cmluZywgU3ViamVjdDxNZXNzYWdlRXZlbnQ+PigpO1xuXG4gIHByaXZhdGUgY3VycmVudFNvdXJjZTogRXZlbnRTb3VyY2U7XG4gIHByaXZhdGUgY3VycmVudExpc3RlbmVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgX2Nsb3NlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIF91bnN1YnNjcmliZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGF0aWMgc3RhdGljVXJsPFQ+KFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBldmVudFNvdXJjZVVybDogc3RyaW5nLFxuICAgIGV2ZW50U291cmNlSW5pdERpY3Q/OiBFdmVudFNvdXJjZUluaXRcbiAgKTogUmVhY3RpdmVFdmVudFNvdXJjZTxUPiB7XG5cbiAgICBpZiAoIWV2ZW50U291cmNlVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYSBldmVudCBzb3VyY2UgdXJsIScpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlYWN0aXZlRXZlbnRTb3VyY2Uoem9uZSwgKCkgPT4gZXZlbnRTb3VyY2VVcmwsIGV2ZW50U291cmNlSW5pdERpY3QpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkeW5hbWljVXJsPFQ+KFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBldmVudFNvdXJjZVVybFByb3ZpZGVyOiAoKSA9PiBzdHJpbmcsXG4gICAgZXZlbnRTb3VyY2VJbml0RGljdD86IEV2ZW50U291cmNlSW5pdFxuICApOiBSZWFjdGl2ZUV2ZW50U291cmNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFJlYWN0aXZlRXZlbnRTb3VyY2Uoem9uZSwgZXZlbnRTb3VyY2VVcmxQcm92aWRlciwgZXZlbnRTb3VyY2VJbml0RGljdCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZXZlbnRTb3VyY2VVcmxQcm92aWRlcjogKCkgPT4gc3RyaW5nLFxuICAgIHByaXZhdGUgZXZlbnRTb3VyY2VJbml0RGljdD86IEV2ZW50U291cmNlSW5pdFxuICApIHtcbiAgICBpZiAoIWV2ZW50U291cmNlVXJsUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGV2ZW50IHNvdXJjZSB1cmwgcHJvdmlkZXIhJyk7XG4gICAgfVxuICAgIHRoaXMub3BlbigpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBjbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBldmVudCBzb3VyY2UuXG4gICAqXG4gICAqIE5vdGU6IFRoZSBjb25uZWN0aW9uIGlzIG9wZW5lZCBhdXRvbWF0aWNhbGx5IHVwb24gb2JqZWN0IGNyZWF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoaXMgcmVhY3RpdmUtZXZlbnQtc291cmNlIGhhc1xuICAgKiBiZWVuIGNsb3NlZCBleHBsaWNpdGx5LlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5yZWNvbm5lY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZlbnQgc3RyZWFtIGZvciB0aGUgZ2l2ZW4gZXZlbnQgdHlwZS5cbiAgICogQHBhcmFtIGV2ZW50VHlwZSBUaGUgZXZlbnQgdHlwZS4gRGVmYXVsdHMgdG8gJ21lc3NhZ2UnLlxuICAgKi9cbiAgcHVibGljIGV2ZW50cyhldmVudFR5cGU6IHN0cmluZyA9ICdtZXNzYWdlJyk6IE9ic2VydmFibGU8TWVzc2FnZUV2ZW50PiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50VG9waWNzLmhhcyhldmVudFR5cGUpKSB7XG4gICAgICB0aGlzLmV2ZW50VG9waWNzLnNldChldmVudFR5cGUsIG5ldyBTdWJqZWN0PE1lc3NhZ2VFdmVudD4oKSk7XG4gICAgICB0aGlzLmVuc3VyZVJlZ2lzdHJhdGlvbnMoKTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnRTdWJqID0gdGhpcy5ldmVudFRvcGljcy5nZXQoZXZlbnRUeXBlKTtcbiAgICByZXR1cm4gZXZlbnRTdWJqLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBldmVudCBzdHJlYW0gb2YgbWVzc2FnZXMgcGFyc2VkIGZyb20ganNvbi5cbiAgICogKGV2ZW50LmRhdGEgbXVzdCBiZSBpbiBqc29uIGZvcm1hdClcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50VHlwZSBUaGUgZXZlbnQgdHlwZS4gRGVmYXVsdHMgdG8gJ21lc3NhZ2UnLlxuICAgKi9cbiAgcHVibGljIGV2ZW50c0pzb24oZXZlbnRUeXBlOiBzdHJpbmcgPSAnbWVzc2FnZScpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMoZXZlbnRUeXBlKS5waXBlKFxuICAgICAgbWFwKGV2ZW50ID0+IEpTT04ucGFyc2UoZXZlbnQuZGF0YSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGlzIGV2ZW50IHNvdXJjZS4gSXQgd29udCByZWNvbm5lY3QuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNsb3NlQ3VycmVudCgpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDbG9zaW5nIHRoZSBldmVudC1zb3VyY2UuJyk7XG4gIH1cblxuICAvKipcbiAgICogS2VlcHMgdGhpcyByZWFjdGl2ZSBldmVudCBzb3VyY2Ugb3BlbiB1bnRpbCB0aGUgZ2l2ZW4gb2JzZXJ2YWJsZSBlbWl0cyBhbiBldmVudC5cbiAgICogQHBhcmFtIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwdWJsaWMgb3BlblVudGlsKHVuc3Vic2NyaWJlOiBPYnNlcnZhYmxlPGFueT4pOiB0aGlzIHtcbiAgICB0aGlzLmNsZWFuVXBPcGVuVW50aWwoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZVN1YiA9IHVuc3Vic2NyaWJlXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3NlKClcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNsZWFuVXBPcGVuVW50aWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Vuc3Vic2NyaWJlU3ViKSB7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fdW5zdWJzY3JpYmVTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbm5lY3RzIHRoaXMgZXZlbnQgc291cmNlLCB1bmxlc3MgY2xvc2VkIGlzIHRydWU7XG4gICAqL1xuICBwcml2YXRlIHJlY29ubmVjdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLl9jbG9zZWQpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLmNsb3NlQ3VycmVudCgpO1xuXG4gICAgY29uc3QgZXZlbnRTb3VyY2VVcmwgPSB0aGlzLmV2ZW50U291cmNlVXJsUHJvdmlkZXIoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoZXZlbnRTb3VyY2VVcmwsIHRoaXMuZXZlbnRTb3VyY2VJbml0RGljdCk7XG5cbiAgICAgIHRoaXMuZW5zdXJlUmVnaXN0cmF0aW9ucygpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRTb3VyY2Uub25vcGVuID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdFdmVudFNvdXJjZSBjb25uZWN0aW9uIG9wZW5lZCB0bzogJyArIGV2ZW50U291cmNlVXJsICtcbiAgICAgICAgICAnLCBzdGF0ZTogJyArIHRoaXMucmVhZHlTdGF0ZUFzU3RyaW5nKHRoaXMuY3VycmVudFNvdXJjZSksIGV2ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY3VycmVudFNvdXJjZS5vbmVycm9yID0gKGVycm9yKSA9PiB7XG5cbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoJ1RoZXJlIHdhcyBhbiBTU0UgZXJyb3IsIGN1cnJlbnQgc3RhdGU6ICcgKyB0aGlzLnJlYWR5U3RhdGVBc1N0cmluZyh0aGlzLmN1cnJlbnRTb3VyY2UpLCBlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgIC8vIFRoZXJlIHdhcyBhbiBlcnJvciAtIHRyeSByZWNvbm5lY3RpbmdcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQXR0ZW1wdGluZyB0byByZWNvbm5lY3QgZXZlbnQtc291cmNlIGF0JyArIGV2ZW50U291cmNlVXJsICsgJy4uLicpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZWNvbm5lY3QoKSwgMzAwMCk7IC8vIERlbGF5IHRoZSByZWNvbm5lY3RcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnVGhlcmUgd2FzIGFuIGVycm9yIGluIHRoZSBzc2UgY29ubmVjdGlvbiAoY2xvc2VkKS4nLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIEV2ZW50U291cmNlIGZvciAnICsgZXZlbnRTb3VyY2VVcmwsIGVycik7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVjb25uZWN0KCksIDMwMDApOyAvLyBEZWxheSB0aGUgcmVjb25uZWN0XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVSZWdpc3RyYXRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3VyY2UpIHtcbiAgICAgIHRoaXMuZXZlbnRUb3BpY3MuZm9yRWFjaCgoc3ViamVjdCwgdHlwZSkgPT4ge1xuXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TGlzdGVuZXJzLmhhcyh0eXBlKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIG1zZyA9PiBzdWJqZWN0Lm5leHQobXNnIGFzIE1lc3NhZ2VFdmVudCksXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TGlzdGVuZXJzLmFkZCh0eXBlKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTGlzdGVuaW5nIHRvIGV2ZW50IHR5cGU6ICcgKyB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBjdXJyZW50IGV2ZW50IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBjbG9zZUN1cnJlbnQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmN1cnJlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcblxuICAgIGlmICghdGhpcy5jdXJyZW50Q2xvc2VkKSB7XG4gICAgICAvLyBDbG9zZSBFdmVudCBTb3VyY2UgaWYgbm90IGFscmVhZHkgY2xvc2VkLlxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0Nsb3NpbmcgdGhlIGV2ZW50LXNvdXJjZS4nKTtcbiAgICAgIHRoaXMuY3VycmVudFNvdXJjZS5jbG9zZSgpO1xuICAgICAgdGhpcy5jdXJyZW50U291cmNlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBjdXJyZW50Q2xvc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jdXJyZW50U291cmNlIHx8IHRoaXMuY3VycmVudFNvdXJjZS5yZWFkeVN0YXRlID09PSB0aGlzLmN1cnJlbnRTb3VyY2UuQ0xPU0VEO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkeVN0YXRlQXNTdHJpbmcoc291cmNlOiBFdmVudFNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKHNvdXJjZS5yZWFkeVN0YXRlID09PSBzb3VyY2UuT1BFTikge1xuICAgICAgcmV0dXJuICdPUEVOJztcbiAgICB9IGVsc2UgaWYgKHNvdXJjZS5yZWFkeVN0YXRlID09PSBzb3VyY2UuQ0xPU0VEKSB7XG4gICAgICByZXR1cm4gJ0NMT1NFRCc7XG4gICAgfSBlbHNlIGlmIChzb3VyY2UucmVhZHlTdGF0ZSA9PT0gc291cmNlLkNPTk5FQ1RJTkcpIHtcbiAgICAgIHJldHVybiAnQ09OTkVDVElORyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnVU5LTk9XTic7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -7,7 +7,7 @@ import { LoggerFactory } from '@elderbyte/ts-logger';
7
7
  import { KafentEventStream } from '../kafent-event-stream';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "../kafent-config";
10
- import * as i2 from "../../event-source/elder-event-source.service";
10
+ import * as i2 from "../../event-source/standard/elder-event-source.service";
11
11
  import * as i3 from "../access-token-provider";
12
12
  export class KafentSseEventChannel {
13
13
  constructor(request, eventChannelSub) {
@@ -125,4 +125,4 @@ export class KafentEventStreamSse extends KafentEventStream {
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: KafentEventStreamSse, decorators: [{
126
126
  type: Injectable
127
127
  }], ctorParameters: () => [{ type: i1.KafentConfig }, { type: i2.ElderEventSourceService }, { type: i3.KafentTokenProvider }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FmZW50LWV2ZW50LXN0cmVhbS1zc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2ZlYXR1cmVzL2thZmVudC9zc2Uva2FmZW50LWV2ZW50LXN0cmVhbS1zc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFJbEQsT0FBTyxFQUFlLG9CQUFvQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHcEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHekQsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxZQUNrQixPQUErQixFQUMvQixlQUErQjtRQUQvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFFL0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdNLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBK0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFlekQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE1BQW9CLEVBQ3BCLGtCQUEyQyxFQUMzQyxhQUFr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QzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscURBQXFELEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxZQUE4QztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDOzhHQWxJVSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7S2FmZW50VG9waWNTc2V9IGZyb20gJy4va2FmZW50LXRvcGljLXNzZSc7XG5pbXBvcnQge0thZmVudEV2ZW50fSBmcm9tICcuLi9rYWZlbnQtZXZlbnQnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7S2FmZW50VG9rZW5Qcm92aWRlcn0gZnJvbSAnLi4vYWNjZXNzLXRva2VuLXByb3ZpZGVyJztcbmltcG9ydCB7S2FmZW50Q29uZmlnLCBLYWZlbnRFdmVudFRyYW5zcG9ydH0gZnJvbSAnLi4va2FmZW50LWNvbmZpZyc7XG5pbXBvcnQge1JlYWN0aXZlRXZlbnRTb3VyY2V9IGZyb20gJy4uLy4uL2V2ZW50LXNvdXJjZS9yZWFjdGl2ZS1ldmVudC1zb3VyY2UnO1xuaW1wb3J0IHtFbGRlckV2ZW50U291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vZXZlbnQtc291cmNlL2VsZGVyLWV2ZW50LXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7VXJsQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL3VybC1idWlsZGVyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0thZmVudExpdmVFdmVudFJlcXVlc3R9IGZyb20gJy4uL2thZmVudC1saXZlLWV2ZW50LXJlcXVlc3QnO1xuaW1wb3J0IHtza2lwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7S2FmZW50RXZlbnRTdHJlYW19IGZyb20gJy4uL2thZmVudC1ldmVudC1zdHJlYW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBLYWZlbnRTc2VFdmVudENoYW5uZWwge1xuXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0OiBLYWZlbnRMaXZlRXZlbnRSZXF1ZXN0LFxuICAgIHB1YmxpYyByZWFkb25seSBldmVudENoYW5uZWxTdWI6IEthZmVudFRvcGljU3NlXG4gICkge1xuICAgIHRoaXMuaWQgPSBLYWZlbnRTc2VFdmVudENoYW5uZWwuaGFzaChyZXF1ZXN0KTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBoYXNoKHJlcXVlc3Q6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLYWZlbnRFdmVudFN0cmVhbVNzZSBleHRlbmRzIEthZmVudEV2ZW50U3RyZWFtIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdLYWZlbnRFdmVudFNlcnZpY2VTc2UnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZUV2ZW50Q2hhbm5lbHMgPSBuZXcgTWFwPHN0cmluZywgS2FmZW50U3NlRXZlbnRDaGFubmVsPigpO1xuICBwcml2YXRlIGthZmVudFNvdXJjZTogUmVhY3RpdmVFdmVudFNvdXJjZTxLYWZlbnRFdmVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoVG9rZW5QYXJhbTogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBLYWZlbnRDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudFNvdXJjZVNlcnZpY2U6IEVsZGVyRXZlbnRTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5Qcm92aWRlcjogS2FmZW50VG9rZW5Qcm92aWRlclxuICApIHtcbiAgICBzdXBlcihLYWZlbnRFdmVudFRyYW5zcG9ydC5TU0UpO1xuICAgIHRoaXMuYXV0aFRva2VuUGFyYW0gPSB0aGlzLmNvbmZpZy50b2tlblBhcmFtIHx8ICdhY2Nlc3NfdG9rZW4nO1xuXG4gICAgdGhpcy5sb2dnZXIuaW5mbygnSW5pdGlhbGl6ZWQgS2FmZW50RXZlbnRTdHJlYW1Tc2Ugd2l0aCBhdXRoLXRva2VuIHBhcmFtOiAnICsgdGhpcy5hdXRoVG9rZW5QYXJhbSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0TGl2ZUV2ZW50c1dpdGgodG9waWM6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PiB7XG4gICAgY29uc3Qga2FmZW50Q2hhbm5lbCA9IHRoaXMua2FmZW50RXZlbnRDaGFubmVsKHRvcGljKTtcbiAgICByZXR1cm4ga2FmZW50Q2hhbm5lbC5ldmVudENoYW5uZWxTdWIuZXZlbnRzO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBrYWZlbnRFdmVudENoYW5uZWwocmVxdWVzdDogS2FmZW50TGl2ZUV2ZW50UmVxdWVzdCk6IEthZmVudFNzZUV2ZW50Q2hhbm5lbCB7XG4gICAgY29uc3QgY2hhbm5lbElkID0gS2FmZW50U3NlRXZlbnRDaGFubmVsLmhhc2gocmVxdWVzdCk7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUV2ZW50Q2hhbm5lbHMuaGFzKGNoYW5uZWxJZCkpIHtcbiAgICAgIHRoaXMuYWN0aXZlRXZlbnRDaGFubmVscy5zZXQoY2hhbm5lbElkLCB0aGlzLmNyZWF0ZUthZmVudENoYW5uZWwocmVxdWVzdCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmdldChjaGFubmVsSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVLYWZlbnRDaGFubmVsKHJlcXVlc3Q6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBLYWZlbnRTc2VFdmVudENoYW5uZWwge1xuICAgIGNvbnN0IGt0b3BpYyA9IG5ldyBLYWZlbnRUb3BpY1NzZShyZXF1ZXN0LnRvcGljKTtcbiAgICBjb25zdCBjaGFubmVsID0gbmV3IEthZmVudFNzZUV2ZW50Q2hhbm5lbChyZXF1ZXN0LCBrdG9waWMpO1xuXG5cbiAgICBjb25zdCBzdWIgPSBrdG9waWMuY29ubmVjdGVkQ291bnQucGlwZShcbiAgICAgIHNraXAoMSkgLy8gU2tpcCBpbml0aWFsIGJlaGF2aW91ci1zdWJqZWN0IHZhbHVlXG4gICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgIGNvbm5lY3RlZCA9PiB7XG4gICAgICAgIGlmIChjb25uZWN0ZWQgPT09IDEpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgaGFzIGNvbm5lY3RlZFxuICAgICAgICAgIHRoaXMudXBkYXRlS2FmZW50U3NlU3ViKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbm5lY3RlZCA9PT0gMCkge1xuICAgICAgICAgIC8vIElmIHRoZSBsYXN0IGhhcyBkaXNjb25uZWN0ZWRcbiAgICAgICAgICAvLyBTZWxmIGRlY29uc3RydWN0XG4gICAgICAgICAgdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmRlbGV0ZShjaGFubmVsLmlkKTtcbiAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUthZmVudFNzZVN1YigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gY2hhbm5lbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlS2FmZW50U3NlU3ViKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJTb3VyY2UoKTtcblxuICAgIGNvbnN0IGNoYW5uZWxzID0gQXJyYXkuZnJvbSh0aGlzLmFjdGl2ZUV2ZW50Q2hhbm5lbHMudmFsdWVzKCkpO1xuXG4gICAgY29uc3QgdXNlZENoYW5uZWxzID0gY2hhbm5lbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5ldmVudENoYW5uZWxTdWIuYW55Q29ubmVjdGVkKTtcblxuICAgIGlmICh1c2VkQ2hhbm5lbHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5rYWZlbnRTb3VyY2UgPSB0aGlzLmJ1aWxkS2FmZW50U291cmNlKHVzZWRDaGFubmVscyk7XG4gICAgICB0aGlzLmNvbm5lY3QodGhpcy5rYWZlbnRTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTb3VyY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2FmZW50U291cmNlKSB7XG4gICAgICB0aGlzLmthZmVudFNvdXJjZS5jbG9zZSgpO1xuICAgICAgdGhpcy5rYWZlbnRTb3VyY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRLYWZlbnRTb3VyY2UoY2hhbm5lbHM6IEthZmVudFNzZUV2ZW50Q2hhbm5lbFtdKTogUmVhY3RpdmVFdmVudFNvdXJjZTxLYWZlbnRFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlU2VydmljZVxuICAgICAgLnJlYWN0aXZlRXZlbnRTb3VyY2VEeW5hbWljKCgpID0+IHRoaXMuYnVpbGRFdmVudFNvdXJjZVVybChjaGFubmVscykpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEV2ZW50U291cmNlVXJsKGNoYW5uZWxzOiBLYWZlbnRTc2VFdmVudENoYW5uZWxbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYiA9IFVybEJ1aWxkZXIucGFyc2UodGhpcy5jb25maWcua2FmZW50VXJsKTtcbiAgICBjaGFubmVsc1xuICAgICAgLm1hcChjID0+IGMucmVxdWVzdClcbiAgICAgIC5mb3JFYWNoKFxuICAgICAgICAocmVxdWVzdCkgPT4gYi5hcHBlbmRQYXJhbSgndG9waWNKc29uJywgYnRvYShKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSkpXG4gICAgICApO1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuUHJvdmlkZXIuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBcHBlbmRpbmcgcGFyYW06ICcgKyB0aGlzLmF1dGhUb2tlblBhcmFtICsgJyB3aXRoIGFjY2Vzc190b2tlbjogJyArIHRva2VuLnN1YnN0cmluZygwLCA1KSArICcuLi4nKTtcbiAgICAgIGIuYXBwZW5kUGFyYW0odGhpcy5hdXRoVG9rZW5QYXJhbSwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBhY2Nlc3NfdG9rZW4gd2FzIHByb3ZpZGVkLCBza2lwcGluZyBhdXRoIHBhcmFtOiAnICsgdGhpcy5hdXRoVG9rZW5QYXJhbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGIuYnVpbGQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29ubmVjdChrYWZlbnRTb3VyY2U6IFJlYWN0aXZlRXZlbnRTb3VyY2U8S2FmZW50RXZlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmZvckVhY2goICh2LCBrKSA9PiB2LmV2ZW50Q2hhbm5lbFN1Yi5jb25uZWN0KGthZmVudFNvdXJjZSkpO1xuICB9XG5cbn1cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FmZW50LWV2ZW50LXN0cmVhbS1zc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2ZlYXR1cmVzL2thZmVudC9zc2Uva2FmZW50LWV2ZW50LXN0cmVhbS1zc2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFJbEQsT0FBTyxFQUFlLG9CQUFvQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHcEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHekQsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxZQUNrQixPQUErQixFQUMvQixlQUErQjtRQUQvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFFL0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdNLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBK0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFlekQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE1BQW9CLEVBQ3BCLGtCQUEyQyxFQUMzQyxhQUFr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QzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscURBQXFELEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxZQUE4QztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDOzhHQWxJVSxvQkFBb0I7a0hBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7S2FmZW50VG9waWNTc2V9IGZyb20gJy4va2FmZW50LXRvcGljLXNzZSc7XG5pbXBvcnQge0thZmVudEV2ZW50fSBmcm9tICcuLi9rYWZlbnQtZXZlbnQnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7S2FmZW50VG9rZW5Qcm92aWRlcn0gZnJvbSAnLi4vYWNjZXNzLXRva2VuLXByb3ZpZGVyJztcbmltcG9ydCB7S2FmZW50Q29uZmlnLCBLYWZlbnRFdmVudFRyYW5zcG9ydH0gZnJvbSAnLi4va2FmZW50LWNvbmZpZyc7XG5pbXBvcnQge1JlYWN0aXZlRXZlbnRTb3VyY2V9IGZyb20gJy4uLy4uL2V2ZW50LXNvdXJjZS9zdGFuZGFyZC9yZWFjdGl2ZS1ldmVudC1zb3VyY2UnO1xuaW1wb3J0IHtFbGRlckV2ZW50U291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vZXZlbnQtc291cmNlL3N0YW5kYXJkL2VsZGVyLWV2ZW50LXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7VXJsQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL3VybC1idWlsZGVyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0thZmVudExpdmVFdmVudFJlcXVlc3R9IGZyb20gJy4uL2thZmVudC1saXZlLWV2ZW50LXJlcXVlc3QnO1xuaW1wb3J0IHtza2lwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7S2FmZW50RXZlbnRTdHJlYW19IGZyb20gJy4uL2thZmVudC1ldmVudC1zdHJlYW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBLYWZlbnRTc2VFdmVudENoYW5uZWwge1xuXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0OiBLYWZlbnRMaXZlRXZlbnRSZXF1ZXN0LFxuICAgIHB1YmxpYyByZWFkb25seSBldmVudENoYW5uZWxTdWI6IEthZmVudFRvcGljU3NlXG4gICkge1xuICAgIHRoaXMuaWQgPSBLYWZlbnRTc2VFdmVudENoYW5uZWwuaGFzaChyZXF1ZXN0KTtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBoYXNoKHJlcXVlc3Q6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLYWZlbnRFdmVudFN0cmVhbVNzZSBleHRlbmRzIEthZmVudEV2ZW50U3RyZWFtIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdLYWZlbnRFdmVudFNlcnZpY2VTc2UnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZUV2ZW50Q2hhbm5lbHMgPSBuZXcgTWFwPHN0cmluZywgS2FmZW50U3NlRXZlbnRDaGFubmVsPigpO1xuICBwcml2YXRlIGthZmVudFNvdXJjZTogUmVhY3RpdmVFdmVudFNvdXJjZTxLYWZlbnRFdmVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoVG9rZW5QYXJhbTogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBLYWZlbnRDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudFNvdXJjZVNlcnZpY2U6IEVsZGVyRXZlbnRTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5Qcm92aWRlcjogS2FmZW50VG9rZW5Qcm92aWRlclxuICApIHtcbiAgICBzdXBlcihLYWZlbnRFdmVudFRyYW5zcG9ydC5TU0UpO1xuICAgIHRoaXMuYXV0aFRva2VuUGFyYW0gPSB0aGlzLmNvbmZpZy50b2tlblBhcmFtIHx8ICdhY2Nlc3NfdG9rZW4nO1xuXG4gICAgdGhpcy5sb2dnZXIuaW5mbygnSW5pdGlhbGl6ZWQgS2FmZW50RXZlbnRTdHJlYW1Tc2Ugd2l0aCBhdXRoLXRva2VuIHBhcmFtOiAnICsgdGhpcy5hdXRoVG9rZW5QYXJhbSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0TGl2ZUV2ZW50c1dpdGgodG9waWM6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PiB7XG4gICAgY29uc3Qga2FmZW50Q2hhbm5lbCA9IHRoaXMua2FmZW50RXZlbnRDaGFubmVsKHRvcGljKTtcbiAgICByZXR1cm4ga2FmZW50Q2hhbm5lbC5ldmVudENoYW5uZWxTdWIuZXZlbnRzO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBrYWZlbnRFdmVudENoYW5uZWwocmVxdWVzdDogS2FmZW50TGl2ZUV2ZW50UmVxdWVzdCk6IEthZmVudFNzZUV2ZW50Q2hhbm5lbCB7XG4gICAgY29uc3QgY2hhbm5lbElkID0gS2FmZW50U3NlRXZlbnRDaGFubmVsLmhhc2gocmVxdWVzdCk7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUV2ZW50Q2hhbm5lbHMuaGFzKGNoYW5uZWxJZCkpIHtcbiAgICAgIHRoaXMuYWN0aXZlRXZlbnRDaGFubmVscy5zZXQoY2hhbm5lbElkLCB0aGlzLmNyZWF0ZUthZmVudENoYW5uZWwocmVxdWVzdCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmdldChjaGFubmVsSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVLYWZlbnRDaGFubmVsKHJlcXVlc3Q6IEthZmVudExpdmVFdmVudFJlcXVlc3QpOiBLYWZlbnRTc2VFdmVudENoYW5uZWwge1xuICAgIGNvbnN0IGt0b3BpYyA9IG5ldyBLYWZlbnRUb3BpY1NzZShyZXF1ZXN0LnRvcGljKTtcbiAgICBjb25zdCBjaGFubmVsID0gbmV3IEthZmVudFNzZUV2ZW50Q2hhbm5lbChyZXF1ZXN0LCBrdG9waWMpO1xuXG5cbiAgICBjb25zdCBzdWIgPSBrdG9waWMuY29ubmVjdGVkQ291bnQucGlwZShcbiAgICAgIHNraXAoMSkgLy8gU2tpcCBpbml0aWFsIGJlaGF2aW91ci1zdWJqZWN0IHZhbHVlXG4gICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgIGNvbm5lY3RlZCA9PiB7XG4gICAgICAgIGlmIChjb25uZWN0ZWQgPT09IDEpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgaGFzIGNvbm5lY3RlZFxuICAgICAgICAgIHRoaXMudXBkYXRlS2FmZW50U3NlU3ViKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbm5lY3RlZCA9PT0gMCkge1xuICAgICAgICAgIC8vIElmIHRoZSBsYXN0IGhhcyBkaXNjb25uZWN0ZWRcbiAgICAgICAgICAvLyBTZWxmIGRlY29uc3RydWN0XG4gICAgICAgICAgdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmRlbGV0ZShjaGFubmVsLmlkKTtcbiAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUthZmVudFNzZVN1YigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gY2hhbm5lbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlS2FmZW50U3NlU3ViKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJTb3VyY2UoKTtcblxuICAgIGNvbnN0IGNoYW5uZWxzID0gQXJyYXkuZnJvbSh0aGlzLmFjdGl2ZUV2ZW50Q2hhbm5lbHMudmFsdWVzKCkpO1xuXG4gICAgY29uc3QgdXNlZENoYW5uZWxzID0gY2hhbm5lbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5ldmVudENoYW5uZWxTdWIuYW55Q29ubmVjdGVkKTtcblxuICAgIGlmICh1c2VkQ2hhbm5lbHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5rYWZlbnRTb3VyY2UgPSB0aGlzLmJ1aWxkS2FmZW50U291cmNlKHVzZWRDaGFubmVscyk7XG4gICAgICB0aGlzLmNvbm5lY3QodGhpcy5rYWZlbnRTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTb3VyY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMua2FmZW50U291cmNlKSB7XG4gICAgICB0aGlzLmthZmVudFNvdXJjZS5jbG9zZSgpO1xuICAgICAgdGhpcy5rYWZlbnRTb3VyY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRLYWZlbnRTb3VyY2UoY2hhbm5lbHM6IEthZmVudFNzZUV2ZW50Q2hhbm5lbFtdKTogUmVhY3RpdmVFdmVudFNvdXJjZTxLYWZlbnRFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlU2VydmljZVxuICAgICAgLnJlYWN0aXZlRXZlbnRTb3VyY2VEeW5hbWljKCgpID0+IHRoaXMuYnVpbGRFdmVudFNvdXJjZVVybChjaGFubmVscykpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEV2ZW50U291cmNlVXJsKGNoYW5uZWxzOiBLYWZlbnRTc2VFdmVudENoYW5uZWxbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYiA9IFVybEJ1aWxkZXIucGFyc2UodGhpcy5jb25maWcua2FmZW50VXJsKTtcbiAgICBjaGFubmVsc1xuICAgICAgLm1hcChjID0+IGMucmVxdWVzdClcbiAgICAgIC5mb3JFYWNoKFxuICAgICAgICAocmVxdWVzdCkgPT4gYi5hcHBlbmRQYXJhbSgndG9waWNKc29uJywgYnRvYShKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSkpXG4gICAgICApO1xuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuUHJvdmlkZXIuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBcHBlbmRpbmcgcGFyYW06ICcgKyB0aGlzLmF1dGhUb2tlblBhcmFtICsgJyB3aXRoIGFjY2Vzc190b2tlbjogJyArIHRva2VuLnN1YnN0cmluZygwLCA1KSArICcuLi4nKTtcbiAgICAgIGIuYXBwZW5kUGFyYW0odGhpcy5hdXRoVG9rZW5QYXJhbSwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdObyBhY2Nlc3NfdG9rZW4gd2FzIHByb3ZpZGVkLCBza2lwcGluZyBhdXRoIHBhcmFtOiAnICsgdGhpcy5hdXRoVG9rZW5QYXJhbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGIuYnVpbGQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29ubmVjdChrYWZlbnRTb3VyY2U6IFJlYWN0aXZlRXZlbnRTb3VyY2U8S2FmZW50RXZlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVFdmVudENoYW5uZWxzLmZvckVhY2goICh2LCBrKSA9PiB2LmV2ZW50Q2hhbm5lbFN1Yi5jb25uZWN0KGthZmVudFNvdXJjZSkpO1xuICB9XG5cbn1cbiJdfQ==
@@ -95,4 +95,4 @@ export class KafentTopicSse {
95
95
  }
96
96
  }
97
97
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FmZW50LXRvcGljLXNzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2ZlYXR1cmVzL2thZmVudC9zc2Uva2FmZW50LXRvcGljLXNzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFeEUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE1BQU0sT0FBTyxjQUFjO0lBbUN6Qjs7OztnRkFJNEU7SUFFNUUsWUFDbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUF0QmhDOztXQUVHO1FBQ2MsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFNcEQ7OztXQUdHO1FBQ2MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBV2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUV4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7WUFFRCxXQUFXO1lBQ1gsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2pCO1lBQ0gsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7O09BR0c7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLE9BQU8sQ0FBQyxHQUFxQztRQUNsRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLGtCQUFrQjtRQUN4QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLFdBQVc7UUFFakIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDcEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtLYWZlbnRFdmVudH0gZnJvbSAnLi4va2FmZW50LWV2ZW50JztcbmltcG9ydCB7c2hhcmV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UmVhY3RpdmVFdmVudFNvdXJjZX0gZnJvbSAnLi4vLi4vZXZlbnQtc291cmNlL3JlYWN0aXZlLWV2ZW50LXNvdXJjZSc7XG5cbmV4cG9ydCBjbGFzcyBLYWZlbnRUb3BpY1NzZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFRoZSBjb2xkIG9ic2VydmFibGUgd2hpY2ggcHJveGllcyB0byB0aGVcbiAgICogc3NlIGNoYW5uZWwgYW5kIHRyYWNrcyB0aGUgb3BlbiBjb25uZWN0aW9ucy5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc291cmNlOiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PjtcblxuICAvKipcbiAgICogVGhlIHNoYXJlZCwgcmVmIGNvdW50aW5nIHN0cmVhbSBjbGllbnRzIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaG90OiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PjtcblxuICAvKipcbiAgICogSW50ZXJtZWRpYXRlIGNoYW5uZWwgdHJhbnNwb3J0aW5nIGV2ZW50cyBmcm9tIHRoZSBzc2Ugc3RyZWFtIHRvIHRoZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlciA9IG5ldyBTdWJqZWN0PEthZmVudEV2ZW50PigpO1xuXG4gIHByaXZhdGUgc3NlOiBSZWFjdGl2ZUV2ZW50U291cmNlPEthZmVudEV2ZW50PjtcblxuICBwcml2YXRlIHNzZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlbiBzc2UgY29ubmVjdGlvbnMuIFNob3VsZCBvbmx5IGJlIDAgb3IgMSBzaW5jZSBtdWx0aXBsZSBjb25uZWN0aW9uc1xuICAgKiBhcmUgc2hhcmVkIGJ5IHRoZSBob3Qgc3RyZWFtLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9waWM6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnNvdXJjZSA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuXG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmludGVyLnN1YnNjcmliZShvYnNlcnZlcik7XG5cbiAgICAgIGlmICh0aGlzLm5vbmVDb25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRDb25uZWN0ZWQoKTtcbiAgICAgICAgdGhpcy5yZW5ld1NzZVN1YigpO1xuICAgICAgfVxuXG4gICAgICAvLyBUZWFyZG93blxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuZGVjcmVtZW50Q29ubmVjdGVkKCk7XG4gICAgICAgIGlmICh0aGlzLm5vbmVDb25uZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnVuc3ViU3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5ob3QgPSB0aGlzLnNvdXJjZS5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGV2ZW50cy5cbiAgICogRW5zdXJlIHRvIHVuc3Vic2NyaWJlIGVhY2ggc3Vic2NyaXB0aW9uIHRvIGF2b2lkIGEgcmVzb3VyY2UgbGVhay5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXZlbnRzKCk6IE9ic2VydmFibGU8S2FmZW50RXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3Q7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY291bnQgb2YgY29ubmVjdGVkIGNsaWVudHMuXG4gICAqIElmIHRoaXMgdmFsdWUgaXMgMCwgaXQgbWVhbnMgdGhpcyBrYWZlbnQtdG9waWMgaXMgY3VycmVudGx5IHVudXNlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGVkQ291bnQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFueUNvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQuZ2V0VmFsdWUoKSA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5vbmVDb25uZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkLmdldFZhbHVlKCkgPT09IDA7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29ubmVjdChzc2U6IFJlYWN0aXZlRXZlbnRTb3VyY2U8S2FmZW50RXZlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5zc2UgPSBzc2U7XG4gICAgdGhpcy5yZW5ld1NzZVN1YigpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpbmNyZW1lbnRDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgbGV0IGNvbm5lY3RlZCA9IHRoaXMuY29ubmVjdGVkLmdldFZhbHVlKCk7XG4gICAgdGhpcy5jb25uZWN0ZWQubmV4dCgrK2Nvbm5lY3RlZCk7XG4gIH1cblxuICBwcml2YXRlIGRlY3JlbWVudENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBsZXQgY29ubmVjdGVkID0gdGhpcy5jb25uZWN0ZWQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmNvbm5lY3RlZC5uZXh0KC0tY29ubmVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZXdTc2VTdWIoKTogdm9pZCB7XG5cbiAgICB0aGlzLnVuc3ViU3NlKCk7XG5cbiAgICBpZiAodGhpcy5hbnlDb25uZWN0ZWQpIHtcbiAgICAgIHRoaXMuc3NlU3ViID0gdGhpcy5zc2UuZXZlbnRzSnNvbih0aGlzLnRvcGljKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuaW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJTc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3NlU3ViKSB7XG4gICAgICB0aGlzLnNzZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zc2VTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FmZW50LXRvcGljLXNzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2ZlYXR1cmVzL2thZmVudC9zc2Uva2FmZW50LXRvcGljLXNzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFeEUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE1BQU0sT0FBTyxjQUFjO0lBbUN6Qjs7OztnRkFJNEU7SUFFNUUsWUFDbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUF0QmhDOztXQUVHO1FBQ2MsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFNcEQ7OztXQUdHO1FBQ2MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBV2xELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUV4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7WUFFRCxXQUFXO1lBQ1gsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2pCO1lBQ0gsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7O09BR0c7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLE9BQU8sQ0FBQyxHQUFxQztRQUNsRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLGtCQUFrQjtRQUN4QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLFdBQVc7UUFFakIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDcEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtLYWZlbnRFdmVudH0gZnJvbSAnLi4va2FmZW50LWV2ZW50JztcbmltcG9ydCB7c2hhcmV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UmVhY3RpdmVFdmVudFNvdXJjZX0gZnJvbSAnLi4vLi4vZXZlbnQtc291cmNlL3N0YW5kYXJkL3JlYWN0aXZlLWV2ZW50LXNvdXJjZSc7XG5cbmV4cG9ydCBjbGFzcyBLYWZlbnRUb3BpY1NzZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFRoZSBjb2xkIG9ic2VydmFibGUgd2hpY2ggcHJveGllcyB0byB0aGVcbiAgICogc3NlIGNoYW5uZWwgYW5kIHRyYWNrcyB0aGUgb3BlbiBjb25uZWN0aW9ucy5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc291cmNlOiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PjtcblxuICAvKipcbiAgICogVGhlIHNoYXJlZCwgcmVmIGNvdW50aW5nIHN0cmVhbSBjbGllbnRzIHN1YnNjcmliZSB0by5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaG90OiBPYnNlcnZhYmxlPEthZmVudEV2ZW50PjtcblxuICAvKipcbiAgICogSW50ZXJtZWRpYXRlIGNoYW5uZWwgdHJhbnNwb3J0aW5nIGV2ZW50cyBmcm9tIHRoZSBzc2Ugc3RyZWFtIHRvIHRoZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlciA9IG5ldyBTdWJqZWN0PEthZmVudEV2ZW50PigpO1xuXG4gIHByaXZhdGUgc3NlOiBSZWFjdGl2ZUV2ZW50U291cmNlPEthZmVudEV2ZW50PjtcblxuICBwcml2YXRlIHNzZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlbiBzc2UgY29ubmVjdGlvbnMuIFNob3VsZCBvbmx5IGJlIDAgb3IgMSBzaW5jZSBtdWx0aXBsZSBjb25uZWN0aW9uc1xuICAgKiBhcmUgc2hhcmVkIGJ5IHRoZSBob3Qgc3RyZWFtLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9waWM6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnNvdXJjZSA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuXG4gICAgICBjb25zdCBzdWIgPSB0aGlzLmludGVyLnN1YnNjcmliZShvYnNlcnZlcik7XG5cbiAgICAgIGlmICh0aGlzLm5vbmVDb25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRDb25uZWN0ZWQoKTtcbiAgICAgICAgdGhpcy5yZW5ld1NzZVN1YigpO1xuICAgICAgfVxuXG4gICAgICAvLyBUZWFyZG93blxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuZGVjcmVtZW50Q29ubmVjdGVkKCk7XG4gICAgICAgIGlmICh0aGlzLm5vbmVDb25uZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnVuc3ViU3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5ob3QgPSB0aGlzLnNvdXJjZS5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGV2ZW50cy5cbiAgICogRW5zdXJlIHRvIHVuc3Vic2NyaWJlIGVhY2ggc3Vic2NyaXB0aW9uIHRvIGF2b2lkIGEgcmVzb3VyY2UgbGVhay5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXZlbnRzKCk6IE9ic2VydmFibGU8S2FmZW50RXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3Q7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgY291bnQgb2YgY29ubmVjdGVkIGNsaWVudHMuXG4gICAqIElmIHRoaXMgdmFsdWUgaXMgMCwgaXQgbWVhbnMgdGhpcyBrYWZlbnQtdG9waWMgaXMgY3VycmVudGx5IHVudXNlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGVkQ291bnQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFueUNvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQuZ2V0VmFsdWUoKSA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5vbmVDb25uZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkLmdldFZhbHVlKCkgPT09IDA7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29ubmVjdChzc2U6IFJlYWN0aXZlRXZlbnRTb3VyY2U8S2FmZW50RXZlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5zc2UgPSBzc2U7XG4gICAgdGhpcy5yZW5ld1NzZVN1YigpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpbmNyZW1lbnRDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgbGV0IGNvbm5lY3RlZCA9IHRoaXMuY29ubmVjdGVkLmdldFZhbHVlKCk7XG4gICAgdGhpcy5jb25uZWN0ZWQubmV4dCgrK2Nvbm5lY3RlZCk7XG4gIH1cblxuICBwcml2YXRlIGRlY3JlbWVudENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBsZXQgY29ubmVjdGVkID0gdGhpcy5jb25uZWN0ZWQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmNvbm5lY3RlZC5uZXh0KC0tY29ubmVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZXdTc2VTdWIoKTogdm9pZCB7XG5cbiAgICB0aGlzLnVuc3ViU3NlKCk7XG5cbiAgICBpZiAodGhpcy5hbnlDb25uZWN0ZWQpIHtcbiAgICAgIHRoaXMuc3NlU3ViID0gdGhpcy5zc2UuZXZlbnRzSnNvbih0aGlzLnRvcGljKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuaW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJTc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3NlU3ViKSB7XG4gICAgICB0aGlzLnNzZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zc2VTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19