stream-chat-angular 4.31.0 → 4.31.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +54 -22
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel/channel.component.js +15 -5
- package/esm2015/lib/channel-list/channel-list.component.js +4 -5
- package/esm2015/lib/channel.service.js +32 -15
- package/esm2015/lib/date-parser.service.js +3 -3
- package/esm2015/lib/message-list/message-list.component.js +6 -2
- package/esm2015/lib/types.js +1 -1
- package/fesm2015/stream-chat-angular.js +55 -24
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel.service.d.ts +10 -2
- package/lib/date-parser.service.d.ts +2 -2
- package/lib/message-list/message-list.component.d.ts +1 -0
- package/lib/types.d.ts +4 -0
- package/package.json +1 -1
- package/src/assets/version.ts +1 -1
|
@@ -9,7 +9,7 @@ export class DateParserService {
|
|
|
9
9
|
/**
|
|
10
10
|
* Return a user-friendly string representation of the date (year, month and date)
|
|
11
11
|
* @param date
|
|
12
|
-
* @returns
|
|
12
|
+
* @returns The parsed date
|
|
13
13
|
*/
|
|
14
14
|
parseDate(date) {
|
|
15
15
|
if (this.customDateParser) {
|
|
@@ -20,7 +20,7 @@ export class DateParserService {
|
|
|
20
20
|
/**
|
|
21
21
|
* Return a user-friendly string representation of the date and time
|
|
22
22
|
* @param date
|
|
23
|
-
* @returns
|
|
23
|
+
* @returns The parsed date
|
|
24
24
|
*/
|
|
25
25
|
parseDateTime(date) {
|
|
26
26
|
if (this.customDateTimeParser) {
|
|
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
37
37
|
providedIn: 'root',
|
|
38
38
|
}]
|
|
39
39
|
}], ctorParameters: function () { return []; } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1wYXJzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFekM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCLGdCQUFlLENBQUM7SUFFaEI7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxJQUFVO1FBQ2xCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLElBQVU7UUFDdEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7OEdBbENVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gJy4vcGFyc2UtZGF0ZSc7XG5cbi8qKlxuICogVGhlIGBEYXRlUGFyc2VyU2VydmljZWAgcGFyc2VzIGRhdGVzIGludG8gdXNlci1mcmllbmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBhcnNlclNlcnZpY2Uge1xuICAvKipcbiAgICogQ3VzdG9tIHBhcnNlciB0byBvdmVycmlkZSBgcGFyc2VEYXRlYFxuICAgKi9cbiAgY3VzdG9tRGF0ZVBhcnNlcj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gcGFyc2VyIHRvIG92ZXJyaWRlIGBwYXJzZURhdGVUaW1lYFxuICAgKi9cbiAgY3VzdG9tRGF0ZVRpbWVQYXJzZXI/
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1wYXJzZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFekM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCLGdCQUFlLENBQUM7SUFFaEI7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxJQUFVO1FBQ2xCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLElBQVU7UUFDdEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7OEdBbENVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gJy4vcGFyc2UtZGF0ZSc7XG5cbi8qKlxuICogVGhlIGBEYXRlUGFyc2VyU2VydmljZWAgcGFyc2VzIGRhdGVzIGludG8gdXNlci1mcmllbmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBhcnNlclNlcnZpY2Uge1xuICAvKipcbiAgICogQ3VzdG9tIHBhcnNlciB0byBvdmVycmlkZSBgcGFyc2VEYXRlYFxuICAgKi9cbiAgY3VzdG9tRGF0ZVBhcnNlcj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gcGFyc2VyIHRvIG92ZXJyaWRlIGBwYXJzZURhdGVUaW1lYFxuICAgKi9cbiAgY3VzdG9tRGF0ZVRpbWVQYXJzZXI/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogUmV0dXJuIGEgdXNlci1mcmllbmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGUgKHllYXIsIG1vbnRoIGFuZCBkYXRlKVxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGVcbiAgICovXG4gIHBhcnNlRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZVBhcnNlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRGF0ZVBhcnNlcihkYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRGF0ZShkYXRlLCAnZGF0ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHVzZXItZnJpZW5kbHkgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRlIGFuZCB0aW1lXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZVxuICAgKi9cbiAgcGFyc2VEYXRlVGltZShkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZVRpbWVQYXJzZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVUaW1lUGFyc2VyKGRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VEYXRlKGRhdGUsICdkYXRlLXRpbWUnKTtcbiAgfVxufVxuIl19
|
|
@@ -59,7 +59,10 @@ export class MessageListComponent {
|
|
|
59
59
|
this.isLatestMessageInList = true;
|
|
60
60
|
this.subscriptions.push(this.channelService.activeChannel$.subscribe((channel) => {
|
|
61
61
|
var _a, _b;
|
|
62
|
-
this.
|
|
62
|
+
if (this.channelId !== (channel === null || channel === void 0 ? void 0 : channel.id)) {
|
|
63
|
+
this.resetScrollState();
|
|
64
|
+
this.channelId = channel === null || channel === void 0 ? void 0 : channel.id;
|
|
65
|
+
}
|
|
63
66
|
const capabilites = (_a = channel === null || channel === void 0 ? void 0 : channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
64
67
|
if (capabilites) {
|
|
65
68
|
this.enabledMessageActions = capabilites;
|
|
@@ -295,6 +298,7 @@ export class MessageListComponent {
|
|
|
295
298
|
: this.channelService.activeThreadMessages$).pipe(tap((messages) => {
|
|
296
299
|
this.isLoading = false;
|
|
297
300
|
if (messages.length === 0) {
|
|
301
|
+
this.resetScrollState();
|
|
298
302
|
return;
|
|
299
303
|
}
|
|
300
304
|
const currentLatestMessage = messages[messages.length - 1];
|
|
@@ -418,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
418
422
|
type: ViewChild,
|
|
419
423
|
args: ['parentMessageElement']
|
|
420
424
|
}] } });
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFNTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVbEQsT0FBTyxFQUFFLGNBQWMsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBRzFDOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQXFFL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLFVBQTZCO1FBSDdCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUF0RXZDOztXQUVHO1FBQ00sU0FBSSxHQUFzQixNQUFNLENBQUM7UUFDMUM7O1dBRUc7UUFDTSxjQUFTLEdBQXNDLGVBQWUsQ0FBQztRQUN4RTs7V0FFRztRQUNNLDBCQUFxQixHQUM1QixhQUFhLENBQUM7UUFFaEI7O1dBRUc7UUFDTSx1Q0FBa0MsR0FBRyxLQUFLLENBQUM7UUFDcEQ7O1dBRUc7UUFDTSx5QkFB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OzBNQU9VLElBQUk7c0JBQVosS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFNRyxrQ0FBa0M7c0JBQTFDLEtBQUs7Z0JBSUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFJRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS3dCLEtBQUs7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTztnQkFZWixlQUFlO3NCQUR0QixTQUFTO3VCQUFDLGlCQUFpQjtnQkFHcEIsb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE1lc3NhZ2VDb250ZXh0LFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxuICBTdHJlYW1NZXNzYWdlLFxuICBUeXBpbmdJbmRpY2F0b3JDb250ZXh0LFxuICBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbSxcbiAgRGF0ZVNlcGFyYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgbGlzdFVzZXJzIH0gZnJvbSAnLi4vbGlzdC11c2Vycyc7XG5pbXBvcnQgeyBEYXRlUGFyc2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGUtcGFyc2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZUxpc3RgIGNvbXBvbmVudCByZW5kZXJzIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIG1lc3NhZ2VzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VMaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbWVzc2FnZSBsaXN0IHNob3VsZCBkaXNwbGF5IGNoYW5uZWwgbWVzc2FnZXMgb3IgW3RocmVhZCBtZXNzYWdlc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvdGhyZWFkcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuXG4gICAqL1xuICBASW5wdXQoKSBtb2RlOiAnbWFpbicgfCAndGhyZWFkJyA9ICdtYWluJztcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gb2YgdGhlIG1lc3NhZ2VzIGluIHRoZSBsaXN0LCBgYm90dG9tLXRvLXRvcGAgbWVhbnMgbmV3ZXN0IG1lc3NhZ2UgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbWVzc2FnZSBsaXN0IGFuZCB1c2VycyBzY3JvbGwgdXB3YXJkcyB0byBsb2FkIG9sZGVyIG1lc3NhZ2VzXG4gICAqL1xuICBASW5wdXQoKSBkaXJlY3Rpb246ICdib3R0b20tdG8tdG9wJyB8ICd0b3AtdG8tYm90dG9tJyA9ICdib3R0b20tdG8tdG9wJztcbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hhdCB0cmlnZ2VycyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgbWVzc2FnZSBvcHRpb25zOiBieSBkZWZhdWx0IHlvdSBjYW4gaG92ZXIgKGNsaWNrIG9uIG1vYmlsZSkgYW55d2hlcmUgaW4gdGhlIHJvdyBvZiB0aGUgbWVzc2FnZSAoYG1lc3NhZ2Utcm93YCBvcHRpb24pLCBvciB5b3UgY2FuIHNldCBgbWVzc2FnZS1idWJibGVgLCBpbiB0aGF0IGNhc2Ugb25seSBhIGhvdmVyIChjbGljayBvbiBtb2JpbGUpIGluIHRoZSBtZXNzYWdlIGJ1YmJsZSB3aWxsIHRyaWdnZXIgdGhlIG9wdGlvbnMgdG8gYXBwZWFyLlxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZU9wdGlvbnNUcmlnZ2VyOiAnbWVzc2FnZS1yb3cnIHwgJ21lc3NhZ2UtYnViYmxlJyA9XG4gICAgJ21lc3NhZ2Utcm93JztcbiAgdHlwaW5nSW5kaWNhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFR5cGluZ0luZGljYXRvckNvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogWW91IGNhbiBoaWRlIHRoZSBcImp1bXAgdG8gbGF0ZXN0XCIgYnV0dG9uIHdoaWxlIHNjcm9sbGluZy4gQSBwb3RlbnRpYWwgdXNlLWNhc2UgZm9yIHRoaXMgaW5wdXQgd291bGQgYmUgdG8gW3dvcmthcm91bmQgYSBrbm93biBpc3N1ZSBvbiBpT1MgU2FmYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci9pc3N1ZXMvNDE4KVxuICAgKi9cbiAgQElucHV0KCkgaGlkZUp1bXBUb0xhdGVzdEJ1dHRvbkR1cmluZ1Njcm9sbCA9IGZhbHNlO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGN1c3RvbSBtZXNzYWdlIGFjdGlvbnMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtZXNzYWdlIGFjdGlvbiBib3hcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbU1lc3NhZ2VBY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbTxhbnk+W10gPSBbXTtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCBkYXRlIHNlcGFyYXRvcnMgd2lsbCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlEYXRlU2VwYXJhdG9yID0gdHJ1ZTtcbiAgLyoqXG4gICAqIElmIGRhdGUgc2VwYXJhdG9ycyBhcmUgZGlzcGxheWVkLCB5b3UgY2FuIHNldCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgZGF0ZSB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgZGF0ZVNlcGFyYXRvclRleHRQb3M6ICdjZW50ZXInIHwgJ3JpZ2h0JyB8ICdsZWZ0JyA9ICdjZW50ZXInO1xuICBtZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE1lc3NhZ2VDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxEYXRlU2VwYXJhdG9yQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2VzJCE6IE9ic2VydmFibGU8U3RyZWFtTWVzc2FnZVtdPjtcbiAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3Qgc3RyLWNoYXRfX21haW4tcGFuZWwtaW5uZXInO1xuICB1bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZ3JvdXBTdHlsZXM6IEdyb3VwU3R5bGVbXSA9IFtdO1xuICBsYXN0U2VudE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBoaWdobGlnaHRlZE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgaXNTY3JvbGxJblByb2dyZXNzID0gZmFsc2U7XG4gIHNjcm9sbEVuZFRpbWVvdXQ6IGFueTtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJylcbiAgcHJpdmF0ZSBzY3JvbGxDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGFyZW50TWVzc2FnZUVsZW1lbnQnKVxuICBwcml2YXRlIHBhcmVudE1lc3NhZ2VFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgbGF0ZXN0TWVzc2FnZTogeyBpZDogc3RyaW5nOyBjcmVhdGVkX2F0OiBEYXRlIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGFzTmV3TWVzc2FnZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY29udGFpbmVySGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXN0TWVzc2FnZTogeyBpZDogc3RyaW5nOyBjcmVhdGVkX2F0OiBEYXRlIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXJNYXNzYWdlc0xvYWRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc05ld01lc3NhZ2VTZW50QnlVc2VyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgbmV3TWVzc2FnZVN1YnNjcmlwdGlvbjogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHByZXZTY3JvbGxUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB1c2Vyc1R5cGluZ0luQ2hhbm5lbCQhOiBPYnNlcnZhYmxlPFxuICAgIFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdXG4gID47XG4gIHByaXZhdGUgdXNlcnNUeXBpbmdJblRocmVhZCQhOiBPYnNlcnZhYmxlPFxuICAgIFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdXG4gID47XG4gIHByaXZhdGUgaXNMYXRlc3RNZXNzYWdlSW5MaXN0ID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGFyc2VyOiBEYXRlUGFyc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjaGFubmVsKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICBjb25zdCBjYXBhYmlsaXRlcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcykge1xuICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gY2FwYWJpbGl0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uZXdNZXNzYWdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAoY2hhbm5lbCkge1xuICAgICAgICAgIHRoaXMubmV3TWVzc2FnZVN1YnNjcmlwdGlvbiA9IGNoYW5uZWwub24oJ21lc3NhZ2UubmV3JywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBkaXNwbGF5IG1haW4gY2hhbm5lbCBtZXNzYWdlcyBhbmQgd2UncmUgc3dpdGNoZWQgdG8gYW4gb2xkZXIgbWVzc2FnZSBzZXQgLT4gdXNlIG1lc3NhZ2UubmV3IGV2ZW50IHRvIHVwZGF0ZSB1bnJlYWQgY291bnQgYW5kIGRldGVjdCBuZXcgbWVzc2FnZXMgc2VudCBieSBjdXJyZW50IHVzZXJcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIWV2ZW50Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgY2hhbm5lbC5zdGF0ZS5tZXNzYWdlcyA9PT0gY2hhbm5lbC5zdGF0ZS5sYXRlc3RNZXNzYWdlcyB8fFxuICAgICAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5uZXdNZXNzYWdlUmVjZWl2ZWQoe1xuICAgICAgICAgICAgICBpZDogZXZlbnQubWVzc2FnZS5pZCxcbiAgICAgICAgICAgICAgdXNlcjogZXZlbnQubWVzc2FnZS51c2VyLFxuICAgICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShldmVudC5tZXNzYWdlLmNyZWF0ZWRfYXQgfHwgJycpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlUGFyZW50TWVzc2FnZSQuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtZXNzYWdlICYmXG4gICAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlICYmXG4gICAgICAgICAgbWVzc2FnZS5pZCAhPT0gdGhpcy5wYXJlbnRNZXNzYWdlLmlkICYmXG4gICAgICAgICAgdGhpcy5tb2RlID09PSAndGhyZWFkJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLm1lc3NhZ2VUZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuZGF0ZVNlcGFyYXRvclRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMuY3VzdG9tRGF0ZVNlcGFyYXRvclRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS50eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+ICh0aGlzLnR5cGluZ0luZGljYXRvclRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnVzZXJzVHlwaW5nSW5DaGFubmVsJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UudXNlcnNUeXBpbmdJbkNoYW5uZWwkO1xuICAgIHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVzZXJzVHlwaW5nSW5UaHJlYWQkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRNZXNzYWdlcyQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tb2RlIHx8IGNoYW5nZXMuZGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLnNldE1lc3NhZ2VzJCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5kaXJlY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLnNjcm9sbENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmp1bXBUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UkXG4gICAgICAgIC5waXBlKGZpbHRlcigoY29uZmlnKSA9PiAhIWNvbmZpZy5pZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgICAgIGxldCBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnbWFpbicpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZCA9IGNvbmZpZy5wYXJlbnRJZCB8fCBjb25maWcuaWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb25maWcucGFyZW50SWQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZCA9IGNvbmZpZy5pZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1lc3NhZ2VJZCkge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2VJZCA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsTWVzc2FnZUludG9WaWV3KG1lc3NhZ2VJZCk7XG4gICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQgPSBtZXNzYWdlSWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQpIHtcbiAgICAgIC8vIFR1cm4gb2ZmIHByb2dyYW1hdGljIHNjcm9sbCBhZGp1c3RtZW50cyB3aGlsZSBqdW1wIHRvIG1lc3NhZ2UgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmhhc05ld01lc3NhZ2VzICYmXG4gICAgICAgICh0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgfHwgIXRoaXMuaXNVc2VyU2Nyb2xsZWQpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgIDogdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaGFzTmV3TWVzc2FnZXMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkIHx8IHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlcikge1xuICAgICAgICAgIHRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0XG4gICAgICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICAgICAgOiB0aGlzLmp1bXBUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCkge1xuICAgICAgICB0aGlzLnByZXNlcnZlU2Nyb2xsYmFyUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCkgIT09ICdib3R0b20nICYmXG4gICAgICAgICF0aGlzLmlzVXNlclNjcm9sbGVkICYmXG4gICAgICAgICF0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICAgIDogdGhpcy5qdW1wVG9MYXRlc3RNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5uZXdNZXNzYWdlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogU3RyZWFtTWVzc2FnZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgdHJhY2tCeVVzZXJJZChpbmRleDogbnVtYmVyLCB1c2VyOiBVc2VyUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gdXNlci5pZDtcbiAgfVxuXG4gIGp1bXBUb0xhdGVzdE1lc3NhZ2UoKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmp1bXBUb01lc3NhZ2UoXG4gICAgICAnbGF0ZXN0JyxcbiAgICAgIHRoaXMubW9kZSA9PT0gJ3RocmVhZCcgPyB0aGlzLnBhcmVudE1lc3NhZ2U/LmlkIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbFRvQm90dG9tKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgc2Nyb2xsZWQoKSB7XG4gICAgdGhpcy5pc1Njcm9sbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbEVuZFRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbEVuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNTY3JvbGxJblByb2dyZXNzID0gZmFsc2U7XG4gICAgfSwgMTAwKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA9PT1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpO1xuXG4gICAgdGhpcy5pc1VzZXJTY3JvbGxlZCA9XG4gICAgICAodGhpcy5kaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJ1xuICAgICAgICA/IHNjcm9sbFBvc2l0aW9uICE9PSAnYm90dG9tJ1xuICAgICAgICA6IHNjcm9sbFBvc2l0aW9uICE9PSAndG9wJykgfHwgIXRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0O1xuICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZCkge1xuICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG91bGRMb2FkTW9yZU1lc3NhZ2VzKHNjcm9sbFBvc2l0aW9uKSkge1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIGxldCBkaXJlY3Rpb246ICduZXdlcicgfCAnb2xkZXInO1xuICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAndG9wLXRvLWJvdHRvbScpIHtcbiAgICAgICAgZGlyZWN0aW9uID0gc2Nyb2xsUG9zaXRpb24gPT09ICd0b3AnID8gJ25ld2VyJyA6ICdvbGRlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJlY3Rpb24gPSBzY3JvbGxQb3NpdGlvbiA9PT0gJ3RvcCcgPyAnb2xkZXInIDogJ25ld2VyJztcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlTWVzc2FnZXMoZGlyZWN0aW9uKVxuICAgICAgICA6IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZVRocmVhZFJlcGxpZXMoZGlyZWN0aW9uKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5wcmV2U2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XG4gIH1cblxuICBnZXRUeXBpbmdJbmRpY2F0b3JDb250ZXh0KCk6IFR5cGluZ0luZGljYXRvckNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICB1c2Vyc1R5cGluZyQ6IHRoaXMudXNlcnNUeXBpbmckLFxuICAgIH07XG4gIH1cblxuICBnZXRUeXBpbmdJbmRpY2F0b3JUZXh0KHVzZXJzOiBVc2VyUmVzcG9uc2VbXSkge1xuICAgIGNvbnN0IHRleHQgPSBsaXN0VXNlcnModXNlcnMpO1xuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBhcmVPblNlcGFyYXRlRGF0ZXMobWVzc2FnZTogU3RyZWFtTWVzc2FnZSwgbmV4dE1lc3NhZ2U/OiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgaWYgKCFuZXh0TWVzc2FnZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jcmVhdGVkX2F0LmdldERhdGUoKSAhPT0gbmV4dE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXREYXRlKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0RnVsbFllYXIoKSAhPT1cbiAgICAgICAgbmV4dE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRGdWxsWWVhcigpIHx8XG4gICAgICBtZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0TW9udGgoKSAhPT0gbmV4dE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRNb250aCgpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcGFyc2VEYXRlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGFyc2VyLnBhcnNlRGF0ZShkYXRlKTtcbiAgfVxuXG4gIGdldCByZXBseUNvdW50UGFyYW0oKSB7XG4gICAgcmV0dXJuIHsgcmVwbHlDb3VudDogdGhpcy5wYXJlbnRNZXNzYWdlPy5yZXBseV9jb3VudCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgfHwgMCkgK1xuICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHQhKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsUG9zaXRpb24oKTogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnIHtcbiAgICBsZXQgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJyA9ICdtaWRkbGUnO1xuICAgIGlmIChcbiAgICAgIE1hdGguZmxvb3IodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApIDw9XG4gICAgICAgICh0aGlzLnBhcmVudE1lc3NhZ2VFbGVtZW50Py5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwKSAmJlxuICAgICAgKHRoaXMucHJldlNjcm9sbFRvcCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHRoaXMucHJldlNjcm9sbFRvcCA+XG4gICAgICAgICAgKHRoaXMucGFyZW50TWVzc2FnZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDApKVxuICAgICkge1xuICAgICAgcG9zaXRpb24gPSAndG9wJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgTWF0aC5jZWlsKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKSArXG4gICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID49XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICkge1xuICAgICAgcG9zaXRpb24gPSAnYm90dG9tJztcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIHNob3VsZExvYWRNb3JlTWVzc2FnZXMoc2Nyb2xsUG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbWlkZGxlJykge1xuICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbiAhPT0gJ21pZGRsZScgJiYgIXRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWQ7XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VzJCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IChcbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTWVzc2FnZXMkXG4gICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVUaHJlYWRNZXNzYWdlcyRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudExhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgdGhpcy5uZXdNZXNzYWdlUmVjZWl2ZWQoY3VycmVudExhdGVzdE1lc3NhZ2UpO1xuICAgICAgICBjb25zdCBjdXJyZW50T2xkZXN0TWVzc2FnZSA9IG1lc3NhZ2VzWzBdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMub2xkZXN0TWVzc2FnZSB8fFxuICAgICAgICAgICFtZXNzYWdlcy5maW5kKChtKSA9PiBtLmlkID09PSB0aGlzLm9sZGVzdE1lc3NhZ2UhLmlkKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2UgPSBjdXJyZW50T2xkZXN0TWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRUaW1lKCkgPlxuICAgICAgICAgIGN1cnJlbnRPbGRlc3RNZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlO1xuICAgICAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKFxuICAgICAgICAobWVzc2FnZXMpID0+XG4gICAgICAgICAgKHRoaXMubGFzdFNlbnRNZXNzYWdlSWQgPSBbLi4ubWVzc2FnZXNdXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZCAmJlxuICAgICAgICAgICAgICAgIG0uc3RhdHVzICE9PSAnc2VuZGluZydcbiAgICAgICAgICAgICk/LmlkKVxuICAgICAgKSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPVxuICAgICAgICAgICF0aGlzLmxhdGVzdE1lc3NhZ2UgfHxcbiAgICAgICAgICBtZXNzYWdlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS5pZCA9PT0gdGhpcy5sYXRlc3RNZXNzYWdlLmlkO1xuICAgICAgICBpZiAoIXRoaXMuaXNMYXRlc3RNZXNzYWdlSW5MaXN0KSB7XG4gICAgICAgICAgdGhpcy5pc1VzZXJTY3JvbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKChtZXNzYWdlcykgPT5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJyA/IG1lc3NhZ2VzIDogWy4uLm1lc3NhZ2VzXS5yZXZlcnNlKClcbiAgICAgICksXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JvdXBTdHlsZXMgPSBtZXNzYWdlcy5tYXAoKG0sIGkpID0+XG4gICAgICAgICAgZ2V0R3JvdXBTdHlsZXMobSwgbWVzc2FnZXNbaSAtIDFdLCBtZXNzYWdlc1tpICsgMV0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2Nyb2xsU3RhdGUoKSB7XG4gICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9sZGVzdE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIHRoaXMucHJldlNjcm9sbFRvcCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXNlcnNUeXBpbmckKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICA/IHRoaXMudXNlcnNUeXBpbmdJblRocmVhZCRcbiAgICAgIDogdGhpcy51c2Vyc1R5cGluZ0luQ2hhbm5lbCQ7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbE1lc3NhZ2VJbnRvVmlldyhtZXNzYWdlSWQ6IHN0cmluZywgd2l0aFJldHJ5ID0gdHJ1ZSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtZXNzYWdlSWQpO1xuICAgIGlmICghZWxlbWVudCAmJiB3aXRoUmV0cnkpIHtcbiAgICAgIC8vIElmIHRoZSBtZXNzYWdlIHdhcyBuZXdseSBpbnNlcnRlZCBpbnRvIGFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQsIHRoZSBtZXNzYWdlIHdpbGwgYmUgcmVuZGVyZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSAtPiB3YWl0IGZvciB0aGlzIGN5Y2xlIHRvIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsTWVzc2FnZUludG9WaWV3KG1lc3NhZ2VJZCwgZmFsc2UpKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH0sIDEwMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9MYXRlc3RNZXNzYWdlKHdpdGhSZXRyeSA9IHRydWUpIHtcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5sYXRlc3RNZXNzYWdlIS5pZCkpIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCdcbiAgICAgICAgPyB0aGlzLnNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgOiB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfSBlbHNlIGlmICh3aXRoUmV0cnkpIHtcbiAgICAgIC8vIElmIHRoZSBtZXNzYWdlIHdhcyBuZXdseSBpbnNlcnRlZCBpbnRvIGFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQsIHRoZSBtZXNzYWdlIHdpbGwgYmUgcmVuZGVyZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSAtPiB3YWl0IGZvciB0aGlzIGN5Y2xlIHRvIGNvbXBsZXRlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsVG9MYXRlc3RNZXNzYWdlKGZhbHNlKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXdNZXNzYWdlUmVjZWl2ZWQobWVzc2FnZToge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogRGF0ZTtcbiAgICB1c2VyPzogeyBpZDogc3RyaW5nIH0gfCBudWxsO1xuICB9KSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZSB8fFxuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlLmNyZWF0ZWRfYXQ/LmdldFRpbWUoKSA8IG1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRUaW1lKClcbiAgICApIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9XG4gICAgICAgIG1lc3NhZ2UudXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQ7XG4gICAgICBpZiAodGhpcy5pc1VzZXJTY3JvbGxlZCkge1xuICAgICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICAjc2Nyb2xsQ29udGFpbmVyXG4gIGRhdGEtdGVzdGlkPVwic2Nyb2xsLWNvbnRhaW5lclwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX2xpc3RcIlxuICAoc2Nyb2xsKT1cInNjcm9sbGVkKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3JldmVyc2UtaW5maW5pdGUtc2Nyb2xsIHN0ci1jaGF0X19tZXNzYWdlLWxpc3Qtc2Nyb2xsXCI+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X191bFwiXG4gICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utb3B0aW9ucy1pbi1idWJibGVdPVwiXG4gICAgICAgIG1lc3NhZ2VPcHRpb25zVHJpZ2dlciA9PT0gJ21lc3NhZ2UtYnViYmxlJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGlcbiAgICAgICAgI3BhcmVudE1lc3NhZ2VFbGVtZW50XG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3RocmVhZCcgJiYgcGFyZW50TWVzc2FnZVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGFyZW50LW1lc3NhZ2VcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19wYXJlbnQtbWVzc2FnZS1saVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlQ29udGFpbmVyO1xuICAgICAgICAgICAgY29udGV4dDogeyBtZXNzYWdlOiBwYXJlbnRNZXNzYWdlLCBpbmRleDogJ3BhcmVudCcgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBkYXRhLXRlc3RpZD1cInJlcGx5LWNvdW50XCIgY2xhc3M9XCJzdHItY2hhdF9fdGhyZWFkLXN0YXJ0XCI+XG4gICAgICAgICAge3twYXJlbnRNZXNzYWdlPy5yZXBseV9jb3VudCA9PT0gMSA/ICgnc3RyZWFtQ2hhdC4xIHJlcGx5JyB8IHRyYW5zbGF0ZSkgOiAoJ3N0cmVhbUNoYXQue3sgcmVwbHlDb3VudCB9fVxuICAgICAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidG9wLWxvYWRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCdcIlxuICAgICAgPjwvc3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VzJCB8IGFzeW5jIGFzIG1lc3NhZ2VzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzO1xuICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgIGxldCBpc0ZpcnN0ID0gZmlyc3Q7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZUlkXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBkYXRlOiBtZXNzYWdlLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgICBwYXJzZWREYXRlOiBwYXJzZURhdGUobWVzc2FnZS5jcmVhdGVkX2F0KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RjbGFzcz1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbGkgc3RyLWNoYXRfX2xpLS17eyBncm91cFN0eWxlc1tpXSB9fVwiXG4gICAgICAgICAgICBpZD1cInt7IG1lc3NhZ2UuaWQgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBtZXNzYWdlOiBtZXNzYWdlLCBpbmRleDogaSB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXJlT25TZXBhcmF0ZURhdGVzKG1lc3NhZ2UsIG1lc3NhZ2VzW2kgKyAxXSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBkYXRlU2VwYXJhdG9yO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGU6IG1lc3NhZ2VzW2kgKyAxXS5jcmVhdGVkX2F0LFxuICAgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZTogcGFyc2VEYXRlKG1lc3NhZ2VzW2kgKyAxXS5jcmVhdGVkX2F0KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3JcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJib3R0b20tbG9hZGluZy1pbmRpY2F0b3JcIlxuICAgICAgICAqbmdJZj1cImlzTG9hZGluZyAmJiBkaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJ1wiXG4gICAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3I+XG4gICAgPC91bD5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUeXBpbmdJbmRpY2F0b3IgbGV0LXVzZXJzVHlwaW5nJD1cInVzZXJzVHlwaW5nJFwiPlxuICAgICAgPCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL25vLWFueSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIkYW55KHVzZXJzVHlwaW5nJCB8IGFzeW5jKSBhcyB1c2Vyc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJ1c2Vycy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInR5cGluZy1pbmRpY2F0b3JcIlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3Igc3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3ItLXR5cGluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdHNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX2RvdFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInR5cGluZy11c2Vyc1wiXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X190eXBpbmctaW5kaWNhdG9yX191c2Vyc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgdXNlcnMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgPyAoXCJzdHJlYW1DaGF0LnVzZXIgaXMgdHlwaW5nXCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IHVzZXI6IGdldFR5cGluZ0luZGljYXRvclRleHQodXNlcnMpIH0pXG4gICAgICAgICAgICAgICAgOiAoXCJzdHJlYW1DaGF0LnVzZXJzIGFyZSB0eXBpbmdcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgdXNlcnM6IGdldFR5cGluZ0luZGljYXRvclRleHQodXNlcnMpIH0pXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgdHlwaW5nSW5kaWNhdG9yVGVtcGxhdGUgfHwgZGVmYXVsdFR5cGluZ0luZGljYXRvcjtcbiAgICAgICAgY29udGV4dDogZ2V0VHlwaW5nSW5kaWNhdG9yQ29udGV4dCgpXG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fanVtcC10by1sYXRlc3QtbWVzc2FnZVwiPlxuICA8YnV0dG9uXG4gICAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtdG8tbGF0ZXN0XCJcbiAgICAqbmdJZj1cIlxuICAgICAgaXNVc2VyU2Nyb2xsZWQgJiZcbiAgICAgICghaXNTY3JvbGxJblByb2dyZXNzIHx8ICFoaWRlSnVtcFRvTGF0ZXN0QnV0dG9uRHVyaW5nU2Nyb2xsKVxuICAgIFwiXG4gICAgY2xhc3M9XCJcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtdG8tbGF0ZXN0XG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLXRvLWxhdGVzdC1yaWdodFxuICAgICAgc3RyLWNoYXRfX2NpcmNsZS1mYWJcbiAgICBcIlxuICAgIChrZXl1cC5lbnRlcik9XCJqdW1wVG9MYXRlc3RNZXNzYWdlKClcIlxuICAgIChjbGljayk9XCJqdW1wVG9MYXRlc3RNZXNzYWdlKClcIlxuICA+XG4gICAgPHN0cmVhbS1pY29uXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19qdW1wLXRvLWxhdGVzdC1pY29uIHN0ci1jaGF0X19jaXJjbGUtZmFiLWljb25cIlxuICAgICAgW2ljb25dPVwiZGlyZWN0aW9uID09PSAnYm90dG9tLXRvLXRvcCcgPyAnYXJyb3ctZG93bicgOiAnYXJyb3ctdXAnXCJcbiAgICA+PC9zdHJlYW0taWNvbj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInVucmVhZE1lc3NhZ2VDb3VudCA+IDBcIlxuICAgICAgY2xhc3M9XCJcbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtdG8tbGF0ZXN0LXVucmVhZC1jb3VudFxuICAgICAgICBzdHItY2hhdF9fanVtcC10by1sYXRlc3QtdW5yZWFkLWNvdW50XG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IHVucmVhZE1lc3NhZ2VDb3VudCB9fVxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lciBsZXQtbWVzc2FnZT1cIm1lc3NhZ2VcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZGVmYXVsdE1lc3NhZ2VUZW1wbGF0ZVxuICAgIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCJcbiAgICBsZXQtaXNMYXN0U2VudE1lc3NhZ2U9XCJpc0xhc3RTZW50TWVzc2FnZVwiXG4gICAgbGV0LWVuYWJsZWRNZXNzYWdlQWN0aW9ucz1cImVuYWJsZWRNZXNzYWdlQWN0aW9uc1wiXG4gICAgbGV0LW1vZGU9XCJtb2RlXCJcbiAgICBsZXQtaXNIaWdobGlnaHRlZD1cImlzSGlnaGxpZ2h0ZWRcIlxuICAgIGxldC1jdXN0b21BY3Rpb25zPVwiY3VzdG9tQWN0aW9uc1wiXG4gID5cbiAgICA8c3RyZWFtLW1lc3NhZ2VcbiAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VJbnB1dFwiXG4gICAgICBbaXNMYXN0U2VudE1lc3NhZ2VdPVwiaXNMYXN0U2VudE1lc3NhZ2VcIlxuICAgICAgW2VuYWJsZWRNZXNzYWdlQWN0aW9uc109XCJlbmFibGVkTWVzc2FnZUFjdGlvbnNcIlxuICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICBbaXNIaWdobGlnaHRlZF09XCJpc0hpZ2hsaWdodGVkXCJcbiAgICAgIFtjdXN0b21BY3Rpb25zXT1cImN1c3RvbUFjdGlvbnNcIlxuICAgID48L3N0cmVhbS1tZXNzYWdlPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIG1lc3NhZ2VUZW1wbGF0ZSB8fCBkZWZhdWx0TWVzc2FnZVRlbXBsYXRlO1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICBpc0xhc3RTZW50TWVzc2FnZTogISEoXG4gICAgICAgICAgbGFzdFNlbnRNZXNzYWdlSWQgJiYgbWVzc2FnZT8uaWQgPT09IGxhc3RTZW50TWVzc2FnZUlkXG4gICAgICAgICksXG4gICAgICAgIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLFxuICAgICAgICBtb2RlOiBtb2RlLFxuICAgICAgICBpc0hpZ2hsaWdodGVkOiBtZXNzYWdlPy5pZCA9PT0gaGlnaGxpZ2h0ZWRNZXNzYWdlSWQsXG4gICAgICAgIGN1c3RvbUFjdGlvbnM6IGN1c3RvbU1lc3NhZ2VBY3Rpb25zXG4gICAgICB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkYXRlU2VwYXJhdG9yIGxldC1kYXRlPVwiZGF0ZVwiIGxldC1wYXJzZWREYXRlPVwicGFyc2VkRGF0ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheURhdGVTZXBhcmF0b3JcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBjdXN0b21EYXRlU2VwYXJhdG9yVGVtcGxhdGUgfHwgZGVmYXVsdERhdGVTZXBhcmF0b3I7XG4gICAgICAgIGNvbnRleHQ6IHsgZGF0ZTogZGF0ZSwgcGFyc2VkRGF0ZTogcGFyc2VkRGF0ZSB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHREYXRlU2VwYXJhdG9yXG4gICAgbGV0LWRhdGU9XCJkYXRlXCJcbiAgICBsZXQtcGFyc2VkRGF0ZT1cInBhcnNlZERhdGVcIlxuICA+XG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImRhdGUtc2VwYXJhdG9yXCIgY2xhc3M9XCJzdHItY2hhdF9fZGF0ZS1zZXBhcmF0b3JcIj5cbiAgICAgIDxoclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAncmlnaHQnIHx8IGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnY2VudGVyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvci1saW5lXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWRhdGVcIj5cbiAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8aHJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBkYXRlU2VwYXJhdG9yVGV4dFBvcyA9PT0gJ2xlZnQnIHx8IGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnY2VudGVyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvci1saW5lXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFNTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFVbEQsT0FBTyxFQUFFLGNBQWMsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBRzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBRzFDOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQXNFL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLFVBQTZCO1FBSDdCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUF2RXZDOztXQUVHO1FBQ00sU0FBSSxHQUFzQixNQUFNLENBQUM7UUFDMUM7O1dBRUc7UUFDTSxjQUFTLEdBQXNDLGVBQWUsQ0FBQztRQUN4RTs7V0FFRztRQUNNLDBCQUFxQixHQUM1QixhQUFhLENBQUM7UUFFaEI7O1dBRUc7UUFDTSx1Q0FBa0MsR0FBRyxLQUFLLENBQUM7UUFDcEQ7O1dBRUc7UUFDTSx5QkFB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QixFQUFFLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7O2lIQTNkVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwcEJDeENqQyxnMk9BK05BOzJGRHZMYSxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7ME1BT1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQU1HLGtDQUFrQztzQkFBMUMsS0FBSztnQkFJRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBSUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUlHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLd0IsS0FBSztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPO2dCQVlaLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUdwQixvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTWVzc2FnZUNvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIFR5cGluZ0luZGljYXRvckNvbnRleHQsXG4gIEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtLFxuICBEYXRlU2VwYXJhdG9yQ29udGV4dCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldEdyb3VwU3R5bGVzLCBHcm91cFN0eWxlIH0gZnJvbSAnLi9ncm91cC1zdHlsZXMnO1xuaW1wb3J0IHsgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBsaXN0VXNlcnMgfSBmcm9tICcuLi9saXN0LXVzZXJzJztcbmltcG9ydCB7IERhdGVQYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZS1wYXJzZXIuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlTGlzdGAgY29tcG9uZW50IHJlbmRlcnMgYSBzY3JvbGxhYmxlIGxpc3Qgb2YgbWVzc2FnZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUxpc3RDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGxpc3Qgc2hvdWxkIGRpc3BsYXkgY2hhbm5lbCBtZXNzYWdlcyBvciBbdGhyZWFkIG1lc3NhZ2VzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdtYWluJyB8ICd0aHJlYWQnID0gJ21haW4nO1xuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiBvZiB0aGUgbWVzc2FnZXMgaW4gdGhlIGxpc3QsIGBib3R0b20tdG8tdG9wYCBtZWFucyBuZXdlc3QgbWVzc2FnZSBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBtZXNzYWdlIGxpc3QgYW5kIHVzZXJzIHNjcm9sbCB1cHdhcmRzIHRvIGxvYWQgb2xkZXIgbWVzc2FnZXNcbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2JvdHRvbS10by10b3AnIHwgJ3RvcC10by1ib3R0b20nID0gJ2JvdHRvbS10by10b3AnO1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGF0IHRyaWdnZXJzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBtZXNzYWdlIG9wdGlvbnM6IGJ5IGRlZmF1bHQgeW91IGNhbiBob3ZlciAoY2xpY2sgb24gbW9iaWxlKSBhbnl3aGVyZSBpbiB0aGUgcm93IG9mIHRoZSBtZXNzYWdlIChgbWVzc2FnZS1yb3dgIG9wdGlvbiksIG9yIHlvdSBjYW4gc2V0IGBtZXNzYWdlLWJ1YmJsZWAsIGluIHRoYXQgY2FzZSBvbmx5IGEgaG92ZXIgKGNsaWNrIG9uIG1vYmlsZSkgaW4gdGhlIG1lc3NhZ2UgYnViYmxlIHdpbGwgdHJpZ2dlciB0aGUgb3B0aW9ucyB0byBhcHBlYXIuXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlT3B0aW9uc1RyaWdnZXI6ICdtZXNzYWdlLXJvdycgfCAnbWVzc2FnZS1idWJibGUnID1cbiAgICAnbWVzc2FnZS1yb3cnO1xuICB0eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHlwaW5nSW5kaWNhdG9yQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBZb3UgY2FuIGhpZGUgdGhlIFwianVtcCB0byBsYXRlc3RcIiBidXR0b24gd2hpbGUgc2Nyb2xsaW5nLiBBIHBvdGVudGlhbCB1c2UtY2FzZSBmb3IgdGhpcyBpbnB1dCB3b3VsZCBiZSB0byBbd29ya2Fyb3VuZCBhIGtub3duIGlzc3VlIG9uIGlPUyBTYWZhcl0oaHR0cHM6Ly9naXRodWIuY29tL0dldFN0cmVhbS9zdHJlYW0tY2hhdC1hbmd1bGFyL2lzc3Vlcy80MTgpXG4gICAqL1xuICBASW5wdXQoKSBoaWRlSnVtcFRvTGF0ZXN0QnV0dG9uRHVyaW5nU2Nyb2xsID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgY3VzdG9tIG1lc3NhZ2UgYWN0aW9ucyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1lc3NhZ2UgYWN0aW9uIGJveFxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tTWVzc2FnZUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtPGFueT5bXSA9IFtdO1xuICAvKipcbiAgICogSWYgYHRydWVgIGRhdGUgc2VwYXJhdG9ycyB3aWxsIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheURhdGVTZXBhcmF0b3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgZGF0ZSBzZXBhcmF0b3JzIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gc2V0IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkYXRlIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBkYXRlU2VwYXJhdG9yVGV4dFBvczogJ2NlbnRlcicgfCAncmlnaHQnIHwgJ2xlZnQnID0gJ2NlbnRlcic7XG4gIG1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8TWVzc2FnZUNvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICBjdXN0b21EYXRlU2VwYXJhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPERhdGVTZXBhcmF0b3JDb250ZXh0PiB8IHVuZGVmaW5lZDtcbiAgbWVzc2FnZXMkITogT2JzZXJ2YWJsZTxTdHJlYW1NZXNzYWdlW10+O1xuICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwcml2YXRlIGNsYXNzID1cbiAgICAnc3RyLWNoYXQtYW5ndWxhcl9fbWFpbi1wYW5lbC1pbm5lciBzdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWxpc3QtaG9zdCBzdHItY2hhdF9fbWFpbi1wYW5lbC1pbm5lcic7XG4gIHVucmVhZE1lc3NhZ2VDb3VudCA9IDA7XG4gIGlzVXNlclNjcm9sbGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGhpZ2hsaWdodGVkTWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBpc1Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgc2Nyb2xsRW5kVGltZW91dDogYW55O1xuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKVxuICBwcml2YXRlIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdwYXJlbnRNZXNzYWdlRWxlbWVudCcpXG4gIHByaXZhdGUgcGFyZW50TWVzc2FnZUVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBsYXRlc3RNZXNzYWdlOiB7IGlkOiBzdHJpbmc7IGNyZWF0ZWRfYXQ6IERhdGUgfSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoYXNOZXdNZXNzYWdlczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjb250YWluZXJIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvbGRlc3RNZXNzYWdlOiB7IGlkOiBzdHJpbmc7IGNyZWF0ZWRfYXQ6IERhdGUgfSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvbGRlck1hc3NhZ2VzTG9hZGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzTmV3TWVzc2FnZVNlbnRCeVVzZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBuZXdNZXNzYWdlU3Vic2NyaXB0aW9uOiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH0gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldlNjcm9sbFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHVzZXJzVHlwaW5nSW5DaGFubmVsJCE6IE9ic2VydmFibGU8XG4gICAgVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W11cbiAgPjtcbiAgcHJpdmF0ZSB1c2Vyc1R5cGluZ0luVGhyZWFkJCE6IE9ic2VydmFibGU8XG4gICAgVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W11cbiAgPjtcbiAgcHJpdmF0ZSBpc0xhdGVzdE1lc3NhZ2VJbkxpc3QgPSB0cnVlO1xuICBwcml2YXRlIGNoYW5uZWxJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGFyc2VyOiBEYXRlUGFyc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjaGFubmVsKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNoYW5uZWxJZCAhPT0gY2hhbm5lbD8uaWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgICB0aGlzLmNoYW5uZWxJZCA9IGNoYW5uZWw/LmlkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGVzID0gY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICAgICAgaWYgKGNhcGFiaWxpdGVzKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgPSBjYXBhYmlsaXRlcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5ld01lc3NhZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmIChjaGFubmVsKSB7XG4gICAgICAgICAgdGhpcy5uZXdNZXNzYWdlU3Vic2NyaXB0aW9uID0gY2hhbm5lbC5vbignbWVzc2FnZS5uZXcnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIElmIHdlIGRpc3BsYXkgbWFpbiBjaGFubmVsIG1lc3NhZ2VzIGFuZCB3ZSdyZSBzd2l0Y2hlZCB0byBhbiBvbGRlciBtZXNzYWdlIHNldCAtPiB1c2UgbWVzc2FnZS5uZXcgZXZlbnQgdG8gdXBkYXRlIHVucmVhZCBjb3VudCBhbmQgZGV0ZWN0IG5ldyBtZXNzYWdlcyBzZW50IGJ5IGN1cnJlbnQgdXNlclxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhZXZlbnQubWVzc2FnZSB8fFxuICAgICAgICAgICAgICBjaGFubmVsLnN0YXRlLm1lc3NhZ2VzID09PSBjaGFubmVsLnN0YXRlLmxhdGVzdE1lc3NhZ2VzIHx8XG4gICAgICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ3RocmVhZCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm5ld01lc3NhZ2VSZWNlaXZlZCh7XG4gICAgICAgICAgICAgIGlkOiBldmVudC5tZXNzYWdlLmlkLFxuICAgICAgICAgICAgICB1c2VyOiBldmVudC5tZXNzYWdlLnVzZXIsXG4gICAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKGV2ZW50Lm1lc3NhZ2UuY3JlYXRlZF9hdCB8fCAnJyksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1lc3NhZ2UgJiZcbiAgICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgJiZcbiAgICAgICAgICBtZXNzYWdlLmlkICE9PSB0aGlzLnBhcmVudE1lc3NhZ2UuaWQgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZVRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMubWVzc2FnZVRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5kYXRlU2VwYXJhdG9yVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5jdXN0b21EYXRlU2VwYXJhdG9yVGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLnR5cGluZ0luZGljYXRvclRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMudHlwaW5nSW5kaWNhdG9yVGVtcGxhdGUgPSB0ZW1wbGF0ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMudXNlcnNUeXBpbmdJbkNoYW5uZWwkID0gdGhpcy5jaGFubmVsU2VydmljZS51c2Vyc1R5cGluZ0luQ2hhbm5lbCQ7XG4gICAgdGhpcy51c2Vyc1R5cGluZ0luVGhyZWFkJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UudXNlcnNUeXBpbmdJblRocmVhZCQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1lc3NhZ2VzJCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm1vZGUgfHwgY2hhbmdlcy5kaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnZXMkKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRpcmVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZSRcbiAgICAgICAgLnBpcGUoZmlsdGVyKChjb25maWcpID0+ICEhY29uZmlnLmlkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgbGV0IG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdtYWluJykge1xuICAgICAgICAgICAgbWVzc2FnZUlkID0gY29uZmlnLnBhcmVudElkIHx8IGNvbmZpZy5pZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5wYXJlbnRJZCkge1xuICAgICAgICAgICAgbWVzc2FnZUlkID0gY29uZmlnLmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWVzc2FnZUlkKSB7XG4gICAgICAgICAgICBpZiAobWVzc2FnZUlkID09PSAnbGF0ZXN0Jykge1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxNZXNzYWdlSW50b1ZpZXcobWVzc2FnZUlkKTtcbiAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZCA9IG1lc3NhZ2VJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZCkge1xuICAgICAgLy8gVHVybiBvZmYgcHJvZ3JhbWF0aWMgc2Nyb2xsIGFkanVzdG1lbnRzIHdoaWxlIGp1bXAgdG8gbWVzc2FnZSBpcyBpbiBwcm9ncmVzc1xuICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IGZhbHNlO1xuICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ3RvcC10by1ib3R0b20nKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgJiZcbiAgICAgICAgKHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciB8fCAhdGhpcy5pc1VzZXJTY3JvbGxlZClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdFxuICAgICAgICAgID8gdGhpcy5zY3JvbGxUb1RvcCgpXG4gICAgICAgICAgOiB0aGlzLmp1bXBUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5oYXNOZXdNZXNzYWdlcykge1xuICAgICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWQgfHwgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyKSB7XG4gICAgICAgICAgdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3RcbiAgICAgICAgICAgID8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgICAgICA6IHRoaXMuanVtcFRvTGF0ZXN0TWVzc2FnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkKSB7XG4gICAgICAgIHRoaXMucHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKSAhPT0gJ2JvdHRvbScgJiZcbiAgICAgICAgIXRoaXMuaXNVc2VyU2Nyb2xsZWQgJiZcbiAgICAgICAgIXRoaXMuaGlnaGxpZ2h0ZWRNZXNzYWdlSWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdFxuICAgICAgICAgID8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgICAgOiB0aGlzLmp1bXBUb0xhdGVzdE1lc3NhZ2UoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLm5ld01lc3NhZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuc2Nyb2xsRW5kVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsRW5kVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeU1lc3NhZ2VJZChpbmRleDogbnVtYmVyLCBpdGVtOiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICB0cmFja0J5VXNlcklkKGluZGV4OiBudW1iZXIsIHVzZXI6IFVzZXJSZXNwb25zZSkge1xuICAgIHJldHVybiB1c2VyLmlkO1xuICB9XG5cbiAganVtcFRvTGF0ZXN0TWVzc2FnZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZShcbiAgICAgICdsYXRlc3QnLFxuICAgICAgdGhpcy5tb2RlID09PSAndGhyZWFkJyA/IHRoaXMucGFyZW50TWVzc2FnZT8uaWQgOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBzY3JvbGxlZCgpIHtcbiAgICB0aGlzLmlzU2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2Nyb2xsRW5kVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2Nyb2xsRW5kVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsRW5kVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1Njcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9LCAxMDApO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID09PVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkID1cbiAgICAgICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnXG4gICAgICAgID8gc2Nyb2xsUG9zaXRpb24gIT09ICdib3R0b20nXG4gICAgICAgIDogc2Nyb2xsUG9zaXRpb24gIT09ICd0b3AnKSB8fCAhdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3Q7XG4gICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkKSB7XG4gICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCA9IDA7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZExvYWRNb3JlTWVzc2FnZXMoc2Nyb2xsUG9zaXRpb24pKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgbGV0IGRpcmVjdGlvbjogJ25ld2VyJyB8ICdvbGRlcic7XG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICd0b3AtdG8tYm90dG9tJykge1xuICAgICAgICBkaXJlY3Rpb24gPSBzY3JvbGxQb3NpdGlvbiA9PT0gJ3RvcCcgPyAnbmV3ZXInIDogJ29sZGVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IHNjcm9sbFBvc2l0aW9uID09PSAndG9wJyA/ICdvbGRlcicgOiAnbmV3ZXInO1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgICAgPyB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UubG9hZE1vcmVNZXNzYWdlcyhkaXJlY3Rpb24pXG4gICAgICAgIDogdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlVGhyZWFkUmVwbGllcyhkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnByZXZTY3JvbGxUb3AgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgfVxuXG4gIGdldFR5cGluZ0luZGljYXRvckNvbnRleHQoKTogVHlwaW5nSW5kaWNhdG9yQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJzVHlwaW5nJDogdGhpcy51c2Vyc1R5cGluZyQsXG4gICAgfTtcbiAgfVxuXG4gIGdldFR5cGluZ0luZGljYXRvclRleHQodXNlcnM6IFVzZXJSZXNwb25zZVtdKSB7XG4gICAgY29uc3QgdGV4dCA9IGxpc3RVc2Vycyh1c2Vycyk7XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGFyZU9uU2VwYXJhdGVEYXRlcyhtZXNzYWdlOiBTdHJlYW1NZXNzYWdlLCBuZXh0TWVzc2FnZT86IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBpZiAoIW5leHRNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNyZWF0ZWRfYXQuZ2V0RGF0ZSgpICE9PSBuZXh0TWVzc2FnZS5jcmVhdGVkX2F0LmdldERhdGUoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRGdWxsWWVhcigpICE9PVxuICAgICAgICBuZXh0TWVzc2FnZS5jcmVhdGVkX2F0LmdldEZ1bGxZZWFyKCkgfHxcbiAgICAgIG1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRNb250aCgpICE9PSBuZXh0TWVzc2FnZS5jcmVhdGVkX2F0LmdldE1vbnRoKClcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwYXJzZURhdGUoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmRhdGVQYXJzZXIucGFyc2VEYXRlKGRhdGUpO1xuICB9XG5cbiAgZ2V0IHJlcGx5Q291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyByZXBseUNvdW50OiB0aGlzLnBhcmVudE1lc3NhZ2U/LnJlcGx5X2NvdW50IH07XG4gIH1cblxuICBwcml2YXRlIHByZXNlcnZlU2Nyb2xsYmFyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgKHRoaXMucHJldlNjcm9sbFRvcCB8fCAwKSArXG4gICAgICAodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmNvbnRhaW5lckhlaWdodCEpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY3JvbGxQb3NpdGlvbigpOiAndG9wJyB8ICdib3R0b20nIHwgJ21pZGRsZScge1xuICAgIGxldCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnID0gJ21pZGRsZSc7XG4gICAgaWYgKFxuICAgICAgTWF0aC5mbG9vcih0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCkgPD1cbiAgICAgICAgKHRoaXMucGFyZW50TWVzc2FnZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDApICYmXG4gICAgICAodGhpcy5wcmV2U2Nyb2xsVG9wID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5wcmV2U2Nyb2xsVG9wID5cbiAgICAgICAgICAodGhpcy5wYXJlbnRNZXNzYWdlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMCkpXG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9ICd0b3AnO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBNYXRoLmNlaWwodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApICtcbiAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPj1cbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKSB7XG4gICAgICBwb3NpdGlvbiA9ICdib3R0b20nO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTG9hZE1vcmVNZXNzYWdlcyhzY3JvbGxQb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdtaWRkbGUnKSB7XG4gICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uICE9PSAnbWlkZGxlJyAmJiAhdGhpcy5oaWdobGlnaHRlZE1lc3NhZ2VJZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVzc2FnZXMkKCkge1xuICAgIHRoaXMubWVzc2FnZXMkID0gKFxuICAgICAgdGhpcy5tb2RlID09PSAnbWFpbidcbiAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWxNZXNzYWdlcyRcbiAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVRocmVhZE1lc3NhZ2VzJFxuICAgICkucGlwZShcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50TGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICB0aGlzLm5ld01lc3NhZ2VSZWNlaXZlZChjdXJyZW50TGF0ZXN0TWVzc2FnZSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPbGRlc3RNZXNzYWdlID0gbWVzc2FnZXNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5vbGRlc3RNZXNzYWdlIHx8XG4gICAgICAgICAgIW1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IHRoaXMub2xkZXN0TWVzc2FnZSEuaWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZS5jcmVhdGVkX2F0LmdldFRpbWUoKSA+XG4gICAgICAgICAgY3VycmVudE9sZGVzdE1lc3NhZ2UuY3JlYXRlZF9hdC5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlID0gY3VycmVudE9sZGVzdE1lc3NhZ2U7XG4gICAgICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoXG4gICAgICAgIChtZXNzYWdlcykgPT5cbiAgICAgICAgICAodGhpcy5sYXN0U2VudE1lc3NhZ2VJZCA9IFsuLi5tZXNzYWdlc11cbiAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgICAobSkgPT5cbiAgICAgICAgICAgICAgICBtLnVzZXI/LmlkID09PSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQ/LnVzZXI/LmlkICYmXG4gICAgICAgICAgICAgICAgbS5zdGF0dXMgIT09ICdzZW5kaW5nJ1xuICAgICAgICAgICAgKT8uaWQpXG4gICAgICApLFxuICAgICAgdGFwKChtZXNzYWdlcykgPT4ge1xuICAgICAgICB0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdCA9XG4gICAgICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZSB8fFxuICAgICAgICAgIG1lc3NhZ2VzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdLmlkID09PSB0aGlzLmxhdGVzdE1lc3NhZ2UuaWQ7XG4gICAgICAgIGlmICghdGhpcy5pc0xhdGVzdE1lc3NhZ2VJbkxpc3QpIHtcbiAgICAgICAgICB0aGlzLmlzVXNlclNjcm9sbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKG1lc3NhZ2VzKSA9PlxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9PT0gJ2JvdHRvbS10by10b3AnID8gbWVzc2FnZXMgOiBbLi4ubWVzc2FnZXNdLnJldmVyc2UoKVxuICAgICAgKSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cFN0eWxlcyA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBnZXRHcm91cFN0eWxlcyhtLCBtZXNzYWdlc1tpIC0gMV0sIG1lc3NhZ2VzW2kgKyAxXSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTY3JvbGxTdGF0ZSgpIHtcbiAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IHRydWU7XG4gICAgdGhpcy5pc1VzZXJTY3JvbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMub2xkZXN0TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCA9IDA7XG4gICAgdGhpcy5wcmV2U2Nyb2xsVG9wID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzTGF0ZXN0TWVzc2FnZUluTGlzdCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldCB1c2Vyc1R5cGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3RocmVhZCdcbiAgICAgID8gdGhpcy51c2Vyc1R5cGluZ0luVGhyZWFkJFxuICAgICAgOiB0aGlzLnVzZXJzVHlwaW5nSW5DaGFubmVsJDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsTWVzc2FnZUludG9WaWV3KG1lc3NhZ2VJZDogc3RyaW5nLCB3aXRoUmV0cnkgPSB0cnVlKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1lc3NhZ2VJZCk7XG4gICAgaWYgKCFlbGVtZW50ICYmIHdpdGhSZXRyeSkge1xuICAgICAgLy8gSWYgdGhlIG1lc3NhZ2Ugd2FzIG5ld2x5IGluc2VydGVkIGludG8gYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJCwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSByZW5kZXJlZCBhZnRlciB0aGUgY3VycmVudCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIC0+IHdhaXQgZm9yIHRoaXMgY3ljbGUgdG8gY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxNZXNzYWdlSW50b1ZpZXcobWVzc2FnZUlkLCBmYWxzZSkpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudCkge1xuICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkTWVzc2FnZUlkID0gdW5kZWZpbmVkO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0xhdGVzdE1lc3NhZ2Uod2l0aFJldHJ5ID0gdHJ1ZSkge1xuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmxhdGVzdE1lc3NhZ2UhLmlkKSkge1xuICAgICAgdGhpcy5kaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJ1xuICAgICAgICA/IHRoaXMuc2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICA6IHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9IGVsc2UgaWYgKHdpdGhSZXRyeSkge1xuICAgICAgLy8gSWYgdGhlIG1lc3NhZ2Ugd2FzIG5ld2x5IGluc2VydGVkIGludG8gYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJCwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSByZW5kZXJlZCBhZnRlciB0aGUgY3VycmVudCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIC0+IHdhaXQgZm9yIHRoaXMgY3ljbGUgdG8gY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0xhdGVzdE1lc3NhZ2UoZmFsc2UpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5ld01lc3NhZ2VSZWNlaXZlZChtZXNzYWdlOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjcmVhdGVkX2F0OiBEYXRlO1xuICAgIHVzZXI/OiB7IGlkOiBzdHJpbmcgfSB8IG51bGw7XG4gIH0pIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5sYXRlc3RNZXNzYWdlIHx8XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UuY3JlYXRlZF9hdD8uZ2V0VGltZSgpIDwgbWVzc2FnZS5jcmVhdGVkX2F0LmdldFRpbWUoKVxuICAgICkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID1cbiAgICAgICAgbWVzc2FnZS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZDtcbiAgICAgIGlmICh0aGlzLmlzVXNlclNjcm9sbGVkKSB7XG4gICAgICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNzY3JvbGxDb250YWluZXJcbiAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbGlzdFwiXG4gIChzY3JvbGwpPVwic2Nyb2xsZWQoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcmV2ZXJzZS1pbmZpbml0ZS1zY3JvbGwgc3RyLWNoYXRfX21lc3NhZ2UtbGlzdC1zY3JvbGxcIj5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3VsXCJcbiAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1vcHRpb25zLWluLWJ1YmJsZV09XCJcbiAgICAgICAgbWVzc2FnZU9wdGlvbnNUcmlnZ2VyID09PSAnbWVzc2FnZS1idWJibGUnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsaVxuICAgICAgICAjcGFyZW50TWVzc2FnZUVsZW1lbnRcbiAgICAgICAgKm5nSWY9XCJtb2RlID09PSAndGhyZWFkJyAmJiBwYXJlbnRNZXNzYWdlXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJwYXJlbnQtbWVzc2FnZVwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BhcmVudC1tZXNzYWdlLWxpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZXNzYWdlVGVtcGxhdGVDb250YWluZXI7XG4gICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IHBhcmVudE1lc3NhZ2UsIGluZGV4OiAncGFyZW50JyB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwicmVwbHktY291bnRcIiBjbGFzcz1cInN0ci1jaGF0X190aHJlYWQtc3RhcnRcIj5cbiAgICAgICAgICB7e3BhcmVudE1lc3NhZ2U/LnJlcGx5X2NvdW50ID09PSAxID8gKCdzdHJlYW1DaGF0LjEgcmVwbHknIHwgdHJhbnNsYXRlKSA6ICgnc3RyZWFtQ2hhdC57eyByZXBseUNvdW50IH19XG4gICAgICAgICAgcmVwbGllcycgfCB0cmFuc2xhdGU6cmVwbHlDb3VudFBhcmFtKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICAgIDxzdHJlYW0tbG9hZGluZy1pbmRpY2F0b3JcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0b3AtbG9hZGluZy1pbmRpY2F0b3JcIlxuICAgICAgICAqbmdJZj1cImlzTG9hZGluZyAmJiBkaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJ1wiXG4gICAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3I+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZXMkIHwgYXN5bmMgYXMgbWVzc2FnZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXM7XG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgICAgICAgbGV0IGlzRmlyc3QgPSBmaXJzdDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlNZXNzYWdlSWRcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlyc3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBkYXRlU2VwYXJhdG9yO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGU6IG1lc3NhZ2UuY3JlYXRlZF9hdCxcbiAgICAgICAgICAgICAgICAgIHBhcnNlZERhdGU6IHBhcnNlRGF0ZShtZXNzYWdlLmNyZWF0ZWRfYXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGNsYXNzPVwibWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fbGktLXt7IGdyb3VwU3R5bGVzW2ldIH19XCJcbiAgICAgICAgICAgIGlkPVwie3sgbWVzc2FnZS5pZCB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIG1lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UsIGluZGV4OiBpIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcmVPblNlcGFyYXRlRGF0ZXMobWVzc2FnZSwgbWVzc2FnZXNbaSArIDFdKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGRhdGVTZXBhcmF0b3I7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgZGF0ZTogbWVzc2FnZXNbaSArIDFdLmNyZWF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgICBwYXJzZWREYXRlOiBwYXJzZURhdGUobWVzc2FnZXNbaSArIDFdLmNyZWF0ZWRfYXQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHN0cmVhbS1sb2FkaW5nLWluZGljYXRvclxuICAgICAgICBkYXRhLXRlc3RpZD1cImJvdHRvbS1sb2FkaW5nLWluZGljYXRvclwiXG4gICAgICAgICpuZ0lmPVwiaXNMb2FkaW5nICYmIGRpcmVjdGlvbiA9PT0gJ3RvcC10by1ib3R0b20nXCJcbiAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvcj5cbiAgICA8L3VsPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFR5cGluZ0luZGljYXRvciBsZXQtdXNlcnNUeXBpbmckPVwidXNlcnNUeXBpbmckXCI+XG4gICAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvbm8tYW55IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRhbnkodXNlcnNUeXBpbmckIHwgYXN5bmMpIGFzIHVzZXJzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInVzZXJzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwidHlwaW5nLWluZGljYXRvclwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvciBzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvci0tdHlwaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90c1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fdHlwaW5nLWluZGljYXRvcl9fZG90XCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidHlwaW5nLXVzZXJzXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3R5cGluZy1pbmRpY2F0b3JfX3VzZXJzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICB1c2Vycy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICA/IChcInN0cmVhbUNoYXQudXNlciBpcyB0eXBpbmdcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgdXNlcjogZ2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh1c2VycykgfSlcbiAgICAgICAgICAgICAgICA6IChcInN0cmVhbUNoYXQudXNlcnMgYXJlIHR5cGluZ1wiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyB1c2VyczogZ2V0VHlwaW5nSW5kaWNhdG9yVGV4dCh1c2VycykgfSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0eXBpbmdJbmRpY2F0b3JUZW1wbGF0ZSB8fCBkZWZhdWx0VHlwaW5nSW5kaWNhdG9yO1xuICAgICAgICBjb250ZXh0OiBnZXRUeXBpbmdJbmRpY2F0b3JDb250ZXh0KClcbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInN0ci1jaGF0X19qdW1wLXRvLWxhdGVzdC1tZXNzYWdlXCI+XG4gIDxidXR0b25cbiAgICBkYXRhLXRlc3RpZD1cInNjcm9sbC10by1sYXRlc3RcIlxuICAgICpuZ0lmPVwiXG4gICAgICBpc1VzZXJTY3JvbGxlZCAmJlxuICAgICAgKCFpc1Njcm9sbEluUHJvZ3Jlc3MgfHwgIWhpZGVKdW1wVG9MYXRlc3RCdXR0b25EdXJpbmdTY3JvbGwpXG4gICAgXCJcbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC10by1sYXRlc3RcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtdG8tbGF0ZXN0LXJpZ2h0XG4gICAgICBzdHItY2hhdF9fY2lyY2xlLWZhYlxuICAgIFwiXG4gICAgKGtleXVwLmVudGVyKT1cImp1bXBUb0xhdGVzdE1lc3NhZ2UoKVwiXG4gICAgKGNsaWNrKT1cImp1bXBUb0xhdGVzdE1lc3NhZ2UoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb25cbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2p1bXAtdG8tbGF0ZXN0LWljb24gc3RyLWNoYXRfX2NpcmNsZS1mYWItaWNvblwiXG4gICAgICBbaWNvbl09XCJkaXJlY3Rpb24gPT09ICdib3R0b20tdG8tdG9wJyA/ICdhcnJvdy1kb3duJyA6ICdhcnJvdy11cCdcIlxuICAgID48L3N0cmVhbS1pY29uPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwidW5yZWFkTWVzc2FnZUNvdW50ID4gMFwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC10by1sYXRlc3QtdW5yZWFkLWNvdW50XG4gICAgICAgIHN0ci1jaGF0X19qdW1wLXRvLWxhdGVzdC11bnJlYWQtY291bnRcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgdW5yZWFkTWVzc2FnZUNvdW50IH19XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVRlbXBsYXRlQ29udGFpbmVyIGxldC1tZXNzYWdlPVwibWVzc2FnZVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXG4gICAgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIlxuICAgIGxldC1pc0xhc3RTZW50TWVzc2FnZT1cImlzTGFzdFNlbnRNZXNzYWdlXCJcbiAgICBsZXQtZW5hYmxlZE1lc3NhZ2VBY3Rpb25zPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICBsZXQtbW9kZT1cIm1vZGVcIlxuICAgIGxldC1pc0hpZ2hsaWdodGVkPVwiaXNIaWdobGlnaHRlZFwiXG4gICAgbGV0LWN1c3RvbUFjdGlvbnM9XCJjdXN0b21BY3Rpb25zXCJcbiAgPlxuICAgIDxzdHJlYW0tbWVzc2FnZVxuICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZUlucHV0XCJcbiAgICAgIFtpc0xhc3RTZW50TWVzc2FnZV09XCJpc0xhc3RTZW50TWVzc2FnZVwiXG4gICAgICBbZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXT1cImVuYWJsZWRNZXNzYWdlQWN0aW9uc1wiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgIFtpc0hpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICAgICAgW2N1c3RvbUFjdGlvbnNdPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgPjwvc3RyZWFtLW1lc3NhZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgbWVzc2FnZVRlbXBsYXRlIHx8IGRlZmF1bHRNZXNzYWdlVGVtcGxhdGU7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIGlzTGFzdFNlbnRNZXNzYWdlOiAhIShcbiAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgKSxcbiAgICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBlbmFibGVkTWVzc2FnZUFjdGlvbnMsXG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIGlzSGlnaGxpZ2h0ZWQ6IG1lc3NhZ2U/LmlkID09PSBoaWdobGlnaHRlZE1lc3NhZ2VJZCxcbiAgICAgICAgY3VzdG9tQWN0aW9uczogY3VzdG9tTWVzc2FnZUFjdGlvbnNcbiAgICAgIH1cbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RhdGVTZXBhcmF0b3IgbGV0LWRhdGU9XCJkYXRlXCIgbGV0LXBhcnNlZERhdGU9XCJwYXJzZWREYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5RGF0ZVNlcGFyYXRvclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGN1c3RvbURhdGVTZXBhcmF0b3JUZW1wbGF0ZSB8fCBkZWZhdWx0RGF0ZVNlcGFyYXRvcjtcbiAgICAgICAgY29udGV4dDogeyBkYXRlOiBkYXRlLCBwYXJzZWREYXRlOiBwYXJzZWREYXRlIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGVcbiAgICAjZGVmYXVsdERhdGVTZXBhcmF0b3JcbiAgICBsZXQtZGF0ZT1cImRhdGVcIlxuICAgIGxldC1wYXJzZWREYXRlPVwicGFyc2VkRGF0ZVwiXG4gID5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZGF0ZS1zZXBhcmF0b3JcIiBjbGFzcz1cInN0ci1jaGF0X19kYXRlLXNlcGFyYXRvclwiPlxuICAgICAgPGhyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdyaWdodCcgfHwgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdjZW50ZXInXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWxpbmVcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGF0ZS1zZXBhcmF0b3ItZGF0ZVwiPlxuICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGRhdGVTZXBhcmF0b3JUZXh0UG9zID09PSAnbGVmdCcgfHwgZGF0ZVNlcGFyYXRvclRleHRQb3MgPT09ICdjZW50ZXInXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2RhdGUtc2VwYXJhdG9yLWxpbmVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2015/lib/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxNZW1iZXJSZXNwb25zZSxcbiAgQ29tbWFuZFJlc3BvbnNlLFxuICBFdmVudCxcbiAgRXh0ZW5kYWJsZUdlbmVyaWNzLFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIExpdGVyYWxTdHJpbmdGb3JVbmlvbixcbiAgTWVzc2FnZVJlc3BvbnNlQmFzZSxcbiAgTXV0ZSxcbiAgUmVhY3Rpb25SZXNwb25zZSxcbiAgVXNlcixcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBVbmtub3duVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBDdXN0b21UcmlnZ2VyID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29tcG9uZW50UHJvcHM6IFVua25vd25UeXBlO1xuICAgIGRhdGE6IFVua25vd25UeXBlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IEV4dGVuZGFibGVHZW5lcmljcyAmIHtcbiAgYXR0YWNobWVudFR5cGU6IERlZmF1bHRBdHRhY2htZW50VHlwZTtcbiAgY2hhbm5lbFR5cGU6IERlZmF1bHRDaGFubmVsVHlwZTtcbiAgY29tbWFuZFR5cGU6IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcbiAgZXZlbnRUeXBlOiBVbmtub3duVHlwZTtcbiAgbWVzc2FnZVR5cGU6IERlZmF1bHRNZXNzYWdlVHlwZTtcbiAgcmVhY3Rpb25UeXBlOiBVbmtub3duVHlwZTtcbiAgdXNlclR5cGU6IERlZmF1bHRVc2VyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRBdHRhY2htZW50VHlwZSA9IFVua25vd25UeXBlICYge1xuICBhc3NldF91cmw/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpbWFnZXM/OiBBcnJheTxBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+PjtcbiAgbWltZV90eXBlPzogc3RyaW5nO1xuICBpc0N1c3RvbUF0dGFjaG1lbnQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENoYW5uZWxUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBtZW1iZXJfY291bnQ/OiBudW1iZXI7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENvbW1hbmRUeXBlID0gTGl0ZXJhbFN0cmluZ0ZvclVuaW9uO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TWVzc2FnZVR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgY3VzdG9tVHlwZT86ICdjaGFubmVsLmludHJvJyB8ICdtZXNzYWdlLmRhdGUnO1xuICBkYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgZXJyb3JTdGF0dXNDb2RlPzogbnVtYmVyO1xuICBldmVudD86IEV2ZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICB1bnJlYWQ/OiBib29sZWFuO1xuICByZWFkQnk6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICB0cmFuc2xhdGlvbj86IHN0cmluZztcbiAgcXVvdGVkX21lc3NhZ2U/OiBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlSW50ZXJuYWwgPSB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0VXNlclR5cGUgPSBVbmtub3duVHlwZSAmXG4gIERlZmF1bHRVc2VyVHlwZUludGVybmFsICYge1xuICAgIG11dGVzPzogQXJyYXk8TXV0ZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIH07XG5cbmV4cG9ydCB0eXBlIFN0cmVhbU1lc3NhZ2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IEZvcm1hdE1lc3NhZ2VSZXNwb25zZTxUPjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFVwbG9hZDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBmaWxlOiBGaWxlO1xuICBzdGF0ZTogJ2Vycm9yJyB8ICdzdWNjZXNzJyB8ICd1cGxvYWRpbmcnO1xuICB1cmw/OiBzdHJpbmc7XG4gIHR5cGU6ICdpbWFnZScgfCAnZmlsZScgfCAndmlkZW8nO1xuICBwcmV2aWV3VXJpPzogc3RyaW5nIHwgQXJyYXlCdWZmZXI7XG4gIHRodW1iX3VybD86IHN0cmluZztcbiAgZnJvbUF0dGFjaG1lbnQ/OiBBdHRhY2htZW50PFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0ID0ge1xuICBpdGVtOiBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbW1hbmRBdXRvY29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IENvbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW0gPSAoXG4gIHwgQ2hhbm5lbE1lbWJlclJlc3BvbnNlXG4gIHwgVXNlclJlc3BvbnNlXG4pICYge1xuICBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW0gPSBDb21tYW5kUmVzcG9uc2UgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25UeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdpbmZvJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGF5bG9hZDxUID0ge30+ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0cmFuc2xhdGVQYXJhbXM/OiBPYmplY3Q7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG4gIHRlbXBsYXRlQ29udGV4dD86IFQ7XG4gIGRpc21pc3NGbjogRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUHJldmlld0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgY2hhbm5lbDogQ2hhbm5lbDxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VJbnB1dENvbnRleHQgPSB7XG4gIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJyB8IHVuZGVmaW5lZDtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlVXBkYXRlSGFuZGxlcjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gIHNlbmRNZXNzYWdlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQgPSB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdXNlcjogVXNlclJlc3BvbnNlO1xufTtcblxuZXhwb3J0IHR5cGUgRW1vamlQaWNrZXJDb250ZXh0ID0ge1xuICBlbW9qaUlucHV0JDogU3ViamVjdDxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgVHlwaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgdXNlcnNUeXBpbmckOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdO1xuICBpc0xhc3RTZW50TWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbW9kZTogJ3RocmVhZCcgfCAnbWFpbic7XG4gIGlzSGlnaGxpZ2h0ZWQ6IGJvb2xlYW47XG4gIGN1c3RvbUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtW107XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQWN0aW9uc0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGlzdENvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI/OiAoc3RhdGU6ICdvcGVuZWQnIHwgJ2Nsb3NlZCcpID0+IHt9O1xufTtcblxuZXhwb3J0IHR5cGUgQXZhdGFyVHlwZSA9ICdjaGFubmVsJyB8ICd1c2VyJztcblxuZXhwb3J0IHR5cGUgQXZhdGFyTG9jYXRpb24gPVxuICB8ICdjaGFubmVsLXByZXZpZXcnXG4gIHwgJ2NoYW5uZWwtaGVhZGVyJ1xuICB8ICdtZXNzYWdlLXNlbmRlcidcbiAgfCAnbWVzc2FnZS1yZWFkZXInXG4gIHwgJ3F1b3RlZC1tZXNzYWdlLXNlbmRlcidcbiAgfCAnYXV0b2NvbXBsZXRlLWl0ZW0nXG4gIHwgJ3R5cGluZy1pbmRpY2F0b3InXG4gIHwgJ3JlYWN0aW9uJztcblxuZXhwb3J0IHR5cGUgQXZhdGFyQ29udGV4dCA9IHtcbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIHVzZXI/OiBVc2VyPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICBpbml0aWFsc1R5cGU/OiAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnIHwgJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT4gfCB1bmRlZmluZWQ7XG4gIHJldHJ5VXBsb2FkSGFuZGxlcjogKGY6IEZpbGUpID0+IGFueTtcbiAgZGVsZXRlVXBsb2FkSGFuZGxlcjogKHU6IEF0dGFjaG1lbnRVcGxvYWQpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0ID0ge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYmVjYXVzZSB0aGUgbmFtZSBjb250YWlucyB0eXBvcywgdXNlIHRoZSBgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmdlSGFuZGxlcmAgaW5zdGVhZFxuICAgKi9cbiAgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmVIYW5sZXI6IChjb3VudDogbnVtYmVyKSA9PiBhbnk7XG4gIGRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5nZUhhbmRsZXI6IChjb3VudDogbnVtYmVyKSA9PiBhbnk7XG4gIGlzRWRpdGluZ0NoYW5nZUhhbmRsZXI6IChpc0VkaXRpbmc6IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiAncXVvdGUnIHwgJ3BpbicgfCAnZmxhZycgfCAnZWRpdCcgfCAnZGVsZXRlJyB8IHN0cmluZztcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgYWN0aW9uSGFuZGxlcjogKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4sIGlzTWluZTogYm9vbGVhbikgPT4gYW55O1xufTtcblxudHlwZSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIGlzVmlzaWJsZTogKFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBpc01pbmU6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPlxuICApID0+IGJvb2xlYW47XG4gIGFjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+LCBpc01pbmU6IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25JdGVtPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8VD4gJiB7XG4gIGFjdGlvbk5hbWU6ICdxdW90ZScgfCAncGluJyB8ICdmbGFnJyB8ICdlZGl0JyB8ICdkZWxldGUnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBpc1NlbGVjdG9yT3BlbjogYm9vbGVhbjtcbiAgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1vZGFsQ29udGV4dCA9IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBpc09wZW5DaGFuZ2VIYW5kbGVyOiAoaXNPcGVuOiBib29sZWFuKSA9PiBhbnk7XG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQ29udGV4dCA9IHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZSB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJlYWRIZWFkZXJDb250ZXh0ID0ge1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBjbG9zZVRocmVhZEhhbmRsZXI6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdydcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZWFkU3RhdHVzQ29udGV4dCA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTtcbiAgcmVhZEJ5VGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbEhlYWRlckluZm9Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7IGNoYW5uZWw6IENoYW5uZWw8VD4gfTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tQXR0YWNobWVudFVwbG9hZENvbnRleHQgPSB7XG4gIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXR0YWNobWVudFNlcnZpY2U6IEF0dGFjaG1lbnRTZXJ2aWNlO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudENvbnRleHQgPSB7XG4gIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG59O1xuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlQ29udGV4dCA9IE1lc3NhZ2VDb250ZXh0ICYge1xuICBwYXJzZWREYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRlU2VwYXJhdG9yQ29udGV4dCA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgcGFyc2VkRGF0ZTogc3RyaW5nO1xufTtcbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxNZW1iZXJSZXNwb25zZSxcbiAgQ29tbWFuZFJlc3BvbnNlLFxuICBFdmVudCxcbiAgRXh0ZW5kYWJsZUdlbmVyaWNzLFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIExpdGVyYWxTdHJpbmdGb3JVbmlvbixcbiAgTWVzc2FnZVJlc3BvbnNlQmFzZSxcbiAgTXV0ZSxcbiAgUmVhY3Rpb25SZXNwb25zZSxcbiAgVXNlcixcbiAgVXNlclJlc3BvbnNlLFxufSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBVbmtub3duVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBDdXN0b21UcmlnZ2VyID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgY29tcG9uZW50UHJvcHM6IFVua25vd25UeXBlO1xuICAgIGRhdGE6IFVua25vd25UeXBlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IEV4dGVuZGFibGVHZW5lcmljcyAmIHtcbiAgYXR0YWNobWVudFR5cGU6IERlZmF1bHRBdHRhY2htZW50VHlwZTtcbiAgY2hhbm5lbFR5cGU6IERlZmF1bHRDaGFubmVsVHlwZTtcbiAgY29tbWFuZFR5cGU6IExpdGVyYWxTdHJpbmdGb3JVbmlvbjtcbiAgZXZlbnRUeXBlOiBVbmtub3duVHlwZTtcbiAgbWVzc2FnZVR5cGU6IERlZmF1bHRNZXNzYWdlVHlwZTtcbiAgcmVhY3Rpb25UeXBlOiBVbmtub3duVHlwZTtcbiAgdXNlclR5cGU6IERlZmF1bHRVc2VyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRBdHRhY2htZW50VHlwZSA9IFVua25vd25UeXBlICYge1xuICBhc3NldF91cmw/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpbWFnZXM/OiBBcnJheTxBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+PjtcbiAgbWltZV90eXBlPzogc3RyaW5nO1xuICBpc0N1c3RvbUF0dGFjaG1lbnQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENoYW5uZWxUeXBlID0gVW5rbm93blR5cGUgJiB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBtZW1iZXJfY291bnQ/OiBudW1iZXI7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdENvbW1hbmRUeXBlID0gTGl0ZXJhbFN0cmluZ0ZvclVuaW9uO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TWVzc2FnZVR5cGUgPSBVbmtub3duVHlwZSAmIHtcbiAgY3VzdG9tVHlwZT86ICdjaGFubmVsLmludHJvJyB8ICdtZXNzYWdlLmRhdGUnO1xuICBkYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgZXJyb3JTdGF0dXNDb2RlPzogbnVtYmVyO1xuICBldmVudD86IEV2ZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICB1bnJlYWQ/OiBib29sZWFuO1xuICByZWFkQnk6IFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICB0cmFuc2xhdGlvbj86IHN0cmluZztcbiAgcXVvdGVkX21lc3NhZ2U/OiBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xufTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFVzZXJUeXBlSW50ZXJuYWwgPSB7XG4gIGltYWdlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0VXNlclR5cGUgPSBVbmtub3duVHlwZSAmXG4gIERlZmF1bHRVc2VyVHlwZUludGVybmFsICYge1xuICAgIG11dGVzPzogQXJyYXk8TXV0ZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPj47XG4gIH07XG5cbmV4cG9ydCB0eXBlIFN0cmVhbU1lc3NhZ2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IEZvcm1hdE1lc3NhZ2VSZXNwb25zZTxUPjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFVwbG9hZDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBmaWxlOiBGaWxlO1xuICBzdGF0ZTogJ2Vycm9yJyB8ICdzdWNjZXNzJyB8ICd1cGxvYWRpbmcnO1xuICB1cmw/OiBzdHJpbmc7XG4gIHR5cGU6ICdpbWFnZScgfCAnZmlsZScgfCAndmlkZW8nO1xuICBwcmV2aWV3VXJpPzogc3RyaW5nIHwgQXJyYXlCdWZmZXI7XG4gIHRodW1iX3VybD86IHN0cmluZztcbiAgZnJvbUF0dGFjaG1lbnQ/OiBBdHRhY2htZW50PFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0ID0ge1xuICBpdGVtOiBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbW1hbmRBdXRvY29tcGxldGVMaXN0SXRlbUNvbnRleHQgPSB7XG4gIGl0ZW06IENvbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW0gPSAoXG4gIHwgQ2hhbm5lbE1lbWJlclJlc3BvbnNlXG4gIHwgVXNlclJlc3BvbnNlXG4pICYge1xuICBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ29tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW0gPSBDb21tYW5kUmVzcG9uc2UgJiB7XG4gIGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25UeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdpbmZvJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGF5bG9hZDxUID0ge30+ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBOb3RpZmljYXRpb25UeXBlO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0cmFuc2xhdGVQYXJhbXM/OiBPYmplY3Q7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VD47XG4gIHRlbXBsYXRlQ29udGV4dD86IFQ7XG4gIGRpc21pc3NGbjogRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsUHJldmlld0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgY2hhbm5lbDogQ2hhbm5lbDxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VJbnB1dENvbnRleHQgPSB7XG4gIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nIHwgdW5kZWZpbmVkO1xuICBtb2RlOiAndGhyZWFkJyB8ICdtYWluJyB8IHVuZGVmaW5lZDtcbiAgaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlVXBkYXRlSGFuZGxlcjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gIHNlbmRNZXNzYWdlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQgPSB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdXNlcjogVXNlclJlc3BvbnNlO1xufTtcblxuZXhwb3J0IHR5cGUgRW1vamlQaWNrZXJDb250ZXh0ID0ge1xuICBlbW9qaUlucHV0JDogU3ViamVjdDxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgVHlwaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgdXNlcnNUeXBpbmckOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdPjtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdO1xuICBpc0xhc3RTZW50TWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbW9kZTogJ3RocmVhZCcgfCAnbWFpbic7XG4gIGlzSGlnaGxpZ2h0ZWQ6IGJvb2xlYW47XG4gIGN1c3RvbUFjdGlvbnM6IEN1c3RvbU1lc3NhZ2VBY3Rpb25JdGVtW107XG59O1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQWN0aW9uc0NvbnRleHQ8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHsgY2hhbm5lbDogQ2hhbm5lbDxUPiB9O1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGlzdENvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBhdHRhY2htZW50czogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI/OiAoc3RhdGU6ICdvcGVuZWQnIHwgJ2Nsb3NlZCcpID0+IHt9O1xufTtcblxuZXhwb3J0IHR5cGUgQXZhdGFyVHlwZSA9ICdjaGFubmVsJyB8ICd1c2VyJztcblxuZXhwb3J0IHR5cGUgQXZhdGFyTG9jYXRpb24gPVxuICB8ICdjaGFubmVsLXByZXZpZXcnXG4gIHwgJ2NoYW5uZWwtaGVhZGVyJ1xuICB8ICdtZXNzYWdlLXNlbmRlcidcbiAgfCAnbWVzc2FnZS1yZWFkZXInXG4gIHwgJ3F1b3RlZC1tZXNzYWdlLXNlbmRlcidcbiAgfCAnYXV0b2NvbXBsZXRlLWl0ZW0nXG4gIHwgJ3R5cGluZy1pbmRpY2F0b3InXG4gIHwgJ3JlYWN0aW9uJztcblxuZXhwb3J0IHR5cGUgQXZhdGFyQ29udGV4dCA9IHtcbiAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIHVzZXI/OiBVc2VyPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICBpbml0aWFsc1R5cGU/OiAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnIHwgJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCA9IHtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT4gfCB1bmRlZmluZWQ7XG4gIHJldHJ5VXBsb2FkSGFuZGxlcjogKGY6IEZpbGUpID0+IGFueTtcbiAgZGVsZXRlVXBsb2FkSGFuZGxlcjogKHU6IEF0dGFjaG1lbnRVcGxvYWQpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25Db250ZXh0ID0ge1xuICBpY29uOiBJY29uIHwgdW5kZWZpbmVkO1xuICBzaXplOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSW5kaWNhdG9yQ29udGV4dCA9IHtcbiAgc2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUFjdGlvbnNCb3hDb250ZXh0ID0ge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZEFjdGlvbnM6IHN0cmluZ1tdO1xuICBjdXN0b21BY3Rpb25zOiBDdXN0b21NZXNzYWdlQWN0aW9uSXRlbVtdO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYmVjYXVzZSB0aGUgbmFtZSBjb250YWlucyB0eXBvcywgdXNlIHRoZSBgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmdlSGFuZGxlcmAgaW5zdGVhZFxuICAgKi9cbiAgZGlzcGxheWVkQWN0aW9uc0NvdW50Q2hhbmVIYW5sZXI6IChjb3VudDogbnVtYmVyKSA9PiBhbnk7XG4gIGRpc3BsYXllZEFjdGlvbnNDb3VudENoYW5nZUhhbmRsZXI6IChjb3VudDogbnVtYmVyKSA9PiBhbnk7XG4gIGlzRWRpdGluZ0NoYW5nZUhhbmRsZXI6IChpc0VkaXRpbmc6IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25Cb3hJdGVtQ29udGV4dDxcbiAgVCBleHRlbmRzIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgPSBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzXG4+ID0ge1xuICBhY3Rpb25OYW1lOiAncXVvdGUnIHwgJ3BpbicgfCAnZmxhZycgfCAnZWRpdCcgfCAnZGVsZXRlJyB8IHN0cmluZztcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD47XG4gIGlzTWluZTogYm9vbGVhbjtcbiAgYWN0aW9uSGFuZGxlcjogKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4sIGlzTWluZTogYm9vbGVhbikgPT4gYW55O1xufTtcblxudHlwZSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IHtcbiAgYWN0aW9uTGFiZWxPclRyYW5zbGF0aW9uS2V5OiAoKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U8VD4pID0+IHN0cmluZykgfCBzdHJpbmc7XG4gIGlzVmlzaWJsZTogKFxuICAgIGVuYWJsZWRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBpc01pbmU6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTxUPlxuICApID0+IGJvb2xlYW47XG4gIGFjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBTdHJlYW1NZXNzYWdlPFQ+LCBpc01pbmU6IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VBY3Rpb25JdGVtPFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSBNZXNzYWdlQWN0aW9uSXRlbUJhc2U8VD4gJiB7XG4gIGFjdGlvbk5hbWU6ICdxdW90ZScgfCAncGluJyB8ICdmbGFnJyB8ICdlZGl0JyB8ICdkZWxldGUnO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZUFjdGlvbkl0ZW08XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljc1xuPiA9IE1lc3NhZ2VBY3Rpb25JdGVtQmFzZTxUPiAmIHtcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9O1xuICBpc1NlbGVjdG9yT3BlbjogYm9vbGVhbjtcbiAgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W107XG4gIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdO1xuICBpc1NlbGVjdG9yT3BlbkNoYW5nZUhhbmRsZXI6IChpc09wZW46IGJvb2xlYW4pID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE1vZGFsQ29udGV4dCA9IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBpc09wZW5DaGFuZ2VIYW5kbGVyOiAoaXNPcGVuOiBib29sZWFuKSA9PiBhbnk7XG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uQ29udGV4dCA9IHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZSB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJlYWRIZWFkZXJDb250ZXh0ID0ge1xuICBwYXJlbnRNZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICBjbG9zZVRocmVhZEhhbmRsZXI6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdydcbiAgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDb25maWdyYXRpb24gPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEltYWdlQXR0YWNobWVudENvbmZpZ3VyYXRpb24gPSBBdHRhY2htZW50Q29uZmlncmF0aW9uICYge1xuICBvcmlnaW5hbEhlaWdodDogbnVtYmVyO1xuICBvcmlnaW5hbFdpZHRoOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb0F0dGFjaG1lbnRDb25maWd1cmF0aW9uID0gSW1hZ2VBdHRhY2htZW50Q29uZmlndXJhdGlvbiAmIHtcbiAgdGh1bWJVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWxpdmVyZWRTdGF0dXNDb250ZXh0ID0ge1xuICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZGluZ1N0YXR1c0NvbnRleHQgPSB7XG4gIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZWFkU3RhdHVzQ29udGV4dCA9IHtcbiAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZTtcbiAgcmVhZEJ5VGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbEhlYWRlckluZm9Db250ZXh0PFxuICBUIGV4dGVuZHMgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyA9IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3Ncbj4gPSB7IGNoYW5uZWw6IENoYW5uZWw8VD4gfTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tQXR0YWNobWVudFVwbG9hZENvbnRleHQgPSB7XG4gIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXR0YWNobWVudFNlcnZpY2U6IEF0dGFjaG1lbnRTZXJ2aWNlO1xufTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudENvbnRleHQgPSB7XG4gIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG59O1xuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlQ29udGV4dCA9IE1lc3NhZ2VDb250ZXh0ICYge1xuICBwYXJzZWREYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRlU2VwYXJhdG9yQ29udGV4dCA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgcGFyc2VkRGF0ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFF1ZXJ5U3RhdGUgPSB7XG4gIHN0YXRlOiAnaW4tcHJvZ3Jlc3MnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgLy8gTm8gdHlwZSBkZWYgZnJvbSBzdHJlYW0tY2hhdFxuICBlcnJvcj86IHVua25vd247XG59O1xuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable, Component, Input, EventEmitter, Output, ViewChild, InjectionToken, Directive, HostBinding, Inject, NgModule } from '@angular/core';
|
|
4
|
-
import { BehaviorSubject, ReplaySubject, combineLatest, Subject, timer
|
|
4
|
+
import { BehaviorSubject, ReplaySubject, combineLatest, Subject, timer } from 'rxjs';
|
|
5
5
|
import { StreamChat } from 'stream-chat';
|
|
6
|
-
import { map, shareReplay, first, filter, take, tap,
|
|
6
|
+
import { map, shareReplay, first, filter, take, tap, distinctUntilChanged, debounceTime } from 'rxjs/operators';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
8
8
|
import * as i9 from '@ngx-translate/core';
|
|
9
9
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -20,7 +20,7 @@ import transliterate from '@stream-io/transliterate';
|
|
|
20
20
|
import * as i8 from 'angular-mentions';
|
|
21
21
|
import { MentionModule } from 'angular-mentions';
|
|
22
22
|
|
|
23
|
-
const version = '4.31.
|
|
23
|
+
const version = '4.31.2';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
|
|
@@ -313,6 +313,7 @@ class ChannelService {
|
|
|
313
313
|
this.usersTypingInThreadSubject = new BehaviorSubject([]);
|
|
314
314
|
this._shouldMarkActiveChannelAsRead = true;
|
|
315
315
|
this.isStateRecoveryInProgress = false;
|
|
316
|
+
this.channelQueryStateSubject = new BehaviorSubject(undefined);
|
|
316
317
|
this.channelListSetter = (channels) => {
|
|
317
318
|
const currentChannels = this.channelsSubject.getValue() || [];
|
|
318
319
|
const newChannels = channels.filter((c) => !currentChannels.find((channel) => channel.cid === c.cid));
|
|
@@ -369,6 +370,7 @@ class ChannelService {
|
|
|
369
370
|
this.latestMessageDateByUserByChannelsSubject.asObservable();
|
|
370
371
|
this.activeChannelPinnedMessages$ =
|
|
371
372
|
this.activeChannelPinnedMessagesSubject.asObservable();
|
|
373
|
+
this.channelQueryState$ = this.channelQueryStateSubject.asObservable();
|
|
372
374
|
}
|
|
373
375
|
/**
|
|
374
376
|
* If set to false, read events won't be sent as new messages are received. If set to true active channel (if any) will immediately be marked as read.
|
|
@@ -540,23 +542,17 @@ class ChannelService {
|
|
|
540
542
|
init(filters, sort, options, shouldSetActiveChannel = true) {
|
|
541
543
|
return __awaiter(this, void 0, void 0, function* () {
|
|
542
544
|
this.filters = filters;
|
|
543
|
-
this.options =
|
|
544
|
-
offset: 0,
|
|
545
|
-
limit: 25,
|
|
546
|
-
state: true,
|
|
547
|
-
presence: true,
|
|
548
|
-
watch: true,
|
|
549
|
-
message_limit: this.messagePageSize,
|
|
550
|
-
};
|
|
545
|
+
this.options = Object.assign({ offset: 0, limit: 25, state: true, presence: true, watch: true, message_limit: this.messagePageSize }, options);
|
|
551
546
|
this.sort = sort || { last_message_at: -1, updated_at: -1 };
|
|
552
547
|
this.shouldSetActiveChannel = shouldSetActiveChannel;
|
|
548
|
+
this.clientEventsSubscription = this.chatClientService.events$.subscribe((notification) => void this.handleNotification(notification));
|
|
553
549
|
try {
|
|
554
550
|
const result = yield this.queryChannels(this.shouldSetActiveChannel);
|
|
555
|
-
this.clientEventsSubscription = this.chatClientService.events$.subscribe((notification) => void this.handleNotification(notification));
|
|
556
551
|
return result;
|
|
557
552
|
}
|
|
558
553
|
catch (error) {
|
|
559
|
-
this.
|
|
554
|
+
this.dismissErrorNotification =
|
|
555
|
+
this.notificationService.addPermanentNotification('streamChat.Error loading channels', 'error');
|
|
560
556
|
throw error;
|
|
561
557
|
}
|
|
562
558
|
});
|
|
@@ -565,10 +561,13 @@ class ChannelService {
|
|
|
565
561
|
* Resets the `activeChannel$`, `channels$` and `activeChannelMessages$` Observables. Useful when disconnecting a chat user, use in combination with [`disconnectUser`](./ChatClientService.mdx/#disconnectuser).
|
|
566
562
|
*/
|
|
567
563
|
reset() {
|
|
568
|
-
var _a;
|
|
564
|
+
var _a, _b;
|
|
569
565
|
this.deselectActiveChannel();
|
|
570
566
|
this.channelsSubject.next(undefined);
|
|
567
|
+
this.channelQueryStateSubject.next(undefined);
|
|
571
568
|
(_a = this.clientEventsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
569
|
+
(_b = this.dismissErrorNotification) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
570
|
+
this.dismissErrorNotification = undefined;
|
|
572
571
|
}
|
|
573
572
|
/**
|
|
574
573
|
* Loads the next page of channels. The page size can be set in the [query option](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript#query-options) object.
|
|
@@ -889,7 +888,10 @@ class ChannelService {
|
|
|
889
888
|
if (this.options) {
|
|
890
889
|
this.options.offset = 0;
|
|
891
890
|
}
|
|
892
|
-
|
|
891
|
+
// If channel list is not inited, we set the active channel
|
|
892
|
+
const shoulSetActiveChannel = this.shouldSetActiveChannel &&
|
|
893
|
+
!this.activeChannelSubject.getValue();
|
|
894
|
+
yield this.queryChannels(shoulSetActiveChannel || false, true);
|
|
893
895
|
// Thread messages are not refetched so active thread gets deselected to avoid displaying stale messages
|
|
894
896
|
void this.setAsActiveParentMessage(undefined);
|
|
895
897
|
this.isStateRecoveryInProgress = false;
|
|
@@ -1116,29 +1118,44 @@ class ChannelService {
|
|
|
1116
1118
|
this.activeChannelSubscriptions = [];
|
|
1117
1119
|
}
|
|
1118
1120
|
queryChannels(shouldSetActiveChannel, recoverState = false) {
|
|
1121
|
+
var _a, _b;
|
|
1119
1122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1120
1123
|
try {
|
|
1124
|
+
this.channelQueryStateSubject.next({ state: 'in-progress' });
|
|
1121
1125
|
const channels = yield this.chatClientService.chatClient.queryChannels(this.filters, this.sort || {}, this.options);
|
|
1122
1126
|
channels.forEach((c) => this.watchForChannelEvents(c));
|
|
1123
1127
|
const prevChannels = recoverState
|
|
1124
1128
|
? []
|
|
1125
1129
|
: this.channelsSubject.getValue() || [];
|
|
1126
1130
|
this.channelsSubject.next([...prevChannels, ...channels]);
|
|
1127
|
-
|
|
1131
|
+
let currentActiveChannel = this.activeChannelSubject.getValue();
|
|
1128
1132
|
if (channels.length > 0 &&
|
|
1129
1133
|
!currentActiveChannel &&
|
|
1130
1134
|
shouldSetActiveChannel) {
|
|
1131
1135
|
this.setAsActiveChannel(channels[0]);
|
|
1136
|
+
currentActiveChannel = this.activeChannelSubject.getValue();
|
|
1132
1137
|
}
|
|
1133
1138
|
if (recoverState &&
|
|
1134
1139
|
!channels.find((c) => c.cid === (currentActiveChannel === null || currentActiveChannel === void 0 ? void 0 : currentActiveChannel.cid))) {
|
|
1135
1140
|
this.deselectActiveChannel();
|
|
1136
1141
|
}
|
|
1137
1142
|
this.hasMoreChannelsSubject.next(channels.length >= this.options.limit);
|
|
1143
|
+
this.channelQueryStateSubject.next({ state: 'success' });
|
|
1144
|
+
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.keepAliveChannels$OnError) &&
|
|
1145
|
+
this.dismissErrorNotification) {
|
|
1146
|
+
this.dismissErrorNotification();
|
|
1147
|
+
}
|
|
1138
1148
|
return channels;
|
|
1139
1149
|
}
|
|
1140
1150
|
catch (error) {
|
|
1141
|
-
this.
|
|
1151
|
+
if (!((_b = this.options) === null || _b === void 0 ? void 0 : _b.keepAliveChannels$OnError)) {
|
|
1152
|
+
this.channelsSubject.error(error);
|
|
1153
|
+
}
|
|
1154
|
+
this.channelQueryStateSubject.next({
|
|
1155
|
+
state: 'error',
|
|
1156
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
1157
|
+
error,
|
|
1158
|
+
});
|
|
1142
1159
|
throw error;
|
|
1143
1160
|
}
|
|
1144
1161
|
});
|
|
@@ -3688,8 +3705,18 @@ class ChannelComponent {
|
|
|
3688
3705
|
this.channelService = channelService;
|
|
3689
3706
|
this.themeService = themeService;
|
|
3690
3707
|
this.subscriptions = [];
|
|
3691
|
-
this.isError$ =
|
|
3692
|
-
|
|
3708
|
+
this.isError$ = combineLatest([
|
|
3709
|
+
this.channelService.channelQueryState$,
|
|
3710
|
+
this.channelService.activeChannel$,
|
|
3711
|
+
]).pipe(map(([state, activeChannel]) => {
|
|
3712
|
+
return !activeChannel && (state === null || state === void 0 ? void 0 : state.state) === 'error';
|
|
3713
|
+
}));
|
|
3714
|
+
this.isInitializing$ = combineLatest([
|
|
3715
|
+
this.channelService.channelQueryState$,
|
|
3716
|
+
this.channelService.activeChannel$,
|
|
3717
|
+
]).pipe(map(([state, activeChannel]) => {
|
|
3718
|
+
return !activeChannel && (state === null || state === void 0 ? void 0 : state.state) === 'in-progress';
|
|
3719
|
+
}));
|
|
3693
3720
|
this.isActiveThread$ = this.channelService.activeParentMessageId$.pipe(map((id) => !!id));
|
|
3694
3721
|
this.theme$ = this.themeService.theme$;
|
|
3695
3722
|
this.isActiveChannel$ = this.channelService.activeChannel$.pipe(map((c) => !!c));
|
|
@@ -3993,8 +4020,8 @@ class ChannelListComponent {
|
|
|
3993
4020
|
this.isOpen$ = this.channelListToggleService.isOpen$;
|
|
3994
4021
|
this.channels$ = this.channelService.channels$;
|
|
3995
4022
|
this.hasMoreChannels$ = this.channelService.hasMoreChannels$;
|
|
3996
|
-
this.isError$ = this.
|
|
3997
|
-
this.isInitializing$ = this.
|
|
4023
|
+
this.isError$ = this.channelService.channelQueryState$.pipe(map((s) => !this.isLoadingMoreChannels && (s === null || s === void 0 ? void 0 : s.state) === 'error'));
|
|
4024
|
+
this.isInitializing$ = this.channelService.channelQueryState$.pipe(map((s) => !this.isLoadingMoreChannels && (s === null || s === void 0 ? void 0 : s.state) === 'in-progress'));
|
|
3998
4025
|
this.subscriptions.push(this.customTemplatesService.channelPreviewTemplate$.subscribe((template) => (this.customChannelPreviewTemplate = template)));
|
|
3999
4026
|
}
|
|
4000
4027
|
ngAfterViewInit() {
|
|
@@ -4055,7 +4082,7 @@ class DateParserService {
|
|
|
4055
4082
|
/**
|
|
4056
4083
|
* Return a user-friendly string representation of the date (year, month and date)
|
|
4057
4084
|
* @param date
|
|
4058
|
-
* @returns
|
|
4085
|
+
* @returns The parsed date
|
|
4059
4086
|
*/
|
|
4060
4087
|
parseDate(date) {
|
|
4061
4088
|
if (this.customDateParser) {
|
|
@@ -4066,7 +4093,7 @@ class DateParserService {
|
|
|
4066
4093
|
/**
|
|
4067
4094
|
* Return a user-friendly string representation of the date and time
|
|
4068
4095
|
* @param date
|
|
4069
|
-
* @returns
|
|
4096
|
+
* @returns The parsed date
|
|
4070
4097
|
*/
|
|
4071
4098
|
parseDateTime(date) {
|
|
4072
4099
|
if (this.customDateTimeParser) {
|
|
@@ -5068,7 +5095,10 @@ class MessageListComponent {
|
|
|
5068
5095
|
this.isLatestMessageInList = true;
|
|
5069
5096
|
this.subscriptions.push(this.channelService.activeChannel$.subscribe((channel) => {
|
|
5070
5097
|
var _a, _b;
|
|
5071
|
-
this.
|
|
5098
|
+
if (this.channelId !== (channel === null || channel === void 0 ? void 0 : channel.id)) {
|
|
5099
|
+
this.resetScrollState();
|
|
5100
|
+
this.channelId = channel === null || channel === void 0 ? void 0 : channel.id;
|
|
5101
|
+
}
|
|
5072
5102
|
const capabilites = (_a = channel === null || channel === void 0 ? void 0 : channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
5073
5103
|
if (capabilites) {
|
|
5074
5104
|
this.enabledMessageActions = capabilites;
|
|
@@ -5304,6 +5334,7 @@ class MessageListComponent {
|
|
|
5304
5334
|
: this.channelService.activeThreadMessages$).pipe(tap((messages) => {
|
|
5305
5335
|
this.isLoading = false;
|
|
5306
5336
|
if (messages.length === 0) {
|
|
5337
|
+
this.resetScrollState();
|
|
5307
5338
|
return;
|
|
5308
5339
|
}
|
|
5309
5340
|
const currentLatestMessage = messages[messages.length - 1];
|