@yuuvis/client-core 0.7.4 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,142 @@
1
+ import { Operator } from './search.service.interface';
2
+ export class SearchUtils {
3
+ static { this.dateRanges = ['today', 'yesterday', 'thisWeek', 'lastWeek', 'thisMonth', 'lastMonth', 'thisYear', 'lastYear']; }
4
+ static { this.filesizeRanges = ['small', 'medium', 'large', 'verylarge']; }
5
+ static dateRangeStartEnd(dateRange) {
6
+ let start;
7
+ let end;
8
+ switch (dateRange) {
9
+ case 'today': {
10
+ start = new Date();
11
+ end = new Date();
12
+ break;
13
+ }
14
+ case 'yesterday': {
15
+ const yesterday = new Date();
16
+ yesterday.setDate(yesterday.getDate() - 1);
17
+ start = yesterday;
18
+ end = yesterday;
19
+ break;
20
+ }
21
+ case 'thisWeek': {
22
+ const firstDay = new Date();
23
+ firstDay.setDate(firstDay.getDate() - firstDay.getDay());
24
+ start = firstDay;
25
+ end = new Date();
26
+ break;
27
+ }
28
+ case 'lastWeek': {
29
+ const firstDay = new Date();
30
+ firstDay.setDate(firstDay.getDate() - firstDay.getDay() - 7);
31
+ const lastDay = new Date();
32
+ lastDay.setDate(lastDay.getDate() - lastDay.getDay() - 1);
33
+ start = firstDay;
34
+ end = lastDay;
35
+ break;
36
+ }
37
+ case 'thisMonth': {
38
+ const firstDay = new Date();
39
+ firstDay.setDate(1);
40
+ start = firstDay;
41
+ end = new Date();
42
+ break;
43
+ }
44
+ case 'lastMonth': {
45
+ const firstDay = new Date();
46
+ firstDay.setDate(1);
47
+ firstDay.setMonth(firstDay.getMonth() - 1);
48
+ const lastDay = new Date();
49
+ lastDay.setDate(0);
50
+ start = firstDay;
51
+ end = lastDay;
52
+ break;
53
+ }
54
+ case 'thisYear': {
55
+ const firstDay = new Date();
56
+ firstDay.setMonth(0);
57
+ firstDay.setDate(1);
58
+ start = firstDay;
59
+ end = new Date();
60
+ break;
61
+ }
62
+ case 'lastYear': {
63
+ const firstDay = new Date();
64
+ firstDay.setFullYear(firstDay.getFullYear() - 1);
65
+ firstDay.setMonth(0);
66
+ firstDay.setDate(1);
67
+ const lastDay = new Date();
68
+ lastDay.setFullYear(lastDay.getFullYear() - 1);
69
+ lastDay.setMonth(11);
70
+ lastDay.setDate(31);
71
+ start = firstDay;
72
+ end = lastDay;
73
+ break;
74
+ }
75
+ }
76
+ return { start, end };
77
+ }
78
+ /**
79
+ * Maps a date range filter to a date range value like 'thisWeek', 'lastMonth', etc.
80
+ * @param rangeValue the range value
81
+ * @returns the date range (eg. 'thisWeek', 'lastMonth', etc.)
82
+ */
83
+ static getMatchingDateRange(rangeValue) {
84
+ return SearchUtils.dateRanges.find((dateRange) => {
85
+ const { start, end } = SearchUtils.dateRangeStartEnd(dateRange);
86
+ return (rangeValue.firstValue === start.toISOString().split('T')[0] + 'T00:00:00.000' &&
87
+ rangeValue.secondValue === end.toISOString().split('T')[0] + 'T23:59:59.000');
88
+ });
89
+ }
90
+ // Files size ranges
91
+ static getMatchingFilesizeRange(rangeValue) {
92
+ let filesizeRange = undefined;
93
+ if (rangeValue.operator === Operator.INTERVAL_INCLUDE_BOTH) {
94
+ if (rangeValue.firstValue === 1024 * 1024 && rangeValue.secondValue === 1024 * 1024 * 10)
95
+ filesizeRange = 'medium';
96
+ else if (rangeValue.firstValue === 1024 * 1024 * 10 && rangeValue.secondValue === 1024 * 1024 * 100)
97
+ filesizeRange = 'large';
98
+ }
99
+ else if (rangeValue.operator === Operator.LESS_THAN) {
100
+ if (rangeValue.firstValue === 1024 * 1024)
101
+ filesizeRange = 'small';
102
+ }
103
+ else if (rangeValue.operator === Operator.GREATER_THAN) {
104
+ if (rangeValue.firstValue === 1024 * 1024 * 100)
105
+ filesizeRange = 'verylarge';
106
+ }
107
+ return filesizeRange;
108
+ }
109
+ static filesizeRangeToRangeValue(filesizeRange) {
110
+ let rv = undefined;
111
+ switch (filesizeRange) {
112
+ case 'small':
113
+ rv = {
114
+ operator: Operator.LESS_THAN,
115
+ firstValue: 1024 * 1024
116
+ };
117
+ break;
118
+ case 'medium':
119
+ rv = {
120
+ operator: Operator.INTERVAL_INCLUDE_BOTH,
121
+ firstValue: 1024 * 1024,
122
+ secondValue: 1024 * 1024 * 10
123
+ };
124
+ break;
125
+ case 'large':
126
+ rv = {
127
+ operator: Operator.INTERVAL_INCLUDE_BOTH,
128
+ firstValue: 1024 * 1024 * 10,
129
+ secondValue: 1024 * 1024 * 100
130
+ };
131
+ break;
132
+ case 'verylarge':
133
+ rv = {
134
+ operator: Operator.GREATER_THAN,
135
+ firstValue: 1024 * 1024 * 100
136
+ };
137
+ break;
138
+ }
139
+ return rv;
140
+ }
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRixNQUFNLE9BQU8sV0FBVzthQUNmLGVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUM5RyxtQkFBYyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFbEUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQW9CO1FBQzNDLElBQUksS0FBVyxDQUFDO1FBQ2hCLElBQUksR0FBUyxDQUFDO1FBRWQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTNDLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBQ2xCLEdBQUcsR0FBRyxTQUFTLENBQUM7Z0JBQ2hCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFFB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QUFLLFdBQVc7Z0JBQ2QsRUFBRSxHQUFHO29CQUNILFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWTtvQkFDL0IsVUFBVSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRztpQkFDOUIsQ0FBQztnQkFDRixNQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlLCBGaWxlc2l6ZVJhbmdlLCBPcGVyYXRvciB9IGZyb20gJy4vc2VhcmNoLnNlcnZpY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFNlYXJjaFV0aWxzIHtcbiAgc3RhdGljIGRhdGVSYW5nZXMgPSBbJ3RvZGF5JywgJ3llc3RlcmRheScsICd0aGlzV2VlaycsICdsYXN0V2VlaycsICd0aGlzTW9udGgnLCAnbGFzdE1vbnRoJywgJ3RoaXNZZWFyJywgJ2xhc3RZZWFyJ107XG4gIHN0YXRpYyBmaWxlc2l6ZVJhbmdlcyA9IFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJywgJ3ZlcnlsYXJnZSddO1xuXG4gIHN0YXRpYyBkYXRlUmFuZ2VTdGFydEVuZChkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IHsgc3RhcnQ6IERhdGU7IGVuZDogRGF0ZSB9IHtcbiAgICBsZXQgc3RhcnQ6IERhdGU7XG4gICAgbGV0IGVuZDogRGF0ZTtcblxuICAgIHN3aXRjaCAoZGF0ZVJhbmdlKSB7XG4gICAgICBjYXNlICd0b2RheSc6IHtcbiAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llc3RlcmRheSc6IHtcbiAgICAgICAgY29uc3QgeWVzdGVyZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpO1xuXG4gICAgICAgIHN0YXJ0ID0geWVzdGVyZGF5O1xuICAgICAgICBlbmQgPSB5ZXN0ZXJkYXk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndGhpc1dlZWsnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZShmaXJzdERheS5nZXREYXRlKCkgLSBmaXJzdERheS5nZXREYXkoKSk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbmV3IERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0V2Vlayc6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXREYXRlKGZpcnN0RGF5LmdldERhdGUoKSAtIGZpcnN0RGF5LmdldERheSgpIC0gNyk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldERhdGUobGFzdERheS5nZXREYXRlKCkgLSBsYXN0RGF5LmdldERheSgpIC0gMSk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbGFzdERheTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzTW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZSgxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3RNb250aCc6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXREYXRlKDEpO1xuICAgICAgICBmaXJzdERheS5zZXRNb250aChmaXJzdERheS5nZXRNb250aCgpIC0gMSk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldERhdGUoMCk7XG5cbiAgICAgICAgc3RhcnQgPSBmaXJzdERheTtcbiAgICAgICAgZW5kID0gbGFzdERheTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd0aGlzWWVhcic6IHtcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBmaXJzdERheS5zZXRNb250aCgwKTtcbiAgICAgICAgZmlyc3REYXkuc2V0RGF0ZSgxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xhc3RZZWFyJzoge1xuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGZpcnN0RGF5LnNldEZ1bGxZZWFyKGZpcnN0RGF5LmdldEZ1bGxZZWFyKCkgLSAxKTtcbiAgICAgICAgZmlyc3REYXkuc2V0TW9udGgoMCk7XG4gICAgICAgIGZpcnN0RGF5LnNldERhdGUoMSk7XG4gICAgICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsYXN0RGF5LnNldEZ1bGxZZWFyKGxhc3REYXkuZ2V0RnVsbFllYXIoKSAtIDEpO1xuICAgICAgICBsYXN0RGF5LnNldE1vbnRoKDExKTtcbiAgICAgICAgbGFzdERheS5zZXREYXRlKDMxKTtcblxuICAgICAgICBzdGFydCA9IGZpcnN0RGF5O1xuICAgICAgICBlbmQgPSBsYXN0RGF5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgc3RhcnQsIGVuZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBkYXRlIHJhbmdlIGZpbHRlciB0byBhIGRhdGUgcmFuZ2UgdmFsdWUgbGlrZSAndGhpc1dlZWsnLCAnbGFzdE1vbnRoJywgZXRjLlxuICAgKiBAcGFyYW0gcmFuZ2VWYWx1ZSB0aGUgcmFuZ2UgdmFsdWVcbiAgICogQHJldHVybnMgdGhlIGRhdGUgcmFuZ2UgKGVnLiAndGhpc1dlZWsnLCAnbGFzdE1vbnRoJywgZXRjLilcbiAgICovXG4gIHN0YXRpYyBnZXRNYXRjaGluZ0RhdGVSYW5nZShyYW5nZVZhbHVlOiBSYW5nZVZhbHVlKTogRGF0ZVJhbmdlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlcy5maW5kKChkYXRlUmFuZ2UpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlU3RhcnRFbmQoZGF0ZVJhbmdlIGFzIERhdGVSYW5nZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICByYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IHN0YXJ0LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSArICdUMDA6MDA6MDAuMDAwJyAmJlxuICAgICAgICByYW5nZVZhbHVlLnNlY29uZFZhbHVlID09PSBlbmQudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdICsgJ1QyMzo1OTo1OS4wMDAnXG4gICAgICApO1xuICAgIH0pIGFzIERhdGVSYW5nZTtcbiAgfVxuXG4gIC8vIEZpbGVzIHNpemUgcmFuZ2VzXG4gIHN0YXRpYyBnZXRNYXRjaGluZ0ZpbGVzaXplUmFuZ2UocmFuZ2VWYWx1ZTogUmFuZ2VWYWx1ZSk6IEZpbGVzaXplUmFuZ2UgfCB1bmRlZmluZWQge1xuICAgIGxldCBmaWxlc2l6ZVJhbmdlOiBGaWxlc2l6ZVJhbmdlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChyYW5nZVZhbHVlLm9wZXJhdG9yID09PSBPcGVyYXRvci5JTlRFUlZBTF9JTkNMVURFX0JPVEgpIHtcbiAgICAgIGlmIChyYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IDEwMjQgKiAxMDI0ICYmIHJhbmdlVmFsdWUuc2Vjb25kVmFsdWUgPT09IDEwMjQgKiAxMDI0ICogMTApIGZpbGVzaXplUmFuZ2UgPSAnbWVkaXVtJztcbiAgICAgIGVsc2UgaWYgKHJhbmdlVmFsdWUuZmlyc3RWYWx1ZSA9PT0gMTAyNCAqIDEwMjQgKiAxMCAmJiByYW5nZVZhbHVlLnNlY29uZFZhbHVlID09PSAxMDI0ICogMTAyNCAqIDEwMCkgZmlsZXNpemVSYW5nZSA9ICdsYXJnZSc7XG4gICAgfSBlbHNlIGlmIChyYW5nZVZhbHVlLm9wZXJhdG9yID09PSBPcGVyYXRvci5MRVNTX1RIQU4pIHtcbiAgICAgIGlmIChyYW5nZVZhbHVlLmZpcnN0VmFsdWUgPT09IDEwMjQgKiAxMDI0KSBmaWxlc2l6ZVJhbmdlID0gJ3NtYWxsJztcbiAgICB9IGVsc2UgaWYgKHJhbmdlVmFsdWUub3BlcmF0b3IgPT09IE9wZXJhdG9yLkdSRUFURVJfVEhBTikge1xuICAgICAgaWYgKHJhbmdlVmFsdWUuZmlyc3RWYWx1ZSA9PT0gMTAyNCAqIDEwMjQgKiAxMDApIGZpbGVzaXplUmFuZ2UgPSAndmVyeWxhcmdlJztcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVzaXplUmFuZ2U7XG4gIH1cblxuICBzdGF0aWMgZmlsZXNpemVSYW5nZVRvUmFuZ2VWYWx1ZShmaWxlc2l6ZVJhbmdlOiBGaWxlc2l6ZVJhbmdlKTogUmFuZ2VWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJ2OiBSYW5nZVZhbHVlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAoZmlsZXNpemVSYW5nZSkge1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBydiA9IHtcbiAgICAgICAgICBvcGVyYXRvcjogT3BlcmF0b3IuTEVTU19USEFOLFxuICAgICAgICAgIGZpcnN0VmFsdWU6IDEwMjQgKiAxMDI0XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgcnYgPSB7XG4gICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLklOVEVSVkFMX0lOQ0xVREVfQk9USCxcbiAgICAgICAgICBmaXJzdFZhbHVlOiAxMDI0ICogMTAyNCxcbiAgICAgICAgICBzZWNvbmRWYWx1ZTogMTAyNCAqIDEwMjQgKiAxMFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgcnYgPSB7XG4gICAgICAgICAgb3BlcmF0b3I6IE9wZXJhdG9yLklOVEVSVkFMX0lOQ0xVREVfQk9USCxcbiAgICAgICAgICBmaXJzdFZhbHVlOiAxMDI0ICogMTAyNCAqIDEwLFxuICAgICAgICAgIHNlY29uZFZhbHVlOiAxMDI0ICogMTAyNCAqIDEwMFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZlcnlsYXJnZSc6XG4gICAgICAgIHJ2ID0ge1xuICAgICAgICAgIG9wZXJhdG9yOiBPcGVyYXRvci5HUkVBVEVSX1RIQU4sXG4gICAgICAgICAgZmlyc3RWYWx1ZTogMTAyNCAqIDEwMjQgKiAxMDBcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBydjtcbiAgfVxufVxuIl19
@@ -13,7 +13,7 @@ export const SystemType = {
13
13
  SOT: 'system:secondray'
14
14
  };
15
15
  export const SystemResult = {
16
- DELETE: 'system:deletionResult',
16
+ DELETE: 'system:deletionResult'
17
17
  };
18
18
  export const AdministrationRoles = {
19
19
  ADMIN: 'YUUVIS_TENANT_ADMIN',
@@ -31,17 +31,6 @@ export const RetentionField = {
31
31
  RETENTION_START: 'system:rmStartOfRetention',
32
32
  DESTRUCTION_DATE: 'system:rmDestructionDate'
33
33
  };
34
- export var RetentionState;
35
- (function (RetentionState) {
36
- // no retention
37
- RetentionState[RetentionState["NONE"] = 0] = "NONE";
38
- // retention is active
39
- RetentionState[RetentionState["ACTIVE"] = 1] = "ACTIVE";
40
- // supposed to be destructed
41
- RetentionState[RetentionState["DESTRUCT"] = 2] = "DESTRUCT";
42
- // retention is not active yet
43
- RetentionState[RetentionState["INACTIVE"] = 3] = "INACTIVE";
44
- })(RetentionState || (RetentionState = {}));
45
34
  export const BaseObjectTypeField = {
46
35
  OBJECT_TYPE_ID: 'system:objectTypeId',
47
36
  VERSION_NUMBER: 'system:versionNumber',
@@ -148,7 +137,6 @@ export var InternalFieldType;
148
137
  InternalFieldType["STRING_DYNAMIC_CATALOG"] = "string:catalog:dynamic";
149
138
  InternalFieldType["BOOLEAN_SWITCH"] = "boolean:switch";
150
139
  })(InternalFieldType || (InternalFieldType = {}));
151
- ;
152
140
  export var ObjectTag;
153
141
  (function (ObjectTag) {
154
142
  ObjectTag["AFO"] = "appclient:dlm:prepare";
@@ -176,4 +164,4 @@ export const ColumnConfigSkipFields = [
176
164
  ContentStreamField.DIGEST,
177
165
  ContentStreamField.ARCHIVE_PATH
178
166
  ];
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUVoRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtJQUNqQiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixNQUFNLEVBQUUsZUFBZTtJQUN2QixLQUFLLEVBQUUsY0FBYztJQUNyQixHQUFHLEVBQUUsa0JBQWtCO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFLHVCQUF1QjtDQUNoQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLGVBQWUsRUFBRSx3QkFBd0I7Q0FDMUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixZQUFZLEVBQUUscUJBQXFCO0NBQ3BDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIscUJBQXFCLEVBQUUsK0JBQStCO0NBQ3ZELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxlQUFlLEVBQUUsMkJBQTJCO0lBQzVDLGdCQUFnQixFQUFFLDBC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VCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsbUJBQW1CLENBQUMsU0FBUztJQUM3QixtQkFBbUIsQ0FBQyxjQUFjO0lBQ2xDLG1CQUFtQixDQUFDLFNBQVM7SUFDN0IsbUJBQW1CLENBQUMscUJBQXFCO0lBQ3pDLG1CQUFtQixDQUFDLHFCQUFxQjtJQUN6QyxtQkFBbUIsQ0FBQyxNQUFNO0lBQzFCLG1CQUFtQixDQUFDLFFBQVE7SUFDNUIsNEJBQTRCO0lBQzVCLG1CQUFtQixDQUFDLFlBQVk7SUFDaEMsa0JBQWtCLENBQUMsRUFBRTtJQUNyQixrQkFBa0IsQ0FBQyxLQUFLO0lBQ3hCLGtCQUFrQixDQUFDLGFBQWE7SUFDaEMsa0JBQWtCLENBQUMsTUFBTTtJQUN6QixrQkFBa0IsQ0FBQyxZQUFZO0NBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVEVOQU5UX0hFQURFUiA9ICdYLUlELVRFTkFOVC1OQU1FJztcblxuZXhwb3J0IGVudW0gU2l0dWF0aW9uIHtcbiAgRURJVCA9ICdFRElUJyxcbiAgQ1JFQVRFID0gJ0NSRUFURScsXG4gIFNFQVJDSCA9ICdTRUFSQ0gnXG59XG5cbmV4cG9ydCBjb25zdCBTeXN0ZW1UeXBlID0ge1xuICBPQkpFQ1Q6ICdzeXN0ZW06b2JqZWN0JyxcbiAgRE9DVU1FTlQ6ICdzeXN0ZW06ZG9jdW1lbnQnLFxuICBGT0xERVI6ICdzeXN0ZW06Zm9sZGVyJyxcbiAgQVVESVQ6ICdzeXN0ZW06YXVkaXQnLFxuICBTT1Q6ICdzeXN0ZW06c2Vjb25kcmF5J1xufTtcblxuZXhwb3J0IGNvbnN0IFN5c3RlbVJlc3VsdCA9IHtcbiAgREVMRVRFOiAnc3lzdGVtOmRlbGV0aW9uUmVzdWx0Jyxcbn1cblxuZXhwb3J0IGNvbnN0IEFkbWluaXN0cmF0aW9uUm9sZXMgPSB7XG4gIEFETUlOOiAnWVVVVklTX1RFTkFOVF9BRE1JTicsXG4gIFNZU1RFTTogJ1lVVVZJU19TWVNURU1fSU5URUdSQVRPUicsXG4gIE1BTkFHRV9TRVRUSU5HUzogJ1lVVVZJU19NQU5BR0VfU0VUVElOR1MnXG59O1xuXG5leHBvcnQgY29uc3QgVXNlclJvbGVzID0ge1xuICBNVUxUSV9URU5BTlQ6ICdZVVVWSVNfTVVMVElfVEVOQU5UJ1xufTtcblxuZXhwb3J0IGNvbnN0IFN5c3RlbVNPVCA9IHtcbiAgREVTVFJVQ1RJT05fUkVURU5USU9OOiAnc3lzdGVtOnJtRGVzdHJ1Y3Rpb25SZXRlbnRpb24nXG59O1xuXG5leHBvcnQgY29uc3QgUmV0ZW50aW9uRmllbGQgPSB7XG4gIFJFVEVOVElPTl9FTkQ6ICdzeXN0ZW06cm1FeHBpcmF0aW9uRGF0ZScsXG4gIFJFVEVOVElPTl9TVEFSVDogJ3N5c3RlbTpybVN0YXJ0T2ZSZXRlbnRpb24nLFxuICBERVNUUlVDVElPTl9EQVRFOiAnc3lzdGVtOnJtRGVzdHJ1Y3Rpb25EYXRlJ1xufTtcblxuZXhwb3J0IGVudW0gUmV0ZW50aW9uU3RhdGUge1xuICAvLyBubyByZXRlbnRpb25cbiAgTk9ORSA9IDAsXG4gIC8vIHJldGVudGlvbiBpcyBhY3RpdmVcbiAgQUNUSVZFID0gMSxcbiAgLy8gc3VwcG9zZWQgdG8gYmUgZGVzdHJ1Y3RlZFxuICBERVNUUlVDVCA9IDIsXG4gIC8vIHJldGVudGlvbiBpcyBub3QgYWN0aXZlIHlldFxuICBJTkFDVElWRSA9IDNcbn1cblxuZXhwb3J0IGNvbnN0IEJhc2VPYmplY3RUeXBlRmllbGQgPSB7XG4gIE9CSkVDVF9UWVBFX0lEOiAnc3lzdGVtOm9iamVjdFR5cGVJZCcsXG4gIFZFUlNJT05fTlVNQkVSOiAnc3lzdGVtOnZlcnNpb25OdW1iZXInLFxuICBDUkVBVElPTl9EQVRFOiAnc3lzdGVtOmNyZWF0aW9uRGF0ZScsXG4gIENSRUFURURfQlk6ICdzeXN0ZW06Y3JlYXRlZEJ5JyxcbiAgTU9ESUZJQ0FUSU9OX0RBVEU6ICdzeXN0ZW06bGFzdE1vZGlmaWNhdGlvbkRhdGUnLFxuICBNT0RJRklFRF9CWTogJ3N5c3RlbTpsYXN0TW9kaWZpZWRCeScsXG4gIC4uLlJldGVudGlvbkZpZWxkLFxuICBQQVJFTlRfSUQ6ICdzeXN0ZW06cGFyZW50SWQnLFxuICBQQVJFTlRfT0JKRUNUX1RZUEVfSUQ6ICdzeXN0ZW06cGFyZW50T2JqZWN0VHlwZUlkJyxcbiAgUEFSRU5UX1ZFUlNJT05fTlVNQkVSOiAnc3lzdGVtOnBhcmVudFZlcnNpb25OdW1iZXInLFxuICBURU5BTlQ6ICdzeXN0ZW06dGVuYW50JyxcbiAgQUNMOiAnc3lzdGVtOmFjbCcsXG4gIFRSQUNFX0lEOiAnc3lzdGVtOnRyYWNlSWQnLFxuICBTRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTOiAnc3lzdGVtOnNlY29uZGFyeU9iamVjdFR5cGVJZHMnLFxuICBCQVNFX1RZUEVfSUQ6ICdzeXN0ZW06YmFzZVR5cGVJZCcsXG4gIFRBR1M6ICdzeXN0ZW06dGFncycsXG4gIE9CSkVDVF9JRDogJ3N5c3RlbTpvYmplY3RJZCdcbn07XG5cbi8vIEZpZWxkcyBwcm92aWRlZCBieSBhIHNwZWNpYWwgc2Vjb25kYXJ5IG9iamVjdCB0eXBlIHRoYXQgbW9zdCBvZlxuLy8gdGhlIG9iamVjdCB0eXBlcyBzaG91bGQgaGF2ZSBhcHBsaWVkIHRvIHRoZW1cbmV4cG9ydCBjb25zdCBDbGllbnREZWZhdWx0c09iamVjdFR5cGVGaWVsZCA9IHtcbiAgVElUTEU6ICdhcHBDbGllbnQ6Y2xpZW50dGl0bGUnLFxuICBERVNDUklQVElPTjogJ2FwcENsaWVudDpjbGllbnRkZXNjcmlwdGlvbidcbn07XG5cbmV4cG9ydCBjb25zdCBDb250ZW50U3RyZWFtRmllbGQgPSB7XG4gIExFTkdUSDogJ3N5c3RlbTpjb250ZW50U3RyZWFtTGVuZ3RoJyxcbiAgTUlNRV9UWVBFOiAnc3lzdGVtOmNvbnRlbnRTdHJlYW1NaW1lVHlwZScsXG4gIEZJTEVOQU1FOiAnc3lzdGVtOmNvbnRlbnRTdHJlYW1GaWxlTmFtZScsXG4gIElEOiAnc3lzdGVtOmNvbnRlbnRTdHJlYW1JZCcsXG4gIFJBTkdFOiAnc3lzdGVtOmNvbnRlbnRTdHJlYW1SYW5nZScsXG4gIFJFUE9TSVRPUllfSUQ6ICdzeXN0ZW06Y29udGVudFN0cmVhbVJlcG9zaXRvcnlJZCcsXG4gIERJR0VTVDogJ3N5c3RlbTpkaWdlc3QnLFxuICBBUkNISVZFX1BBVEg6ICdzeXN0ZW06YXJjaGl2ZVBhdGgnXG59O1xuXG5leHBvcnQgY29uc3QgQXVkaXRGaWVsZCA9IHtcbiAgUkVGRVJSRURfT0JKRUNUX0lEOiAnc3lzdGVtOnJlZmVycmVkT2JqZWN0SWQnLFxuICBDUkVBVElPTl9EQVRFOiAnc3lzdGVtOmNyZWF0aW9uRGF0ZScsXG4gIFZFUlNJT046ICdzeXN0ZW06dmVyc2lvbk51bWJlcicsXG4gIERFVEFJTDogJ3N5c3RlbTpkZXRhaWwnLFxuICBDUkVBVEVEX0JZOiAnc3lzdGVtOmNyZWF0ZWRCeScsXG4gIEFDVElPTjogJ3N5c3RlbTphY3Rpb24nLFxuICBTVUJBQ1RJT046ICdzeXN0ZW06c3ViYWN0aW9uJ1xufTtcblxuZXhwb3J0IGNvbnN0IFBhcmVudEZpZWxkID0ge1xuICBhc3Zha3RlbnplaWNoZW46ICd0ZW5Lb2xpYnJpOmFzdmFrdGVuemVpY2hlbicsXG4gIGFzdmFrdGVuemVpY2hlbnRleHQ6ICd0ZW5Lb2xpYnJpOmFzdmFrdGVuemVpY2hlbnRleHQnLFxuICBhc3ZzaWNodHJlY2h0ZTogJ3RlbktvbGlicmk6YXN2c2ljaHRyZWNodGUnLFxuICBhc3Z2b3JnYW5nc25hbWU6ICd0ZW5Lb2xpYnJpOmFzdnZvcmdhbmdzbmFtZScsXG4gIGFzdnZvcmdhbmdzbnVtbWVyOiAndGVuS29saWJyaTphc3Z2b3JnYW5nc251bW1lcidcbn07XG5cbmV4cG9ydCBlbnVtIENvbnRlbnRTdHJlYW1BbGxvd2VkIHtcbiAgQUxMT1dFRCA9ICdhbGxvd2VkJyxcbiAgTk9UX0FMTE9XRUQgPSAnbm90YWxsb3dlZCcsXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJ1xufVxuXG4vLyBjbGFzc2lmaWNhdGlvbnMgYXBwbGllZCB0byBvYmplY3QgdHlwZSBmaWVsZHNcbmV4cG9ydCBlbnVtIENsYXNzaWZpY2F0aW9uIHtcbiAgU1RSSU5HX0NBVEFMT0dfQ1VTVE9NID0gJ2N1c3RvbTpjYXRhbG9nJyxcbiAgU1RSSU5HX0NBVEFMT0dfRFlOQU1JQyA9ICdkeW5hbWljOmNhdGFsb2cnLFxuICBTVFJJTkdfQ0FUQUxPRyA9ICdjYXRhbG9nJyxcbiAgU1RSSU5HX09SR0FOSVpBVElPTiA9ICdpZDpvcmdhbml6YXRpb24nLFxuICBTVFJJTkdfT1JHQU5JWkFUSU9OX1NFVCA9ICdpZDpvcmdhbml6YXRpb246c2V0JyxcbiAgU1RSSU5HX1JFRkVSRU5DRSA9ICdpZDpyZWZlcmVuY2UnLFxuICBTVFJJTkdfRU1BSUwgPSAnZW1haWwnLFxuICBTVFJJTkdfVVJMID0gJ3VybCcsXG4gIFNUUklOR19QSE9ORSA9ICdwaG9uZScsXG4gIE5VTUJFUl9GSUxFU0laRSA9ICdmaWxlc2l6ZScsXG4gIE5VTUJFUl9ESUdJVCA9ICdkaWdpdCcsXG4gIEJPT0xFQU5fU1dJVENIID0gJ3N3aXRjaCcsXG4gIFNZU1RFTV9TT1QgPSAnc3lzdGVtc290JyxcbiAgUFJFRElDVElPTl9DTEFTU0lGWSA9ICdwcmVkaWN0aW9uOmNsYXNzaWZ5JyxcbiAgVEFCTEVfU09SVEFCTEUgPSAnc29ydGFibGUnXG59XG5cbi8vIGNsYXNzaWZpY2F0aW9ucyBhcHBsaWVkIHRvIG9iamVjdCB0eXBlc1xuZXhwb3J0IGVudW0gT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uIHtcbiAgU0VBUkNIX0ZBTFNFID0gJ2FwcENsaWVudDpzZWFyY2g6ZmFsc2UnLFxuICBDUkVBVEVfRkFMU0UgPSAnYXBwQ2xpZW50OmNyZWF0ZTpmYWxzZScsXG4gIE9CSkVDVF9UWVBFX0lDT04gPSAnYXBwQ2xpZW50Omljb24nXG59XG5cbi8vIGNsYXNzaWZpY2F0aW9ucyBhcHBsaWVkIHRvIG9iamVjdCB0eXBlc1xuZXhwb3J0IGVudW0gT2JqZWN0VHlwZVByb3BlcnR5Q2xhc3NpZmljYXRpb24ge1xuICBTVU1NQVJZX0hJRERFTiA9ICdhcHBDbGllbnQ6c3VtbWFyeTpoaWRkZW4nXG59XG5cbi8vIGNsYXNzaWZpY2F0aW9ucyBhcHBsaWVkIHRvIHNlY29uZGFyeSBvYmplY3QgdHlwZXNcbmV4cG9ydCBlbnVtIFNlY29uZGFyeU9iamVjdFR5cGVDbGFzc2lmaWNhdGlvbiB7XG4gIFJFUVVJUkVEID0gJ2FwcENsaWVudDpyZXF1aXJlZCcsXG4gIFBSSU1BUlkgPSAnYXBwQ2xpZW50OnByaW1hcnknLFxuICBFWFRFTlNJT05fQUREX0ZBTFNFID0gJ2FwcENsaWVudDpleHRlbnNpb246YWRkOmZhbHNlJyxcbiAgRVhURU5TSU9OX1JFTU9WRV9GQUxTRSA9ICdhcHBDbGllbnQ6ZXh0ZW5zaW9uOnJlbW92ZTpmYWxzZSdcbn1cblxuLy8gc3BlY2lhbCBpbnRlcm5hbCB0eXBlcyBvZiBvYmplY3QgdHlwZSBmaWVsZHNcbmV4cG9ydCBlbnVtIEludGVybmFsRmllbGRUeXBlIHtcbiAgU1RSSU5HX09SR0FOSVpBVElPTl9TRVQgPSAnc3RyaW5nOm9yZ2FuaXphdGlvbjpzZXQnLFxuICBTVFJJTkdfT1JHQU5JWkFUSU9OID0gJ3N0cmluZzpvcmdhbml6YXRpb24nLFxuICBTVFJJTkdfUkVGRVJFTkNFID0gJ3N0cmluZzpyZWZlcmVuY2UnLFxuICBTVFJJTkdfQ0FUQUxPRyA9ICdzdHJpbmc6Y2F0YWxvZycsXG4gIFNUUklOR19EWU5BTUlDX0NBVEFMT0cgPSAnc3RyaW5nOmNhdGFsb2c6ZHluYW1pYycsXG4gIEJPT0xFQU5fU1dJVENIID0gJ2Jvb2xlYW46c3dpdGNoJ1xufTtcblxuZXhwb3J0IGVudW0gT2JqZWN0VGFnIHtcbiAgQUZPID0gJ2FwcGNsaWVudDpkbG06cHJlcGFyZSdcbn1cblxuLy8gcG9zc2libGUgc3RhdGVzIG9mIGEgRExNIGl0ZW1cbmV4cG9ydCBjb25zdCBBRk9fU1RBVEUgPSB7XG4gIC8vIGNyZWF0ZWQgYnV0IG5vIEZTT1QgYXNzaWduZWQgc28gZmFyXG4gIElOX1BST0dSRVNTOiAwLFxuICAvLyBhbiBGU09UIGhhcyBiZWVuIGFzc2lnbmVkXG4gIFJFQURZOiAxXG59O1xuXG5leHBvcnQgY29uc3QgQ29sdW1uQ29uZmlnU2tpcEZpZWxkcyA9IFtcbiAgQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSUQsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSUQsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuUEFSRU5UX0lELFxuICBCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9PQkpFQ1RfVFlQRV9JRCxcbiAgQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfVkVSU0lPTl9OVU1CRVIsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuVEVOQU5ULFxuICBCYXNlT2JqZWN0VHlwZUZpZWxkLlRSQUNFX0lELFxuICAvLyBCYXNlT2JqZWN0VHlwZUZpZWxkLlRBR1MsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuQkFTRV9UWVBFX0lELFxuICBDb250ZW50U3RyZWFtRmllbGQuSUQsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5SQU5HRSxcbiAgQ29udGVudFN0cmVhbUZpZWxkLlJFUE9TSVRPUllfSUQsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5ESUdFU1QsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5BUkNISVZFX1BBVEhcbl07XG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUVoRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtJQUNqQiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixNQUFNLEVBQUUsZUFBZTtJQUN2QixLQUFLLEVBQUUsY0FBYztJQUNyQixHQUFHLEVBQUUsa0JBQWtCO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsTUFBTSxFQUFFLHVCQUF1QjtDQUNoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixNQUFNLEVBQUUsMEJBQTBCO0lBQ2xDLGVBQWUsRUFBRSx3QkFBd0I7Q0FDMUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixZQUFZLEVBQUUscUJBQXFCO0NBQ3BDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIscUJBQXFCLEVBQUUsK0JBQStCO0NBQ3ZELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsYUFBYSxFQUFFLHlCQUF5QjtJQUN4QyxlQUFlLEVBQUUsMkJBQTJCO0lBQzVDLGdCQUFnQixFQUFFLDBC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QUFRO0lBQzVCLDRCQUE0QjtJQUM1QixtQkFBbUIsQ0FBQyxZQUFZO0lBQ2hDLGtCQUFrQixDQUFDLEVBQUU7SUFDckIsa0JBQWtCLENBQUMsS0FBSztJQUN4QixrQkFBa0IsQ0FBQyxhQUFhO0lBQ2hDLGtCQUFrQixDQUFDLE1BQU07SUFDekIsa0JBQWtCLENBQUMsWUFBWTtDQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRFTkFOVF9IRUFERVIgPSAnWC1JRC1URU5BTlQtTkFNRSc7XG5cbmV4cG9ydCBlbnVtIFNpdHVhdGlvbiB7XG4gIEVESVQgPSAnRURJVCcsXG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBTRUFSQ0ggPSAnU0VBUkNIJ1xufVxuXG5leHBvcnQgY29uc3QgU3lzdGVtVHlwZSA9IHtcbiAgT0JKRUNUOiAnc3lzdGVtOm9iamVjdCcsXG4gIERPQ1VNRU5UOiAnc3lzdGVtOmRvY3VtZW50JyxcbiAgRk9MREVSOiAnc3lzdGVtOmZvbGRlcicsXG4gIEFVRElUOiAnc3lzdGVtOmF1ZGl0JyxcbiAgU09UOiAnc3lzdGVtOnNlY29uZHJheSdcbn07XG5cbmV4cG9ydCBjb25zdCBTeXN0ZW1SZXN1bHQgPSB7XG4gIERFTEVURTogJ3N5c3RlbTpkZWxldGlvblJlc3VsdCdcbn07XG5cbmV4cG9ydCBjb25zdCBBZG1pbmlzdHJhdGlvblJvbGVzID0ge1xuICBBRE1JTjogJ1lVVVZJU19URU5BTlRfQURNSU4nLFxuICBTWVNURU06ICdZVVVWSVNfU1lTVEVNX0lOVEVHUkFUT1InLFxuICBNQU5BR0VfU0VUVElOR1M6ICdZVVVWSVNfTUFOQUdFX1NFVFRJTkdTJ1xufTtcblxuZXhwb3J0IGNvbnN0IFVzZXJSb2xlcyA9IHtcbiAgTVVMVElfVEVOQU5UOiAnWVVVVklTX01VTFRJX1RFTkFOVCdcbn07XG5cbmV4cG9ydCBjb25zdCBTeXN0ZW1TT1QgPSB7XG4gIERFU1RSVUNUSU9OX1JFVEVOVElPTjogJ3N5c3RlbTpybURlc3RydWN0aW9uUmV0ZW50aW9uJ1xufTtcblxuZXhwb3J0IGNvbnN0IFJldGVudGlvbkZpZWxkID0ge1xuICBSRVRFTlRJT05fRU5EOiAnc3lzdGVtOnJtRXhwaXJhdGlvbkRhdGUnLFxuICBSRVRFTlRJT05fU1RBUlQ6ICdzeXN0ZW06cm1TdGFydE9mUmV0ZW50aW9uJyxcbiAgREVTVFJVQ1RJT05fREFURTogJ3N5c3RlbTpybURlc3RydWN0aW9uRGF0ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBCYXNlT2JqZWN0VHlwZUZpZWxkID0ge1xuICBPQkpFQ1RfVFlQRV9JRDogJ3N5c3RlbTpvYmplY3RUeXBlSWQnLFxuICBWRVJTSU9OX05VTUJFUjogJ3N5c3RlbTp2ZXJzaW9uTnVtYmVyJyxcbiAgQ1JFQVRJT05fREFURTogJ3N5c3RlbTpjcmVhdGlvbkRhdGUnLFxuICBDUkVBVEVEX0JZOiAnc3lzdGVtOmNyZWF0ZWRCeScsXG4gIE1PRElGSUNBVElPTl9EQVRFOiAnc3lzdGVtOmxhc3RNb2RpZmljYXRpb25EYXRlJyxcbiAgTU9ESUZJRURfQlk6ICdzeXN0ZW06bGFzdE1vZGlmaWVkQnknLFxuICAuLi5SZXRlbnRpb25GaWVsZCxcbiAgUEFSRU5UX0lEOiAnc3lzdGVtOnBhcmVudElkJyxcbiAgUEFSRU5UX09CSkVDVF9UWVBFX0lEOiAnc3lzdGVtOnBhcmVudE9iamVjdFR5cGVJZCcsXG4gIFBBUkVOVF9WRVJTSU9OX05VTUJFUjogJ3N5c3RlbTpwYXJlbnRWZXJzaW9uTnVtYmVyJyxcbiAgVEVOQU5UOiAnc3lzdGVtOnRlbmFudCcsXG4gIEFDTDogJ3N5c3RlbTphY2wnLFxuICBUUkFDRV9JRDogJ3N5c3RlbTp0cmFjZUlkJyxcbiAgU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEUzogJ3N5c3RlbTpzZWNvbmRhcnlPYmplY3RUeXBlSWRzJyxcbiAgQkFTRV9UWVBFX0lEOiAnc3lzdGVtOmJhc2VUeXBlSWQnLFxuICBUQUdTOiAnc3lzdGVtOnRhZ3MnLFxuICBPQkpFQ1RfSUQ6ICdzeXN0ZW06b2JqZWN0SWQnXG59O1xuXG4vLyBGaWVsZHMgcHJvdmlkZWQgYnkgYSBzcGVjaWFsIHNlY29uZGFyeSBvYmplY3QgdHlwZSB0aGF0IG1vc3Qgb2Zcbi8vIHRoZSBvYmplY3QgdHlwZXMgc2hvdWxkIGhhdmUgYXBwbGllZCB0byB0aGVtXG5leHBvcnQgY29uc3QgQ2xpZW50RGVmYXVsdHNPYmplY3RUeXBlRmllbGQgPSB7XG4gIFRJVExFOiAnYXBwQ2xpZW50OmNsaWVudHRpdGxlJyxcbiAgREVTQ1JJUFRJT046ICdhcHBDbGllbnQ6Y2xpZW50ZGVzY3JpcHRpb24nXG59O1xuXG5leHBvcnQgY29uc3QgQ29udGVudFN0cmVhbUZpZWxkID0ge1xuICBMRU5HVEg6ICdzeXN0ZW06Y29udGVudFN0cmVhbUxlbmd0aCcsXG4gIE1JTUVfVFlQRTogJ3N5c3RlbTpjb250ZW50U3RyZWFtTWltZVR5cGUnLFxuICBGSUxFTkFNRTogJ3N5c3RlbTpjb250ZW50U3RyZWFtRmlsZU5hbWUnLFxuICBJRDogJ3N5c3RlbTpjb250ZW50U3RyZWFtSWQnLFxuICBSQU5HRTogJ3N5c3RlbTpjb250ZW50U3RyZWFtUmFuZ2UnLFxuICBSRVBPU0lUT1JZX0lEOiAnc3lzdGVtOmNvbnRlbnRTdHJlYW1SZXBvc2l0b3J5SWQnLFxuICBESUdFU1Q6ICdzeXN0ZW06ZGlnZXN0JyxcbiAgQVJDSElWRV9QQVRIOiAnc3lzdGVtOmFyY2hpdmVQYXRoJ1xufTtcblxuZXhwb3J0IGNvbnN0IEF1ZGl0RmllbGQgPSB7XG4gIFJFRkVSUkVEX09CSkVDVF9JRDogJ3N5c3RlbTpyZWZlcnJlZE9iamVjdElkJyxcbiAgQ1JFQVRJT05fREFURTogJ3N5c3RlbTpjcmVhdGlvbkRhdGUnLFxuICBWRVJTSU9OOiAnc3lzdGVtOnZlcnNpb25OdW1iZXInLFxuICBERVRBSUw6ICdzeXN0ZW06ZGV0YWlsJyxcbiAgQ1JFQVRFRF9CWTogJ3N5c3RlbTpjcmVhdGVkQnknLFxuICBBQ1RJT046ICdzeXN0ZW06YWN0aW9uJyxcbiAgU1VCQUNUSU9OOiAnc3lzdGVtOnN1YmFjdGlvbidcbn07XG5cbmV4cG9ydCBjb25zdCBQYXJlbnRGaWVsZCA9IHtcbiAgYXN2YWt0ZW56ZWljaGVuOiAndGVuS29saWJyaTphc3Zha3RlbnplaWNoZW4nLFxuICBhc3Zha3RlbnplaWNoZW50ZXh0OiAndGVuS29saWJyaTphc3Zha3RlbnplaWNoZW50ZXh0JyxcbiAgYXN2c2ljaHRyZWNodGU6ICd0ZW5Lb2xpYnJpOmFzdnNpY2h0cmVjaHRlJyxcbiAgYXN2dm9yZ2FuZ3NuYW1lOiAndGVuS29saWJyaTphc3Z2b3JnYW5nc25hbWUnLFxuICBhc3Z2b3JnYW5nc251bW1lcjogJ3RlbktvbGlicmk6YXN2dm9yZ2FuZ3NudW1tZXInXG59O1xuXG5leHBvcnQgZW51bSBDb250ZW50U3RyZWFtQWxsb3dlZCB7XG4gIEFMTE9XRUQgPSAnYWxsb3dlZCcsXG4gIE5PVF9BTExPV0VEID0gJ25vdGFsbG93ZWQnLFxuICBSRVFVSVJFRCA9ICdyZXF1aXJlZCdcbn1cblxuLy8gY2xhc3NpZmljYXRpb25zIGFwcGxpZWQgdG8gb2JqZWN0IHR5cGUgZmllbGRzXG5leHBvcnQgZW51bSBDbGFzc2lmaWNhdGlvbiB7XG4gIFNUUklOR19DQVRBTE9HX0NVU1RPTSA9ICdjdXN0b206Y2F0YWxvZycsXG4gIFNUUklOR19DQVRBTE9HX0RZTkFNSUMgPSAnZHluYW1pYzpjYXRhbG9nJyxcbiAgU1RSSU5HX0NBVEFMT0cgPSAnY2F0YWxvZycsXG4gIFNUUklOR19PUkdBTklaQVRJT04gPSAnaWQ6b3JnYW5pemF0aW9uJyxcbiAgU1RSSU5HX09SR0FOSVpBVElPTl9TRVQgPSAnaWQ6b3JnYW5pemF0aW9uOnNldCcsXG4gIFNUUklOR19SRUZFUkVOQ0UgPSAnaWQ6cmVmZXJlbmNlJyxcbiAgU1RSSU5HX0VNQUlMID0gJ2VtYWlsJyxcbiAgU1RSSU5HX1VSTCA9ICd1cmwnLFxuICBTVFJJTkdfUEhPTkUgPSAncGhvbmUnLFxuICBOVU1CRVJfRklMRVNJWkUgPSAnZmlsZXNpemUnLFxuICBOVU1CRVJfRElHSVQgPSAnZGlnaXQnLFxuICBCT09MRUFOX1NXSVRDSCA9ICdzd2l0Y2gnLFxuICBTWVNURU1fU09UID0gJ3N5c3RlbXNvdCcsXG4gIFBSRURJQ1RJT05fQ0xBU1NJRlkgPSAncHJlZGljdGlvbjpjbGFzc2lmeScsXG4gIFRBQkxFX1NPUlRBQkxFID0gJ3NvcnRhYmxlJ1xufVxuXG4vLyBjbGFzc2lmaWNhdGlvbnMgYXBwbGllZCB0byBvYmplY3QgdHlwZXNcbmV4cG9ydCBlbnVtIE9iamVjdFR5cGVDbGFzc2lmaWNhdGlvbiB7XG4gIFNFQVJDSF9GQUxTRSA9ICdhcHBDbGllbnQ6c2VhcmNoOmZhbHNlJyxcbiAgQ1JFQVRFX0ZBTFNFID0gJ2FwcENsaWVudDpjcmVhdGU6ZmFsc2UnLFxuICBPQkpFQ1RfVFlQRV9JQ09OID0gJ2FwcENsaWVudDppY29uJ1xufVxuXG4vLyBjbGFzc2lmaWNhdGlvbnMgYXBwbGllZCB0byBvYmplY3QgdHlwZXNcbmV4cG9ydCBlbnVtIE9iamVjdFR5cGVQcm9wZXJ0eUNsYXNzaWZpY2F0aW9uIHtcbiAgU1VNTUFSWV9ISURERU4gPSAnYXBwQ2xpZW50OnN1bW1hcnk6aGlkZGVuJ1xufVxuXG4vLyBjbGFzc2lmaWNhdGlvbnMgYXBwbGllZCB0byBzZWNvbmRhcnkgb2JqZWN0IHR5cGVzXG5leHBvcnQgZW51bSBTZWNvbmRhcnlPYmplY3RUeXBlQ2xhc3NpZmljYXRpb24ge1xuICBSRVFVSVJFRCA9ICdhcHBDbGllbnQ6cmVxdWlyZWQnLFxuICBQUklNQVJZID0gJ2FwcENsaWVudDpwcmltYXJ5JyxcbiAgRVhURU5TSU9OX0FERF9GQUxTRSA9ICdhcHBDbGllbnQ6ZXh0ZW5zaW9uOmFkZDpmYWxzZScsXG4gIEVYVEVOU0lPTl9SRU1PVkVfRkFMU0UgPSAnYXBwQ2xpZW50OmV4dGVuc2lvbjpyZW1vdmU6ZmFsc2UnXG59XG5cbi8vIHNwZWNpYWwgaW50ZXJuYWwgdHlwZXMgb2Ygb2JqZWN0IHR5cGUgZmllbGRzXG5leHBvcnQgZW51bSBJbnRlcm5hbEZpZWxkVHlwZSB7XG4gIFNUUklOR19PUkdBTklaQVRJT05fU0VUID0gJ3N0cmluZzpvcmdhbml6YXRpb246c2V0JyxcbiAgU1RSSU5HX09SR0FOSVpBVElPTiA9ICdzdHJpbmc6b3JnYW5pemF0aW9uJyxcbiAgU1RSSU5HX1JFRkVSRU5DRSA9ICdzdHJpbmc6cmVmZXJlbmNlJyxcbiAgU1RSSU5HX0NBVEFMT0cgPSAnc3RyaW5nOmNhdGFsb2cnLFxuICBTVFJJTkdfRFlOQU1JQ19DQVRBTE9HID0gJ3N0cmluZzpjYXRhbG9nOmR5bmFtaWMnLFxuICBCT09MRUFOX1NXSVRDSCA9ICdib29sZWFuOnN3aXRjaCdcbn1cblxuZXhwb3J0IGVudW0gT2JqZWN0VGFnIHtcbiAgQUZPID0gJ2FwcGNsaWVudDpkbG06cHJlcGFyZSdcbn1cblxuLy8gcG9zc2libGUgc3RhdGVzIG9mIGEgRExNIGl0ZW1cbmV4cG9ydCBjb25zdCBBRk9fU1RBVEUgPSB7XG4gIC8vIGNyZWF0ZWQgYnV0IG5vIEZTT1QgYXNzaWduZWQgc28gZmFyXG4gIElOX1BST0dSRVNTOiAwLFxuICAvLyBhbiBGU09UIGhhcyBiZWVuIGFzc2lnbmVkXG4gIFJFQURZOiAxXG59O1xuXG5leHBvcnQgY29uc3QgQ29sdW1uQ29uZmlnU2tpcEZpZWxkcyA9IFtcbiAgQmFzZU9iamVjdFR5cGVGaWVsZC5PQkpFQ1RfSUQsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuT0JKRUNUX1RZUEVfSUQsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuUEFSRU5UX0lELFxuICBCYXNlT2JqZWN0VHlwZUZpZWxkLlBBUkVOVF9PQkpFQ1RfVFlQRV9JRCxcbiAgQmFzZU9iamVjdFR5cGVGaWVsZC5QQVJFTlRfVkVSU0lPTl9OVU1CRVIsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuVEVOQU5ULFxuICBCYXNlT2JqZWN0VHlwZUZpZWxkLlRSQUNFX0lELFxuICAvLyBCYXNlT2JqZWN0VHlwZUZpZWxkLlRBR1MsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQuQkFTRV9UWVBFX0lELFxuICBDb250ZW50U3RyZWFtRmllbGQuSUQsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5SQU5HRSxcbiAgQ29udGVudFN0cmVhbUZpZWxkLlJFUE9TSVRPUllfSUQsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5ESUdFU1QsXG4gIENvbnRlbnRTdHJlYW1GaWVsZC5BUkNISVZFX1BBVEhcbl07XG4iXX0=
@@ -594,4 +594,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
594
594
  providedIn: 'root'
595
595
  }]
596
596
  }] });
597
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFlbko7O0dBRUc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlFLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLGlCQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDNUMsMkJBQXNCLEdBQUcsb0JBQW9CLENBQUM7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Q0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVE7YUFDakIsS0FBSyxDQUFDO1lBQ0wsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3RELEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRTtTQUN0RCxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7K0dBdG9CVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7IEFwaUJhc2UgfSBmcm9tICcuLi9iYWNrZW5kL2FwaS5lbnVtJztcbmltcG9ydCB7IEJhY2tlbmRTZXJ2aWNlIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XG5pbXBvcnQgeyBBdXRoRGF0YSB9IGZyb20gJy4vLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0VHlwZUZpZWxkSW50ZXJuYWxUeXBlLCBPYmplY3RUeXBlRmllbGRUeXBlIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZU9iamVjdFR5cGVGaWVsZCwgQ2xhc3NpZmljYXRpb24sIENvbnRlbnRTdHJlYW1BbGxvd2VkLCBJbnRlcm5hbEZpZWxkVHlwZSwgT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uLCBTeXN0ZW1UeXBlIH0gZnJvbSAnLi9zeXN0ZW0uZW51bSc7XG5pbXBvcnQge1xuICBDbGFzc2lmaWNhdGlvbkVudHJ5LFxuICBHZW5lcmljT2JqZWN0VHlwZSxcbiAgTG9jYWxpemF0aW9uLFxuICBPYmplY3RUeXBlLFxuICBPYmplY3RUeXBlRmllbGQsXG4gIE9iamVjdFR5cGVQZXJtaXNzaW9ucyxcbiAgU2NoZW1hUmVzcG9uc2UsXG4gIFNjaGVtYVJlc3BvbnNlRmllbGREZWZpbml0aW9uLFxuICBTY2hlbWFSZXNwb25zZVR5cGVEZWZpbml0aW9uLFxuICBTZWNvbmRhcnlPYmplY3RUeXBlLFxuICBTeXN0ZW1EZWZpbml0aW9uXG59IGZyb20gJy4vc3lzdGVtLmludGVyZmFjZSc7XG5cbi8qKlxuICogUHJvdmlkaW5nIHN5c3RlbSBkZWZpbml0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3lzdGVtU2VydmljZSB7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI2FwcENhY2hlID0gaW5qZWN0KEFwcENhY2hlU2VydmljZSk7XG4gICNsb2dnZXIgPSBpbmplY3QoTG9nZ2VyKTtcblxuICAjU1RPUkFHRV9LRVkgPSAneXV2LmNvcmUuc3lzdGVtLmRlZmluaXRpb24nO1xuICAjU1RPUkFHRV9LRVlfQVVUSF9EQVRBID0gJ3l1di5jb3JlLmF1dGguZGF0YSc7XG4gIC8vIGNhY2hlZCBpY29ucyB0byBhdm9pZCBiYWNrZW5kIGNhbGxzIChzZXNzaW9uIGNhY2hlKVxuICAjaWNvbkNhY2hlOiB7XG4gICAgW29iamVjdFR5cGVJZDogc3RyaW5nXToge1xuICAgICAgdXJpOiBzdHJpbmc7XG4gICAgICBpY29uPzogc3RyaW5nO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgI3Jlc29sdmVkQ2xhc3NpZmljYXRpb25zQ2FjaGU6IHsgW29iamVjdFR5cGVJZDogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICBzeXN0ZW0/OiBTeXN0ZW1EZWZpbml0aW9uO1xuICAjc3lzdGVtU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8U3lzdGVtRGVmaW5pdGlvbj4oKTtcbiAgc3lzdGVtJDogT2JzZXJ2YWJsZTxTeXN0ZW1EZWZpbml0aW9uPiA9IHRoaXMuI3N5c3RlbVNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvLyBjYWNoZSBmb3IgcmVzb2x2ZWQgdmlzaWJsZSB0YWdzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBpbiBsaXN0cyBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3QgYmUgcmUtZXZhbHVhdGVkIGFsbCB0aGUgdGltZVxuICAjdmlzaWJsZVRhZ3NDYWNoZTogeyBbb2JqZWN0SWQ6IHN0cmluZ106IHsgW3RhZ05hbWU6IHN0cmluZ106IGFueVtdIH0gfSA9IHt9O1xuICAjcGVybWlzc2lvbnM/OiBPYmplY3RUeXBlUGVybWlzc2lvbnM7XG4gIGF1dGhEYXRhPzogQXV0aERhdGE7XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgb2JqZWN0IHR5cGVzXG4gICAqIEBwYXJhbSB3aXRoTGFiZWxzIFdoZXRoZXIgb3Igbm90IHRvIGFsc28gYWRkIHRoZSB0eXBlcyBsYWJlbHNcbiAgICovXG4gIGdldE9iamVjdFR5cGVzKHdpdGhMYWJlbHM/OiBib29sZWFuLCBzaXR1YXRpb24/OiAnc2VhcmNoJyB8ICdjcmVhdGUnKTogR2VuZXJpY09iamVjdFR5cGVbXSB7XG4gICAgLy8gRmlsdGVyIGJ5IHVzZXIgcGVybWlzc2lvbnMgYmFzZWQgb24gc2l0dWF0aW9uXG4gICAgY29uc3Qgb2JqZWN0VHlwZXMgPSB0aGlzLiNmaWx0ZXJCeVBlcm1pc3Npb25zKFxuICAgICAgWy4uLnRoaXMuc3lzdGVtIS5vYmplY3RUeXBlcywgLi4udGhpcy5zeXN0ZW0hLnNlY29uZGFyeU9iamVjdFR5cGVzLm1hcCgoc290KSA9PiB0aGlzLiNzb3RUb0dlbmVyaWNUeXBlKHNvdCkpXSxcbiAgICAgIHNpdHVhdGlvblxuICAgICkgYXMgR2VuZXJpY09iamVjdFR5cGVbXTtcbiAgICByZXR1cm4gd2l0aExhYmVscyA/IG9iamVjdFR5cGVzLm1hcCgodCkgPT4gKHsgLi4udCwgbGFiZWw6IHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7dC5pZH1fbGFiZWxgKSB9KSkgOiBvYmplY3RUeXBlcztcbiAgfVxuXG4gICNzb3RUb0dlbmVyaWNUeXBlKHNvdDogU2Vjb25kYXJ5T2JqZWN0VHlwZSk6IEdlbmVyaWNPYmplY3RUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc290LFxuICAgICAgaXNGb2xkZXI6IGZhbHNlLFxuICAgICAgY3JlYXRhYmxlOiB0cnVlLFxuICAgICAgc2Vjb25kYXJ5T2JqZWN0VHlwZXM6IFtdLFxuICAgICAgaXNTb3Q6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgc2Vjb25kYXJ5IG9iamVjdCB0eXBlc1xuICAgKiBAcGFyYW0gd2l0aExhYmVscyBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGFkZCB0aGUgdHlwZXMgbGFiZWxzXG4gICAqL1xuICBnZXRTZWNvbmRhcnlPYmplY3RUeXBlcyh3aXRoTGFiZWxzPzogYm9vbGVhbiwgc2l0dWF0aW9uPzogJ3NlYXJjaCcgfCAnY3JlYXRlJyk6IFNlY29uZGFyeU9iamVjdFR5cGVbXSB7XG4gICAgY29uc3Qgc290cyA9IHRoaXMuI2ZpbHRlckJ5UGVybWlzc2lvbnMoXG4gICAgICB0aGlzLnN5c3RlbSEuc2Vjb25kYXJ5T2JqZWN0VHlwZXMubWFwKChzb3QpID0+IHRoaXMuI3NvdFRvR2VuZXJpY1R5cGUoc290KSksXG4gICAgICBzaXR1YXRpb25cbiAgICApIGFzIFNlY29uZGFyeU9iamVjdFR5cGVbXTtcblxuICAgIHJldHVybiAoXG4gICAgICAod2l0aExhYmVscyA/IHNvdHMubWFwKCh0KSA9PiAoeyAuLi50LCBsYWJlbDogdGhpcy5nZXRMb2NhbGl6ZWRSZXNvdXJjZShgJHt0LmlkfV9sYWJlbGApIH0pKSA6IHNvdHMpXG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0LmJhc2VJZCAmJiAhdC5pZC5zdGFydHNXaXRoKCdzeXN0ZW06JykgJiYgdC5pZCAhPT0gJ2FwcENsaWVudHN5c3RlbTpsZWFkaW5nVHlwZScpXG4gICAgKTtcbiAgfVxuXG4gICNmaWx0ZXJCeVBlcm1pc3Npb25zKHR5cGVzOiBHZW5lcmljT2JqZWN0VHlwZVtdLCBzaXR1YXRpb24/OiAnc2VhcmNoJyB8ICdjcmVhdGUnKTogR2VuZXJpY09iamVjdFR5cGVbXSB7XG4gICAgaWYgKCFzaXR1YXRpb24pIHJldHVybiB0eXBlcztcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBzaXR1YXRpb24gPT09ICdzZWFyY2gnID8gdGhpcy4jcGVybWlzc2lvbnMhLnNlYXJjaGFibGVPYmplY3RUeXBlcyA6IHRoaXMuI3Blcm1pc3Npb25zIS5jcmVhdGVhYmxlT2JqZWN0VHlwZXM7XG4gICAgcmV0dXJuIHR5cGVzLmZpbHRlcigodCkgPT4gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKHQuaWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBwYXJ0aWN1bGFyIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSB3aXRoTGFiZWwgV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIHR5cGVzIGxhYmVsXG4gICAqL1xuICBnZXRPYmplY3RUeXBlKG9iamVjdFR5cGVJZDogc3RyaW5nLCB3aXRoTGFiZWw/OiBib29sZWFuKTogR2VuZXJpY09iamVjdFR5cGUgfCB1bmRlZmluZWQge1xuICAgIGxldCBvYmplY3RUeXBlOiBHZW5lcmljT2JqZWN0VHlwZSB8IHVuZGVmaW5lZCA9XG4gICAgICBvYmplY3RUeXBlSWQgPT09IFN5c3RlbVR5cGUuT0JKRUNUID8gdGhpcy5nZXRCYXNlVHlwZSgpIDogdGhpcy5zeXN0ZW0hLm9iamVjdFR5cGVzLmZpbmQoKG90KSA9PiBvdC5pZCA9PT0gb2JqZWN0VHlwZUlkKTtcblxuICAgIGlmIChvYmplY3RUeXBlICYmIHdpdGhMYWJlbCkge1xuICAgICAgb2JqZWN0VHlwZS5sYWJlbCA9IHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7b2JqZWN0VHlwZS5pZH1fbGFiZWxgKSB8fCBvYmplY3RUeXBlSWQ7XG4gICAgfVxuXG4gICAgaWYgKCFvYmplY3RUeXBlKSB7XG4gICAgICAvLyBubyAncmVhbCcgb2JqZWN0IHR5cGUgZm91bmQuIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgU09UIGFuZCB0cmVhdCBpdCBsaWtlIGEgcmVhbCB0eXBlXG4gICAgICAvLyBieSBmaWxsaW5nIHVwIHRoZSBtaXNzaW5nIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IHNvdCA9IHRoaXMuZ2V0U2Vjb25kYXJ5T2JqZWN0VHlwZShvYmplY3RUeXBlSWQsIHdpdGhMYWJlbCk7XG4gICAgICBpZiAoc290KSB7XG4gICAgICAgIG9iamVjdFR5cGUgPSB0aGlzLiNzb3RUb0dlbmVyaWNUeXBlKHNvdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RUeXBlO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgYSBwYXJ0aWN1bGFyIHNlY29uZGFyeSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZUlkIElEIG9mIHRoZSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gd2l0aExhYmVsIFdoZXRoZXIgb3Igbm90IHRvIGFsc28gYWRkIHRoZSB0eXBlcyBsYWJlbFxuICAgKi9cbiAgZ2V0U2Vjb25kYXJ5T2JqZWN0VHlwZShvYmplY3RUeXBlSWQ6IHN0cmluZywgd2l0aExhYmVsPzogYm9vbGVhbik6IFNlY29uZGFyeU9iamVjdFR5cGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG9iamVjdFR5cGU6IFNlY29uZGFyeU9iamVjdFR5cGUgfCB1bmRlZmluZWQgPSB0aGlzLnN5c3RlbSEuc2Vjb25kYXJ5T2JqZWN0VHlwZXMuZmluZCgob3QpID0+IG90LmlkID09PSBvYmplY3RUeXBlSWQpO1xuICAgIGlmIChvYmplY3RUeXBlICYmIHdpdGhMYWJlbCkge1xuICAgICAgb2JqZWN0VHlwZS5sYWJlbCA9IHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7b2JqZWN0VHlwZS5pZH1fbGFiZWxgKSB8fCBvYmplY3RUeXBlLmlkO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgZG9jdW1lbnQgdHlwZSBhbGwgZG9jdW1lbnRzIGJlbG9uZyB0b1xuICAgKiBAcGFyYW0gd2l0aExhYmVsIFdoZXRoZXIgb3Igbm90IHRvIGFsc28gYWRkIHRoZSB0eXBlcyBsYWJlbFxuICAgKi9cbiAgZ2V0QmFzZURvY3VtZW50VHlwZSh3aXRoTGFiZWw/OiBib29sZWFuKTogT2JqZWN0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0VHlwZShTeXN0ZW1UeXBlLkRPQ1VNRU5ULCB3aXRoTGFiZWwpITtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgZm9sZGVyIHR5cGUgYWxsIGZvbGRlcnMgYmVsb25nIHRvXG4gICAqIEBwYXJhbSB3aXRoTGFiZWwgV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIHR5cGVzIGxhYmVsXG4gICAqL1xuICBnZXRCYXNlRm9sZGVyVHlwZSh3aXRoTGFiZWw/OiBib29sZWFuKTogT2JqZWN0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0VHlwZShTeXN0ZW1UeXBlLkZPTERFUiwgd2l0aExhYmVsKSE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiYXNlIG9iamVjdCB0eXBlIGFsbCBkbXMgb2JqZWN0cyBiZWxvbmcgdG9cbiAgICovXG4gIGdldEJhc2VUeXBlKCk6IE9iamVjdFR5cGUge1xuICAgIGNvbnN0IHN5c0ZvbGRlciA9IHRoaXMuZ2V0QmFzZUZvbGRlclR5cGUoKTtcbiAgICBjb25zdCBzeXNEb2N1bWVudCA9IHRoaXMuZ2V0QmFzZURvY3VtZW50VHlwZSgpO1xuXG4gICAgLy8gYmFzZSB0eXBlIGNvbnRhaW5zIG9ubHkgZmllbGRzIHRoYXQgYXJlIHNoYXJlZCBieSBiYXNlIGRvY3VtZW50IGFuZCBiYXNlIGZvbGRlciAuLi5cbiAgICBjb25zdCBmb2xkZXJUeXBlRmllbGRJRHMgPSBzeXNGb2xkZXIuZmllbGRzLm1hcCgoZikgPT4gZi5pZCk7XG4gICAgY29uc3QgYmFzZVR5cGVGaWVsZHM6IE9iamVjdFR5cGVGaWVsZFtdID0gc3lzRG9jdW1lbnQuZmllbGRzLmZpbHRlcigoZikgPT4gZm9sZGVyVHlwZUZpZWxkSURzLmluY2x1ZGVzKGYuaWQpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogU3lzdGVtVHlwZS5PQkpFQ1QsXG4gICAgICBjcmVhdGFibGU6IGZhbHNlLFxuICAgICAgaXNGb2xkZXI6IGZhbHNlLFxuICAgICAgc2Vjb25kYXJ5T2JqZWN0VHlwZXM6IFtdLFxuICAgICAgZmllbGRzOiBiYXNlVHlwZUZpZWxkc1xuICAgICAgLy8gcmF3RmllbGRzOiBiYXNlVHlwZUZpZWxkc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvbHZlZCBvYmplY3QgdHlwZSB3aXRoIGFsbCBmaWVsZHMgKCBpbmNsdWRpbmcgZmllbGRzIGZyb20gcmVsYXRlZCBzZWNvbmRhcnkgdHlwZXMgKVxuICAgKi9cbiAgZ2V0UmVzb2x2ZWRUeXBlKG9iamVjdFR5cGVJZD86IHN0cmluZyk6IHsgaWQ6IHN0cmluZzsgZmllbGRzOiBPYmplY3RUeXBlRmllbGRbXSB9IHtcbiAgICBjb25zdCBhYnN0cmFjdFR5cGVzID0gT2JqZWN0LnZhbHVlcyhTeXN0ZW1UeXBlKTtcbiAgICBpZiAoIW9iamVjdFR5cGVJZCB8fCBhYnN0cmFjdFR5cGVzLmluY2x1ZGVzKG9iamVjdFR5cGVJZCkpIHtcbiAgICAgIGNvbnN0IGJhc2VUeXBlID0gdGhpcy5nZXRCYXNlVHlwZSgpO1xuICAgICAgcmV0dXJuIHsgaWQ6IGJhc2VUeXBlLmlkLCBmaWVsZHM6IGJhc2VUeXBlLmZpZWxkcyB9O1xuICAgIH1cblxuICAgIGNvbnN0IG90ID0gdGhpcy5nZXRPYmplY3RUeXBlKG9iamVjdFR5cGVJZCk7XG4gICAgaWYgKCFvdCkge1xuICAgICAgY29uc3Qgc290ID0gdGhpcy5nZXRTZWNvbmRhcnlPYmplY3RUeXBlKG9iamVjdFR5cGVJZCkgfHwgeyBpZDogb2JqZWN0VHlwZUlkLCBmaWVsZHM6IFtdIH07XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IHRoaXMuZ2V0QmFzZVR5cGUoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzb3QuaWQsXG4gICAgICAgIGZpZWxkczogWy4uLnNvdC5maWVsZHMsIC4uLmJhc2VUeXBlLmZpZWxkc11cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBvdC5pZCxcbiAgICAgIGZpZWxkczogb3QuZmllbGRzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc29sdmVkIG9iamVjdCB0YWdzXG4gICAqL1xuICBnZXRSZXNvbHZlZFRhZ3Mob2JqZWN0VHlwZUlkOiBzdHJpbmcpOiB7IGlkOiBzdHJpbmc7IHRhZ05hbWU6IHN0cmluZzsgdGFnVmFsdWVzOiBhbnk7IGZpZWxkczogT2JqZWN0VHlwZUZpZWxkW10gfVtdIHtcbiAgICBjb25zdCB2VGFncyA9IHRoaXMuZ2V0VmlzaWJsZVRhZ3Mob2JqZWN0VHlwZUlkKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModlRhZ3MpLm1hcCgoaykgPT4gKHtcbiAgICAgIGlkOiBvYmplY3RUeXBlSWQsXG4gICAgICB0YWdOYW1lOiBrLFxuICAgICAgdGFnVmFsdWVzOiB2VGFnc1trXSxcbiAgICAgIGZpZWxkczogdGhpcy5nZXRCYXNlVHlwZSgpLmZpZWxkcy5maWx0ZXIoKGYpID0+IGYuaWQgPT09IEJhc2VPYmplY3RUeXBlRmllbGQuVEFHUylcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBjbGFzc2lmaWNhdGlvbnMgZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGUgaW5jbHVkaW5nIHRoZVxuICAgKiBjbGFzc2lmaWNhdGlvbnMgb2YgaXRzIHN0YXRpYyBzZWNvbmRhcnkgb2JqZWN0IHR5cGVzXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqL1xuICBnZXRSZXNvbHZlZENsYXNzaWZpY2F0aW9ucyhvYmplY3RUeXBlSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jcmVzb2x2ZWRDbGFzc2lmaWNhdGlvbnNDYWNoZVtvYmplY3RUeXBlSWRdIHx8IHRoaXMuI3Jlc29sdmVDbGFzc2lmaWNhdGlvbnMob2JqZWN0VHlwZUlkKTtcbiAgfVxuXG4gICNyZXNvbHZlQ2xhc3NpZmljYXRpb25zKG9iamVjdFR5cGVJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGxldCBjbGFzc2lmaWNhdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgb3QgPSB0aGlzLmdldE9iamVjdFR5cGUob2JqZWN0VHlwZUlkKTtcbiAgICBpZiAob3QpIHtcbiAgICAgIGNsYXNzaWZpY2F0aW9ucyA9IG90LmNsYXNzaWZpY2F0aW9uIHx8IFtdO1xuICAgICAgY29uc3Qgc3RhdGljU09Uczogc3RyaW5nW10gPSBvdC5zZWNvbmRhcnlPYmplY3RUeXBlcyA/IG90LnNlY29uZGFyeU9iamVjdFR5cGVzLmZpbHRlcigoc290KSA9PiBzb3Quc3RhdGljKS5tYXAoKHNvdCkgPT4gc290LmlkKSA6IFtdO1xuICAgICAgc3RhdGljU09Ucy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICBjb25zdCBzb3QgPSB0aGlzLmdldFNlY29uZGFyeU9iamVjdFR5cGUoaWQpO1xuICAgICAgICBjbGFzc2lmaWNhdGlvbnMgPSBzb3Q/LmNsYXNzaWZpY2F0aW9uXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIC4uLmNsYXNzaWZpY2F0aW9ucyxcbiAgICAgICAgICAgICAgLi4uc290LmNsYXNzaWZpY2F0aW9uLmZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGFsc28gZmlsdGVyIGNsYXNzaWZpY2F0aW9ucyB0aGF0IHNob3VsZCBub3QgYmUgaW5oZXJpdGVkXG4gICAgICAgICAgICAgICAgcmV0dXJuIGMgIT09IE9iamVjdFR5cGVDbGFzc2lmaWNhdGlvbi5DUkVBVEVfRkFMU0UgJiYgYyAhPT0gT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uLlNFQVJDSF9GQUxTRTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IGNsYXNzaWZpY2F0aW9ucztcbiAgICAgIH0pO1xuICAgICAgdGhpcy4jcmVzb2x2ZWRDbGFzc2lmaWNhdGlvbnNDYWNoZVtvYmplY3RUeXBlSWRdID0gY2xhc3NpZmljYXRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NpZmljYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpc2libGUgdGFncyBhcmUgZGVmaW5lZCBieSBhIGNsYXNzaWZpY2F0aW9uIG9uIHRoZSBvYmplY3QgdHlwZSAoZS5nLiAndGFnW3RlbmtvbGlicmk6cHJvY2VzcywxLDIsM10nKS5cbiAgICpcbiAgICogVGhlIGV4YW1wbGUgd2lsbCBvbmx5IHJldHVybiB0YWdzIHdpdGggdGhlIG5hbWUgJ3RlbmtvbGlicmk6cHJvY2VzcydcbiAgICogYW5kIHZhbHVlcyBvZiBlaXRoZXIgMSwgMiBvciAzLiBBbGwgb3RoZXIgdGFncyB3aWxsIGJlIGlnbm9yZWQuXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlIHRvIGdldCB0aGUgdmlzaWJsZSB0YWdzIGZvclxuICAgKiBAcmV0dXJucyBvYmplY3Qgd2hlcmUgdGhlIHByb3BlcnR5IG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHRhZyBhbmQgaXRzIHZhbHVlIGFyZSB0aGUgdmlzaWJsZSB2YWx1ZXNcbiAgICogZm9yIHRoYXQgdGFnIChpZiB2YWx1ZXMgaXMgZW1vdHkgYWxsIHZhbHVlcyBhcmUgYWxsb3dlZClcbiAgICovXG4gIGdldFZpc2libGVUYWdzKG9iamVjdFR5cGVJZDogc3RyaW5nKTogeyBbdGFnTmFtZTogc3RyaW5nXTogYW55W10gfSB7XG4gICAgcmV0dXJuIHRoaXMuI3Zpc2libGVUYWdzQ2FjaGVbb2JqZWN0VHlwZUlkXSB8fCB0aGlzLmZldGNoVmlzaWJsZVRhZ3Mob2JqZWN0VHlwZUlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hWaXNpYmxlVGFncyhvYmplY3RUeXBlSWQ6IHN0cmluZyk6IHsgW3RhZ05hbWU6IHN0cmluZ106IGFueVtdIH0ge1xuICAgIGNvbnN0IG90ID0gdGhpcy5nZXRPYmplY3RUeXBlKG9iamVjdFR5cGVJZCkgfHwgdGhpcy5nZXRTZWNvbmRhcnlPYmplY3RUeXBlKG9iamVjdFR5cGVJZCk7XG4gICAgY29uc3QgdGFnQ2xhc3NpZmljYXRpb25zID0gdGhpcy5nZXRSZXNvbHZlZENsYXNzaWZpY2F0aW9ucyhvYmplY3RUeXBlSWQpLmZpbHRlcigodCkgPT4gdC5zdGFydHNXaXRoKCd0YWdbJykpO1xuICAgIGNvbnN0IHBhcmVudFR5cGUgPSBvdCAmJiAob3QgYXMgT2JqZWN0VHlwZSkuaWQ7XG5cbiAgICBjb25zdCB0bzogeyBbdGFnTmFtZTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xuICAgICh0YWdDbGFzc2lmaWNhdGlvbnMgfHwgW10pLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgY29uc3QgbSA9IHRhZy5tYXRjaCgvXFxbKC4qKVxcXS9pKSFbMV0uc3BsaXQoJywnKTtcbiAgICAgIGNvbnN0IHRhZ05hbWUgPSBtLnNwbGljZSgwLCAxKVswXTtcbiAgICAgIGNvbnN0IHRhZ1ZhbHVlcyA9IG0ubWFwKCh2KSA9PiBwYXJzZUludCh2LnRyaW0oKSkpO1xuICAgICAgdG9bdGFnTmFtZV0gPSB0YWdWYWx1ZXM7XG4gICAgfSk7XG5cbiAgICB0aGlzLiN2aXNpYmxlVGFnc0NhY2hlW29iamVjdFR5cGVJZF0gPSBwYXJlbnRUeXBlID8geyAuLi50aGlzLmdldFZpc2libGVUYWdzKHBhcmVudFR5cGUpLCAuLi50byB9IDogdG87XG4gICAgcmV0dXJuIHRoaXMuI3Zpc2libGVUYWdzQ2FjaGVbb2JqZWN0VHlwZUlkXTtcbiAgfVxuXG4gIGZpbHRlclZpc2libGVUYWdzKG9iamVjdFR5cGVJZDogc3RyaW5nLCB0YWdzVmFsdWU6IEFycmF5PEFycmF5PGFueT4+KTogQXJyYXk8QXJyYXk8YW55Pj4ge1xuICAgIGlmICghdGFnc1ZhbHVlKSByZXR1cm4gW107XG4gICAgY29uc3QgdlRhZ3M6IHsgW3RhZ05hbWU6IHN0cmluZ106IGFueVtdIH0gPSB0aGlzLmdldFZpc2libGVUYWdzKG9iamVjdFR5cGVJZCk7XG4gICAgLy8gVGFnIHZhbHVlIGxvb2tzIGxpa2UgdGhpczogW3RhZ05hbWU6IHN0cmluZywgc3RhdGU6IG51bWJlciwgZGF0ZTogRGF0ZSwgdHJhY2VJZDogc3RyaW5nXVxuICAgIHJldHVybiB0YWdzVmFsdWUuZmlsdGVyKCh2OiBhbnlbXSkgPT4gISF2VGFnc1t2WzBdXSAmJiB2VGFnc1t2WzBdXS5pbmNsdWRlcyh2WzFdKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpY29uIGZvciBhbiBvYmplY3QgdHlwZS4gVGhpcyB3aWxsIHJldHVybiBhbiBTVkcgYXMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBmYWxsYmFjayBJRCBvZiBhIGZhbGxiYWNrIGljb24gdGhhdCBzaG91bGQgYmUgdXNlZCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IHR5cGUgaGFzIG5vIGljb24geWV0XG4gICAqL1xuICBnZXRPYmplY3RUeXBlSWNvbihvYmplY3RUeXBlSWQ6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLiNpY29uQ2FjaGVbb2JqZWN0VHlwZUlkXSAmJiB0aGlzLiNpY29uQ2FjaGVbb2JqZWN0VHlwZUlkXS5pY29uKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0uaWNvbiEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpY29uVXJpID0gdGhpcy5nZXRPYmplY3RUeXBlSWNvblVyaShvYmplY3RUeXBlSWQsIGZhbGxiYWNrKTtcbiAgICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLmdldChpY29uVXJpKS5waXBlKHRhcCgoaWNvbikgPT4gKHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdID0geyB1cmk6IGljb25VcmksIGljb24gfSkpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBVUkkgb2YgYW4gb2JqZWN0IHR5cGUgaWNvbi5cbiAgICogQHBhcmFtIG9iamVjdFR5cGVJZCBJRCBvZiB0aGUgb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIGZhbGxiYWNrIElEIG9mIGEgZmFsbGJhY2sgaWNvbiB0aGF0IHNob3VsZCBiZSB1c2VkIGlmIHRoZSBnaXZlbiBvYmplY3QgdHlwZSBoYXMgbm8gaWNvbiB5ZXRcbiAgICovXG4gIGdldE9iamVjdFR5cGVJY29uVXJpKG9iamVjdFR5cGVJZDogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdKSB7XG4gICAgICByZXR1cm4gdGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0udXJpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaSA9IHRoaXMuI2dldEljb25Gcm9tQ2xhc3NpZmljYXRpb24ob2JqZWN0VHlwZUlkKTtcbiAgICAgIGNvbnN0IGZiID0gdGhpcy5nZXRGYWxsYmFja0ljb24ob2JqZWN0VHlwZUlkLCBmYWxsYmFjayk7XG4gICAgICBjb25zdCB1cmkgPSBgL3Jlc291cmNlcy9pY29ucy8ke2VuY29kZVVSSUNvbXBvbmVudChjaSB8fCBvYmplY3RUeXBlSWQpfSR7ZmIgPyBgP2ZhbGxiYWNrPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZiKX1gIDogJyd9YDtcbiAgICAgIHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdID0geyB1cmk6IGAke3RoaXMuI2JhY2tlbmQuZ2V0QXBpQmFzZShBcGlCYXNlLmFwaVdlYil9JHt1cml9YCB9O1xuICAgICAgcmV0dXJuIHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdLnVyaTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZhbGxiYWNrSWNvbihvYmplY3RUeXBlSWQ6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG90ID0gdGhpcy5nZXRPYmplY3RUeXBlKG9iamVjdFR5cGVJZCk7XG4gICAgaWYgKG90ICYmICFmYWxsYmFjaykge1xuICAgICAgLy8gYWRkIGRlZmF1bHQgZmFsbGJhY2tzIGZvciBzeXN0ZW06ZG9jdW1lbnQgYW5kIHN5c3RlbTpmb2xkZXIgaWYgbm93IG90aGVyIGZhbGxiYWNrIGhhcyBiZWVuIHByb3ZpZGVkXG4gICAgICBmYWxsYmFjayA9IG90LmlzRm9sZGVyID8gJ3N5c3RlbTpmb2xkZXInIDogJ3N5c3RlbTpkb2N1bWVudCc7XG4gICAgICAvLyBpZiAodGhpcy5pc0Zsb2F0aW5nT2JqZWN0VHlwZShvdCkpIHtcbiAgICAgIC8vICAgLy8gdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBubyBvYmplY3QgdHlwZSBhc3NpZ25lZCB0byB0aGVtIChwcmltYXJ5IEZTT1RzKVxuICAgICAgLy8gICBmYWxsYmFjayA9ICdzeXN0ZW06ZGxtJztcbiAgICAgIC8vIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrITtcbiAgfVxuXG4gICNnZXRJY29uRnJvbUNsYXNzaWZpY2F0aW9uKG9iamVjdFR5cGVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2U6IE1hcDxzdHJpbmcsIENsYXNzaWZpY2F0aW9uRW50cnk+ID0gdGhpcy5nZXRDbGFzc2lmaWNhdGlvbnModGhpcy5nZXRSZXNvbHZlZENsYXNzaWZpY2F0aW9ucyhvYmplY3RUeXBlSWQpKTtcbiAgICByZXR1cm4gY2UuaGFzKE9iamVjdFR5cGVDbGFzc2lmaWNhdGlvbi5PQkpFQ1RfVFlQRV9JQ09OKSA/IGNlLmdldChPYmplY3RUeXBlQ2xhc3NpZmljYXRpb24uT0JKRUNUX1RZUEVfSUNPTikhLm9wdGlvbnNbMF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0TG9jYWxpemVkUmVzb3VyY2Uoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbSEuaTE4bltrZXldO1xuICB9XG5cbiAgZ2V0TG9jYWxpemVkTGFiZWwoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldExvY2FsaXplZFJlc291cmNlKGAke2lkfV9sYWJlbGApO1xuICB9XG5cbiAgZ2V0TG9jYWxpemVkRGVzY3JpcHRpb24oaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldExvY2FsaXplZFJlc291cmNlKGAke2lkfV9kZXNjcmlwdGlvbmApO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gb2JqZWN0IHR5cGUgZmllbGQgaXMgYSBzeXN0ZW0gZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIE9iamVjdCB0eXBlIGZpZWxkIHRvIGJlIGNoZWNrZWRcbiAgICovXG4gIGlzU3lzdGVtUHJvcGVydHkoZmllbGQ6IE9iamVjdFR5cGVGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5pZC5zdGFydHNXaXRoKCdzeXN0ZW06Jyk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYmFja2VuZHMgc3lzdGVtIGRlZmluaXRpb24gYW5kIHVwZGF0ZXMgc3lzdGVtJCBPYnNlcnZhYmxlLlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIHN5c3RlbSQgb2JzZXJ2YWJsZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHlvdSdsbCB0cmlnZ2VyIGZldGNoaW5nIHRoZVxuICAgKiBzeXN0ZW0gZGVmaW5pdGlvbiBldmVyeSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0byBsb2FkIHRoZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3JcbiAgICovXG4gIGdldFN5c3RlbURlZmluaXRpb24oYXV0aERhdGE/OiBBdXRoRGF0YSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIC8vIFRPRE86IFN1cHBvc2VkIHRvIHJldHVybiAzMDQgaWYgbm90aGluZyBjaGFuZ2VzXG4gICAgcmV0dXJuIHRoaXMuI2ZldGNoU3lzdGVtRGVmaW5pdGlvbihhdXRoRGF0YSk7XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgd2hlbiAzMDQgaXMgdGhlcmU/Pz9cbiAgICAvLyAvLyB0cnkgdG8gZmV0Y2ggc3lzdGVtIGRlZmluaXRpb24gZnJvbSBjYWNoZSBmaXJzdFxuICAgIC8vIHJldHVybiB0aGlzLmFwcENhY2hlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSkucGlwZShcbiAgICAvLyAgIHN3aXRjaE1hcChyZXMgPT4ge1xuICAgIC8vICAgICBpZiAocmVzKSB7XG4gICAgLy8gICAgICAgLy8gY2hlY2sgaWYgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gdGhlIGNhY2hlIGlzIHVwIHRvIGRhdGVcbiAgICAvLyAgICAgICB0aGlzLnN5c3RlbSA9IHJlcztcbiAgICAvLyAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5uZXh0KHRoaXMuc3lzdGVtKTtcbiAgICAvLyAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgLy8gbm90aGluZyBjYWNoZWQgc28gZmFyXG4gICAgLy8gICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pXG4gICAgLy8gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxseSBmZXRjaCB0aGUgc3lzdGVtIGRlZmluaXRpb24gZnJvbSB0aGUgYmFja2VuZC5cbiAgICogQHBhcmFtIHVzZXIgVXNlciB0byBmZXRjaCBkZWZpbml0aW9uIGZvclxuICAgKi9cbiAgI2ZldGNoU3lzdGVtRGVmaW5pdGlvbihhdXRoRGF0YT86IEF1dGhEYXRhKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhdXRoRGF0YSA/IG9mKGF1dGhEYXRhKSA6IHRoaXMuI2FwcENhY2hlLmdldEl0ZW0odGhpcy4jU1RPUkFHRV9LRVlfQVVUSF9EQVRBKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGF0YTogQXV0aERhdGEpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVBdXRoRGF0YShkYXRhKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgY29uc3QgZmV0Y2hUYXNrcyA9IFt0aGlzLiNiYWNrZW5kLmdldCgnL2Rtcy9zY2hlbWEvbmF0aXZlLmpzb24nLCBBcGlCYXNlLmNvcmUpLCB0aGlzLiNmZXRjaExvY2FsaXphdGlvbnMoKV07XG4gICAgICAgIHJldHVybiBmb3JrSm9pbihmZXRjaFRhc2tzKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy4jbG9nZ2VyLmVycm9yKCdFcnJvciBmZXRjaGluZyByZWNlbnQgdmVyc2lvbiBvZiBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIHNlcnZlci4nLCBlcnJvcik7XG4gICAgICAgIHRoaXMuI3N5c3RlbVNvdXJjZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gZnJvbSBzZXJ2ZXIuJyk7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNldFNjaGVtYShkYXRhWzBdLCBkYXRhWzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISFkYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0UGVybWlzc2lvbnMocDogT2JqZWN0VHlwZVBlcm1pc3Npb25zKSB7XG4gICAgdGhpcy4jcGVybWlzc2lvbnMgPSBwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgc2NoZW1hIGZyb20gdGhlIHNlcnZlcnMgc2NoZW1hIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBzY2hlbWFSZXNwb25zZSBSZXNwb25zZSBmcm9tIHRoZSBiYWNrZW5kXG4gICAqL1xuICBzZXRTY2hlbWEoc2NoZW1hUmVzcG9uc2U6IFNjaGVtYVJlc3BvbnNlLCBsb2NhbGl6ZWRSZXNvdXJjZTogTG9jYWxpemF0aW9uID0ge30pIHtcbiAgICAvLyBwcmVwYXJlIGEgcXVpY2sgYWNjZXNzIG9iamVjdCBmb3IgdGhlIGZpZWxkc1xuICAgIGNvbnN0IHByb3BlcnRpZXNRQTogUmVjb3JkPHN0cmluZywgU2NoZW1hUmVzcG9uc2VGaWVsZERlZmluaXRpb24+ID0ge307XG4gICAgY29uc3Qgb3JnVHlwZUZpZWxkcyA9IFtCYXNlT2JqZWN0VHlwZUZpZWxkLk1PRElGSUVEX0JZLCBCYXNlT2JqZWN0VHlwZUZpZWxkLkNSRUFURURfQlldO1xuICAgIHNjaGVtYVJlc3BvbnNlLnByb3BlcnR5RGVmaW5pdGlvbi5mb3JFYWNoKChwOiBhbnkpID0+IHtcbiAgICAgIHAuY2xhc3NpZmljYXRpb25zID0gcC5jbGFzc2lmaWNhdGlvbjtcbiAgICAgIC8vIFRPRE86IFJlbW92ZSBvbmNlIHNjaGVtYSBzdXBwb3J0cyBvcmdhbml6YXRpb24gY2xhc3NpZmljYXRpb24gZm9yIGJhc2UgcGFyYW1zXG4gICAgICAvLyBtYXAgY2VydGFpbiBmaWVsZHMgdG8gb3JnYW5pemF0aW9uIHR5cGUgKGZha2UgaXQgdW50aWwgeW91IG1ha2UgaXQgOy0pXG4gICAgICBpZiAob3JnVHlwZUZpZWxkcy5pbmNsdWRlcyhwLmlkKSkge1xuICAgICAgICBwLmNsYXNzaWZpY2F0aW9ucyA9IFtDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OXTtcbiAgICAgIH1cbiAgICAgIHByb3BlcnRpZXNRQVtwLmlkXSA9IHA7XG4gICAgfSk7XG4gICAgLy8gcHJlcGFyZSBhIHF1aWNrIGFjY2VzcyBvYmplY3QgZm9yIG9iamVjdCB0eXBlcyAoaW5jbHVkaW5nIHNlY29uZGFyeSBvYmplY3RzKVxuICAgIGNvbnN0IG9iamVjdFR5cGVzUUE6IHsgW2lkOiBzdHJpbmddOiBTY2hlbWFSZXNwb25zZVR5cGVEZWZpbml0aW9uIH0gPSB7fTtcbiAgICBzY2hlbWFSZXNwb25zZS50eXBlRm9sZGVyRGVmaW5pdGlvbi5mb3JFYWNoKChvdDogYW55KSA9PiB7XG4gICAgICBvYmplY3RUeXBlc1FBW290LmlkXSA9IG90O1xuICAgIH0pO1xuICAgIHNjaGVtYVJlc3BvbnNlLnR5cGVEb2N1bWVudERlZmluaXRpb24uZm9yRWFjaCgob3Q6IGFueSkgPT4ge1xuICAgICAgb2JqZWN0VHlwZXNRQVtvdC5pZF0gPSBvdDtcbiAgICB9KTtcbiAgICBzY2hlbWFSZXNwb25zZS50eXBlU2Vjb25kYXJ5RGVmaW5pdGlvbi5mb3JFYWNoKChzb3Q6IGFueSkgPT4ge1xuICAgICAgb2JqZWN0VHlwZXNRQVtzb3QuaWRdID0gc290O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb2JqZWN0VHlwZXM6IE9iamVjdFR5cGVbXSA9IFtcbiAgICAgIC8vIGZvbGRlciB0eXBlc1xuICAgICAgLi4uc2NoZW1hUmVzcG9uc2UudHlwZUZvbGRlckRlZmluaXRpb24ubWFwKChmZCkgPT4gKHtcbiAgICAgICAgaWQ6IGZkLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogZmQuZGVzY3JpcHRpb24sXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uOiBmZC5jbGFzc2lmaWNhdGlvbixcbiAgICAgICAgYmFzZUlkOiBmZC5iYXNlSWQsXG4gICAgICAgIGNyZWF0YWJsZTogdGhpcy4jaXNDcmVhdGFibGUoZmQuaWQpLFxuICAgICAgICBjb250ZW50U3RyZWFtQWxsb3dlZDogQ29udGVudFN0cmVhbUFsbG93ZWQuTk9UX0FMTE9XRUQsXG4gICAgICAgIGlzRm9sZGVyOiB0cnVlLFxuICAgICAgICBzZWNvbmRhcnlPYmplY3RUeXBlczogZmQuc2Vjb25kYXJ5T2JqZWN0VHlwZUlkID8gZmQuc2Vjb25kYXJ5T2JqZWN0VHlwZUlkLm1hcCgodCkgPT4gKHsgaWQ6IHQudmFsdWUsIHN0YXRpYzogdC5zdGF0aWMgfSkpIDogW10sXG4gICAgICAgIGZpZWxkczogdGhpcy4jcmVzb2x2ZU9iamVjdFR5cGVGaWVsZHMoZmQsIHByb3BlcnRpZXNRQSwgb2JqZWN0VHlwZXNRQSlcbiAgICAgICAgLy8gcmF3RmllbGRzOiB0aGlzLnJlc29sdmVPYmplY3RUeXBlRmllbGRzKGZkLCBwcm9wZXJ0aWVzUUEsIG9iamVjdFR5cGVzUUEsIHRydWUpLFxuICAgICAgfSkpLFxuICAgICAgLy8gZG9jdW1lbnQgdHlwZXNcbiAgICAgIC4uLnNjaGVtYVJlc3BvbnNlLnR5cGVEb2N1bWVudERlZmluaXRpb24ubWFwKChkZCkgPT4gKHtcbiAgICAgICAgaWQ6IGRkLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGQuZGVzY3JpcHRpb24sXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uOiBkZC5jbGFzc2lmaWNhdGlvbixcbiAgICAgICAgYmFzZUlkOiBkZC5iYXNlSWQsXG4gICAgICAgIGNyZWF0YWJsZTogdGhpcy4jaXNDcmVhdGFibGUoZGQuaWQpLFxuICAgICAgICBjb250ZW50U3RyZWFtQWxsb3dlZDogZGQuY29udGVudFN0cmVhbUFsbG93ZWQsXG4gICAgICAgIGlzRm9sZGVyOiBmYWxzZSxcbiAgICAgICAgc2Vjb25kYXJ5T2JqZWN0VHlwZXM6IGRkLnNlY29uZGFyeU9iamVjdFR5cGVJZCA/IGRkLnNlY29uZGFyeU9iamVjdFR5cGVJZC5tYXAoKHQpID0+ICh7IGlkOiB0LnZhbHVlLCBzdGF0aWM6IHQuc3RhdGljIH0pKSA6IFtdLFxuICAgICAgICBmaWVsZHM6IHRoaXMuI3Jlc29sdmVPYmplY3RUeXBlRmllbGRzKGRkLCBwcm9wZXJ0aWVzUUEsIG9iamVjdFR5cGVzUUEpXG4gICAgICAgIC8vIHJhd0ZpZWxkczogdGhpcy5yZXNvbHZlT2JqZWN0VHlwZUZpZWxkcyhkZCwgcHJvcGVydGllc1FBLCBvYmplY3RUeXBlc1FBLCB0cnVlKSxcbiAgICAgIH0pKVxuICAgIF07XG5cbiAgICBjb25zdCBzZWNvbmRhcnlPYmplY3RUeXBlczogU2Vjb25kYXJ5T2JqZWN0VHlwZVtdID0gc2NoZW1hUmVzcG9uc2UudHlwZVNlY29uZGFyeURlZmluaXRpb24ubWFwKChzdGQpID0+ICh7XG4gICAgICBpZDogc3RkLmlkLFxuICAgICAgZGVzY3JpcHRpb246IHN0ZC5kZXNjcmlwdGlvbixcbiAgICAgIGNsYXNzaWZpY2F0aW9uOiBzdGQuY2xhc3NpZmljYXRpb24sXG4gICAgICBjb250ZW50U3RyZWFtQWxsb3dlZDogc3RkLmNvbnRlbnRTdHJlYW1BbGxvd2VkLFxuICAgICAgYmFzZUlkOiBzdGQuYmFzZUlkLFxuICAgICAgLy8gVE9ETzogQ291bGQgYSBTT1QgYmUgYSBmb2xkZXIgdG9vP1xuICAgICAgaXNGb2xkZXI6IGZhbHNlLFxuICAgICAgZmllbGRzOiB0aGlzLiNyZXNvbHZlT2JqZWN0VHlwZUZpZWxkcyhzdGQsIHByb3BlcnRpZXNRQSwgb2JqZWN0VHlwZXNRQSlcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN5c3RlbSA9IHtcbiAgICAgIHZlcnNpb246IHNjaGVtYVJlc3BvbnNlLnZlcnNpb24sXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogc2NoZW1hUmVzcG9uc2UubGFzdE1vZGlmaWNhdGlvbkRhdGUsXG4gICAgICBvYmplY3RUeXBlcyxcbiAgICAgIHNlY29uZGFyeU9iamVjdFR5cGVzLFxuICAgICAgaTE4bjogbG9jYWxpemVkUmVzb3VyY2UsXG4gICAgICBhbGxGaWVsZHM6IHByb3BlcnRpZXNRQVxuICAgIH07XG4gICAgdGhpcy4jYXBwQ2FjaGUuc2V0SXRlbSh0aGlzLiNTVE9SQUdFX0tFWSwgdGhpcy5zeXN0ZW0pLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuI3N5c3RlbVNvdXJjZS5uZXh0KHRoaXMuc3lzdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGFsbCB0aGUgZmllbGRzIGZvciBhbiBvYmplY3QgdHlwZS4gVGhpcyBhbHNvIGluY2x1ZGVzIHNlY29uZGFyeSBvYmplY3QgdHlwZXMgYW5kIHRoZSBmaWVsZHMgaW5oZXJpdGVkIGZyb21cbiAgICogdGhlIGJhc2UgdHlwZSAoLi4uIGFuZCBvZiBjb3Vyc2UgdGhlIGJhc2UgdHlwZSAoYW5kIGl0cyBzZWNvbmRhcnkgb2JqZWN0IHR5cGVzKSBvZiB0aGUgYmFzZSB0eXBlIGFuZCBzbyBvbilcbiAgICogQHBhcmFtIHNjaGVtYVR5cGVEZWZpbml0aW9uIG9iamVjdCB0eXBlIGRlZmluaXRpb24gZnJvbSB0aGUgbmF0aXZlIHNjaGVtYVxuICAgKiBAcGFyYW0gcHJvcGVydGllc1FBIFF1aWNrIGFjY2VzcyBvYmplY3Qgb2YgYWxsIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIG9iamVjdFR5cGVzUUEgUXVpY2sgYWNjZXNzIG9iamVjdCBvZiBhbGwgb2JqZWN0IHR5cGVzXG4gICAqIEBwYXJhbSByYXcgSWYgc2V0IHRvICd0cnVlJyBvbmx5IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3QgdHlwZSBpdHNlbGYgd2lsbCBiZSByZXR1cm5lZCAod2l0aG91dCBTT1RzKVxuICAgKi9cbiAgI3Jlc29sdmVPYmplY3RUeXBlRmllbGRzKFxuICAgIHNjaGVtYVR5cGVEZWZpbml0aW9uOiBTY2hlbWFSZXNwb25zZVR5cGVEZWZpbml0aW9uLFxuICAgIHByb3BlcnRpZXNRQTogeyBbaWQ6IHN0cmluZ106IFNjaGVtYVJlc3BvbnNlRmllbGREZWZpbml0aW9uIH0sXG4gICAgb2JqZWN0VHlwZXNRQTogeyBbaWQ6IHN0cmluZ106IFNjaGVtYVJlc3BvbnNlVHlwZURlZmluaXRpb24gfVxuICApOiBPYmplY3RUeXBlRmllbGRbXSB7XG4gICAgY29uc3Qgb2JqZWN0VHlwZUZpZWxkSURzID0gc2NoZW1hVHlwZURlZmluaXRpb24ucHJvcGVydHlSZWZlcmVuY2UubWFwKChwcikgPT4gcHIudmFsdWUpO1xuICAgIGlmIChzY2hlbWFUeXBlRGVmaW5pdGlvbi5zZWNvbmRhcnlPYmplY3RUeXBlSWQpIHtcbiAgICAgIHNjaGVtYVR5cGVEZWZpbml0aW9uLnNlY29uZGFyeU9iamVjdFR5cGVJZFxuICAgICAgICAuZmlsdGVyKChzb3QpID0+IHNvdC5zdGF0aWMpXG4gICAgICAgIC5tYXAoKHNvdCkgPT4gc290LnZhbHVlKVxuICAgICAgICAuZm9yRWFjaCgoc290SUQpID0+IG9iamVjdFR5cGVzUUFbc290SURdLnByb3BlcnR5UmVmZXJlbmNlLmZvckVhY2goKHByOiB7IHZhbHVlOiBzdHJpbmcgfSkgPT4gb2JqZWN0VHlwZUZpZWxkSURzLnB1c2gocHIudmFsdWUpKSk7XG4gICAgfVxuXG4gICAgbGV0IGZpZWxkczogT2JqZWN0VHlwZUZpZWxkW10gPSBvYmplY3RUeXBlRmllbGRJRHMubWFwKChpZCkgPT4gKHtcbiAgICAgIC4uLnByb3BlcnRpZXNRQVtpZF0sXG4gICAgICBfaW50ZXJuYWxUeXBlOiB0aGlzLmdldEludGVybmFsRm9ybUVsZW1lbnRUeXBlKHByb3BlcnRpZXNRQVtpZF0ucHJvcGVydHlUeXBlLCBwcm9wZXJ0aWVzUUFbaWRdLmNsYXNzaWZpY2F0aW9ucylcbiAgICB9KSk7XG5cbiAgICAvLyBhbHNvIHJlc29sdmUgcHJvcGVydGllcyBvZiB0aGUgYmFzZSB0eXBlXG4gICAgaWYgKHNjaGVtYVR5cGVEZWZpbml0aW9uLmJhc2VJZCAhPT0gc2NoZW1hVHlwZURlZmluaXRpb24uaWQgJiYgISFvYmplY3RUeXBlc1FBW3NjaGVtYVR5cGVEZWZpbml0aW9uLmJhc2VJZF0pIHtcbiAgICAgIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQodGhpcy4jcmVzb2x2ZU9iamVjdFR5cGVGaWVsZHMob2JqZWN0VHlwZXNRQVtzY2hlbWFUeXBlRGVmaW5pdGlvbi5iYXNlSWRdLCBwcm9wZXJ0aWVzUUEsIG9iamVjdFR5cGVzUUEpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gICNpc0NyZWF0YWJsZShvYmplY3RUeXBlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiAhW1N5c3RlbVR5cGUuRk9MREVSLCBTeXN0ZW1UeXBlLkRPQ1VNRU5UXS5pbmNsdWRlcyhvYmplY3RUeXBlSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGEgY29sbGVjdGlvbiBvZiBmb3JtIG1vZGVscy5cbiAgICogQHBhcmFtIG9iamVjdFR5cGVJRHMgT2JqZWN0IHR5cGUgSURzIHRvIGZldGNoIGZvcm0gbW9kZWwgZm9yXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gRm9ybSBzaXR1YXRpb25cbiAgICogQHJldHVybnMgT2JqZWN0IHdoZXJlIHRoZSBvYmplY3QgdHlwZSBpZCBpcyBrZXkgYW5kIHRoZSBmb3JtIG1vZGVsIGlzIHRoZSB2YWx1ZVxuICAgKi9cbiAgZ2V0T2JqZWN0VHlwZUZvcm1zKG9iamVjdFR5cGVJRHM6IHN0cmluZ1tdLCBzaXR1YXRpb246IHN0cmluZyk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIG9iamVjdFR5cGVJRHMubWFwKChvKSA9PlxuICAgICAgICB0aGlzLmdldE9iamVjdFR5cGVGb3JtKG8sIHNpdHVhdGlvbikucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiBvZihudWxsKSksXG4gICAgICAgICAgbWFwKChyZXMpID0+ICh7XG4gICAgICAgICAgICBpZDogbyxcbiAgICAgICAgICAgIGZvcm1Nb2RlbDogcmVzXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICBjb25zdCByZXNNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgICAgcmVzLmZpbHRlcigocikgPT4gdGhpcy4jZm9ybUhhc0VsZW1lbnRzKHIuZm9ybU1vZGVsKSkuZm9yRWFjaCgocjogYW55KSA9PiAocmVzTWFwW3IuaWRdID0gci5mb3JtTW9kZWwpKTtcbiAgICAgICAgcmV0dXJuIHJlc01hcDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZvcm0gbW9kZWwgb2YgYW4gb2JqZWN0IHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlIHRvIGZldGNoIHRoZSBmb3JtIGZvclxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIFRoZSBmb3JtIHNpdHVhdGlvbiB0byBiZSBmZXRjaGVkXG4gICAqIEByZXR1cm5zIEZvcm0gbW9kZWxcbiAgICovXG4gIGdldE9iamVjdFR5cGVGb3JtKG9iamVjdFR5cGVJZDogc3RyaW5nLCBzaXR1YXRpb246IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KFV0aWxzLmJ1aWxkVXJpKGAvZG1zL2Zvcm1zLyR7b2JqZWN0VHlwZUlkfWAsIHsgc2l0dWF0aW9uIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIG9yIG5vdCB0aGUgbW9kZWwgaGFzIGF0IGxlYXN0IG9uZSBmb3JtIGVsZW1lbnQuIFJlY3Vyc2l2ZS5cbiAgICogQHBhcmFtIGVsZW1lbnQgRm9ybSBlbGVtZW50IHRvIGNoZWNrIGNoaWxkIGVsZW1lbnRzIGZvclxuICAgKi9cbiAgI2Zvcm1IYXNFbGVtZW50cyhlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzRWxlbWVudCA9IGZhbHNlO1xuICAgIGVsZW1lbnQuZWxlbWVudHM/LmZvckVhY2goKGU6IGFueSkgPT4ge1xuICAgICAgaWYgKCFbJ28ybUdyb3VwJywgJ28ybUdyb3VwU3RhY2snXS5pbmNsdWRlcyhlLnR5cGUpKSB7XG4gICAgICAgIGhhc0VsZW1lbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghaGFzRWxlbWVudCkge1xuICAgICAgICBoYXNFbGVtZW50ID0gdGhpcy4jZm9ybUhhc0VsZW1lbnRzKGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoYXNFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiBpbnRlcm5hbCB0eXBlIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlIGZpZWxkLlxuICAgKiBBZGRpbmcgdGhpcyB0byBhIGZvcm0gZWxlbWVudCBvciBvYmplY3QgdHlwZSBmaWVsZCBlbmFibGVzIHVzIHRvIHJlbmRlciBmb3Jtc1xuICAgKiBiYXNlZCBvbiBvYmplY3QgdHlwZSBmaWVsZHMgaW4gYSBtb3JlIHBlcmZvcm1hbnQgd2F5LiBPdGhlcndpc2Ugd2Ugd291bGRcbiAgICogaGF2ZSB0byBldmFsdWF0ZSB0aGUgY29uZGl0aW9ucyBmb3IgZXZlcnkgZm9ybSBlbGVtZW50IG9uIGV2ZXJ5IGRpZ2VzdCBjeWNsZS5cbiAgICogQHBhcmFtIHR5cGUgcHJvcGVydHlUeXBlIG9mIHRoZSBPYmplY3RUeXBlRmllbGRcbiAgICogQHBhcmFtIGNsYXNzaWZpY2F0aW9ucyBjbGFzc2lmaWNhdGlvbnMgb2YgdGhlIE9iamVjdFR5cGVGaWVsZFxuICAgKi9cbiAgZ2V0SW50ZXJuYWxGb3JtRWxlbWVudFR5cGUodHlwZTogc3RyaW5nLCBjbGFzc2lmaWNhdGlvbnM/OiBzdHJpbmdbXSk6IE9iamVjdFR5cGVGaWVsZEludGVybmFsVHlwZSB7XG4gICAgY29uc3QgX2NsYXNzaWZpY2F0aW9ucyA9IHRoaXMuZ2V0Q2xhc3NpZmljYXRpb25zKGNsYXNzaWZpY2F0aW9ucyB8fCBbXSk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgX2NsYXNzaWZpY2F0aW9ucy5oYXMoQ2xhc3NpZmljYXRpb24uU1RSSU5HX1JFRkVSRU5DRSkpIHtcbiAgICAgIHJldHVybiBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfUkVGRVJFTkNFO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgX2NsYXNzaWZpY2F0aW9ucy5oYXMoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTikpIHtcbiAgICAgIHJldHVybiBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfT1JHQU5JWkFUSU9OO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgX2NsYXNzaWZpY2F0aW9ucy5oYXMoQ2xhc3NpZmljYXRpb24uU1RSSU5HX09SR0FOSVpBVElPTl9TRVQpKSB7XG4gICAgICByZXR1cm4gSW50ZXJuYWxGaWVsZFR5cGUuU1RSSU5HX09SR0FOSVpBVElPTl9TRVQ7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfQ0FUQUxPRykpIHtcbiAgICAgIHJldHVybiBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfQ0FUQUxPRztcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sZWFuJyAmJiBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5CT09MRUFOX1NXSVRDSCkpIHtcbiAgICAgIHJldHVybiBJbnRlcm5hbEZpZWxkVHlwZS5CT09MRUFOX1NXSVRDSDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdHlwZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgIChfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfQ0FUQUxPR19EWU5BTUlDKSB8fCBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfQ0FUQUxPR19DVVNUT00pKVxuICAgICkge1xuICAgICAgcmV0dXJuIEludGVybmFsRmllbGRUeXBlLlNUUklOR19EWU5BTUlDX0NBVEFMT0c7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtYXRjaGluZyBjb25kaXRpb25zIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCB0eXBlXG4gICAgICByZXR1cm4gdHlwZSBhcyBPYmplY3RUeXBlRmllbGRUeXBlO1xuICAgIH1cbiAgfVxuXG4gIGdldE9iamVjdFR5cGVGaWVsZChpZDogc3RyaW5nKTogT2JqZWN0VHlwZUZpZWxkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmID0gdGhpcy5zeXN0ZW0/LmFsbEZpZWxkc1tpZF07XG4gICAgcmV0dXJuIGYgPyB7IC4uLmYsIF9pbnRlcm5hbFR5cGU6IHRoaXMuZ2V0SW50ZXJuYWxGb3JtRWxlbWVudFR5cGUoZi5wcm9wZXJ0eVR5cGUsIGYuY2xhc3NpZmljYXRpb25zKSB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgY2xhc3NpZmljYXRpb25zIGZyb20gb2JqZWN0IHR5cGUgZmllbGRzIGNsYXNzaWZpY2F0aW9uXG4gICAqIHN0cmluZy4gVGhpcyBzdHJpbmcgbWF5IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBjbGFzc2lmaWNhdGlvbiBlbnRyeS5cbiAgICpcbiAgICogQ2xhc3NpZmljYXRpb24gaXMgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIHRoYXQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbFxuICAgKiBwcm9wZXJ0aWVzIHJlbGF0ZWQgdG8gb24gY2xhc3NpZmljYXRpb24gZW50cnkuIEV4YW1wbGU6XG4gICAqXG4gICAqIGBpZDpyZWZlcmVuY2Vbc3lzdGVtOmZvbGRlcl0sIGVtYWlsYFxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NpZmljYXRpb25zIE9iamVjdCB0eXBlIGZpZWxkcyBjbGFzc2lmaWNhdGlvbiBwcm9wZXJ0eSAoc2NoZW1hKVxuICAgKi9cbiAgZ2V0Q2xhc3NpZmljYXRpb25zKGNsYXNzaWZpY2F0aW9uczogc3RyaW5nW10pOiBNYXA8c3RyaW5nLCBDbGFzc2lmaWNhdGlvbkVudHJ5PiB7XG4gICAgY29uc3QgcmVzID0gbmV3IE1hcDxzdHJpbmcsIENsYXNzaWZpY2F0aW9uRW50cnk+KCk7XG4gICAgaWYgKGNsYXNzaWZpY2F0aW9ucykge1xuICAgICAgY2xhc3NpZmljYXRpb25zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlczogUmVnRXhwTWF0Y2hBcnJheSB8IG51bGwgPSBjLm1hdGNoKC9eKFteXFxbXSopKFxcWyguKilcXF0pPyQvKTtcbiAgICAgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXMuc2V0KG1hdGNoZXNbMV0sIHtcbiAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9uOiBtYXRjaGVzWzFdLFxuICAgICAgICAgICAgb3B0aW9uczogbWF0Y2hlc1szXSA/IG1hdGNoZXNbM10uc3BsaXQoJywnKS5tYXAoKG8pID0+IG8udHJpbSgpKSA6IFtdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdG9Gb3JtRWxlbWVudChmaWVsZDogT2JqZWN0VHlwZUZpZWxkKTogYW55IHtcbiAgICByZXR1cm4geyAuLi5maWVsZCwgbGFiZWw6IHRoaXMuZ2V0TG9jYWxpemVkTGFiZWwoZmllbGQuaWQpLCBuYW1lOiBmaWVsZC5pZCwgdHlwZTogZmllbGQucHJvcGVydHlUeXBlIH07XG4gIH1cblxuICB1cGRhdGVBdXRoRGF0YShkYXRhOiBQYXJ0aWFsPEF1dGhEYXRhPikge1xuICAgIHRoaXMuYXV0aERhdGEgPSB7IC4uLnRoaXMuYXV0aERhdGEhLCAuLi5kYXRhIH07XG4gICAgdGhpcy4jYmFja2VuZC5zZXRIZWFkZXIoJ0FjY2VwdC1MYW5ndWFnZScsIHRoaXMuYXV0aERhdGEubGFuZ3VhZ2UpO1xuICAgIHJldHVybiB0aGlzLiNhcHBDYWNoZS5zZXRJdGVtKHRoaXMuI1NUT1JBR0VfS0VZX0FVVEhfREFUQSwgdGhpcy5hdXRoRGF0YSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbGl6YXRpb25zKGlzbzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVBdXRoRGF0YSh7IGxhbmd1YWdlOiBpc28gfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLiNmZXRjaExvY2FsaXphdGlvbnMoKSksXG4gICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnN5c3RlbSEuaTE4biA9IHJlcztcbiAgICAgICAgdGhpcy4jYXBwQ2FjaGUuc2V0SXRlbSh0aGlzLiNTVE9SQUdFX0tFWSwgdGhpcy5zeXN0ZW0pLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLiNzeXN0ZW1Tb3VyY2UubmV4dCh0aGlzLnN5c3RlbSEpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgI2ZldGNoTG9jYWxpemF0aW9ucygpOiBPYnNlcnZhYmxlPExvY2FsaXphdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kLmdldCgnL3Jlc291cmNlcy90ZXh0Jyk7XG4gIH1cblxuICBmZXRjaFJlc291cmNlcyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IGdsb2JhbDogYW55OyB0ZW5hbnQ6IGFueSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmRcbiAgICAgIC5iYXRjaChbXG4gICAgICAgIHsgdXJpOiBgL3N5c3RlbS9yZXNvdXJjZXMvJHtpZH1gLCBiYXNlOiBBcGlCYXNlLmNvcmUgfSxcbiAgICAgICAgeyB1cmk6IGAvYWRtaW4vcmVzb3VyY2VzLyR7aWR9YCwgYmFzZTogQXBpQmFzZS5jb3JlIH1cbiAgICAgIF0pXG4gICAgICAucGlwZShtYXAoKFtnbG9iYWwsIHRlbmFudF0pID0+ICh7IGdsb2JhbCwgdGVuYW50IH0pKSk7XG4gIH1cbn1cbiJdfQ==
597
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFlbko7O0dBRUc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlFLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLGlCQUFZLEdBQUcsNEJBQTRCLENBQUM7UUFDNUMsMkJBQXNCLEdBQUcsb0JBQW9CLENBQUM7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Q0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVE7YUFDakIsS0FBSyxDQUFDO1lBQ0wsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3RELEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRTtTQUN0RCxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7K0dBdm9CVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7IEFwaUJhc2UgfSBmcm9tICcuLi9iYWNrZW5kL2FwaS5lbnVtJztcbmltcG9ydCB7IEJhY2tlbmRTZXJ2aWNlIH0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XG5pbXBvcnQgeyBBdXRoRGF0YSB9IGZyb20gJy4vLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JqZWN0VHlwZUZpZWxkSW50ZXJuYWxUeXBlLCBPYmplY3RUeXBlRmllbGRUeXBlIH0gZnJvbSAnLi9vYmplY3QtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZU9iamVjdFR5cGVGaWVsZCwgQ2xhc3NpZmljYXRpb24sIENvbnRlbnRTdHJlYW1BbGxvd2VkLCBJbnRlcm5hbEZpZWxkVHlwZSwgT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uLCBTeXN0ZW1UeXBlIH0gZnJvbSAnLi9zeXN0ZW0uZW51bSc7XG5pbXBvcnQge1xuICBDbGFzc2lmaWNhdGlvbkVudHJ5LFxuICBHZW5lcmljT2JqZWN0VHlwZSxcbiAgTG9jYWxpemF0aW9uLFxuICBPYmplY3RUeXBlLFxuICBPYmplY3RUeXBlRmllbGQsXG4gIE9iamVjdFR5cGVQZXJtaXNzaW9ucyxcbiAgU2NoZW1hUmVzcG9uc2UsXG4gIFNjaGVtYVJlc3BvbnNlRmllbGREZWZpbml0aW9uLFxuICBTY2hlbWFSZXNwb25zZVR5cGVEZWZpbml0aW9uLFxuICBTZWNvbmRhcnlPYmplY3RUeXBlLFxuICBTeXN0ZW1EZWZpbml0aW9uXG59IGZyb20gJy4vc3lzdGVtLmludGVyZmFjZSc7XG5cbi8qKlxuICogUHJvdmlkaW5nIHN5c3RlbSBkZWZpbml0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3lzdGVtU2VydmljZSB7XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcbiAgI2FwcENhY2hlID0gaW5qZWN0KEFwcENhY2hlU2VydmljZSk7XG4gICNsb2dnZXIgPSBpbmplY3QoTG9nZ2VyKTtcblxuICAjU1RPUkFHRV9LRVkgPSAneXV2LmNvcmUuc3lzdGVtLmRlZmluaXRpb24nO1xuICAjU1RPUkFHRV9LRVlfQVVUSF9EQVRBID0gJ3l1di5jb3JlLmF1dGguZGF0YSc7XG4gIC8vIGNhY2hlZCBpY29ucyB0byBhdm9pZCBiYWNrZW5kIGNhbGxzIChzZXNzaW9uIGNhY2hlKVxuICAjaWNvbkNhY2hlOiB7XG4gICAgW29iamVjdFR5cGVJZDogc3RyaW5nXToge1xuICAgICAgdXJpOiBzdHJpbmc7XG4gICAgICBpY29uPzogc3RyaW5nO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgI3Jlc29sdmVkQ2xhc3NpZmljYXRpb25zQ2FjaGU6IHsgW29iamVjdFR5cGVJZDogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICBzeXN0ZW0/OiBTeXN0ZW1EZWZpbml0aW9uO1xuICAjc3lzdGVtU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8U3lzdGVtRGVmaW5pdGlvbj4oKTtcbiAgc3lzdGVtJDogT2JzZXJ2YWJsZTxTeXN0ZW1EZWZpbml0aW9uPiA9IHRoaXMuI3N5c3RlbVNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvLyBjYWNoZSBmb3IgcmVzb2x2ZWQgdmlzaWJsZSB0YWdzIGJlY2F1c2UgdGhleSBhcmUgdXNlZCBpbiBsaXN0cyBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3QgYmUgcmUtZXZhbHVhdGVkIGFsbCB0aGUgdGltZVxuICAjdmlzaWJsZVRhZ3NDYWNoZTogeyBbb2JqZWN0SWQ6IHN0cmluZ106IHsgW3RhZ05hbWU6IHN0cmluZ106IGFueVtdIH0gfSA9IHt9O1xuICAjcGVybWlzc2lvbnM/OiBPYmplY3RUeXBlUGVybWlzc2lvbnM7XG4gIGF1dGhEYXRhPzogQXV0aERhdGE7XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgb2JqZWN0IHR5cGVzXG4gICAqIEBwYXJhbSB3aXRoTGFiZWxzIFdoZXRoZXIgb3Igbm90IHRvIGFsc28gYWRkIHRoZSB0eXBlcyBsYWJlbHNcbiAgICovXG4gIGdldE9iamVjdFR5cGVzKHdpdGhMYWJlbHM/OiBib29sZWFuLCBzaXR1YXRpb24/OiAnc2VhcmNoJyB8ICdjcmVhdGUnKTogR2VuZXJpY09iamVjdFR5cGVbXSB7XG4gICAgLy8gRmlsdGVyIGJ5IHVzZXIgcGVybWlzc2lvbnMgYmFzZWQgb24gc2l0dWF0aW9uXG4gICAgY29uc3Qgb2JqZWN0VHlwZXMgPSB0aGlzLiNmaWx0ZXJCeVBlcm1pc3Npb25zKFxuICAgICAgWy4uLnRoaXMuc3lzdGVtIS5vYmplY3RUeXBlcywgLi4udGhpcy5zeXN0ZW0hLnNlY29uZGFyeU9iamVjdFR5cGVzLm1hcCgoc290KSA9PiB0aGlzLiNzb3RUb0dlbmVyaWNUeXBlKHNvdCkpXSxcbiAgICAgIHNpdHVhdGlvblxuICAgICkgYXMgR2VuZXJpY09iamVjdFR5cGVbXTtcbiAgICByZXR1cm4gd2l0aExhYmVscyA/IG9iamVjdFR5cGVzLm1hcCgodCkgPT4gKHsgLi4udCwgbGFiZWw6IHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7dC5pZH1fbGFiZWxgKSB9KSkgOiBvYmplY3RUeXBlcztcbiAgfVxuXG4gICNzb3RUb0dlbmVyaWNUeXBlKHNvdDogU2Vjb25kYXJ5T2JqZWN0VHlwZSk6IEdlbmVyaWNPYmplY3RUeXBlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc290LFxuICAgICAgaXNGb2xkZXI6IGZhbHNlLFxuICAgICAgY3JlYXRhYmxlOiB0cnVlLFxuICAgICAgc2Vjb25kYXJ5T2JqZWN0VHlwZXM6IFtdLFxuICAgICAgaXNTb3Q6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgc2Vjb25kYXJ5IG9iamVjdCB0eXBlc1xuICAgKiBAcGFyYW0gd2l0aExhYmVscyBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGFkZCB0aGUgdHlwZXMgbGFiZWxzXG4gICAqL1xuICBnZXRTZWNvbmRhcnlPYmplY3RUeXBlcyh3aXRoTGFiZWxzPzogYm9vbGVhbiwgc2l0dWF0aW9uPzogJ3NlYXJjaCcgfCAnY3JlYXRlJyk6IFNlY29uZGFyeU9iamVjdFR5cGVbXSB7XG4gICAgY29uc3Qgc290cyA9IHRoaXMuI2ZpbHRlckJ5UGVybWlzc2lvbnMoXG4gICAgICB0aGlzLnN5c3RlbSEuc2Vjb25kYXJ5T2JqZWN0VHlwZXMubWFwKChzb3QpID0+IHRoaXMuI3NvdFRvR2VuZXJpY1R5cGUoc290KSksXG4gICAgICBzaXR1YXRpb25cbiAgICApIGFzIFNlY29uZGFyeU9iamVjdFR5cGVbXTtcblxuICAgIHJldHVybiAoXG4gICAgICAod2l0aExhYmVscyA/IHNvdHMubWFwKCh0KSA9PiAoeyAuLi50LCBsYWJlbDogdGhpcy5nZXRMb2NhbGl6ZWRSZXNvdXJjZShgJHt0LmlkfV9sYWJlbGApIH0pKSA6IHNvdHMpXG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0LmJhc2VJZCAmJiAhdC5pZC5zdGFydHNXaXRoKCdzeXN0ZW06JykgJiYgdC5pZCAhPT0gJ2FwcENsaWVudHN5c3RlbTpsZWFkaW5nVHlwZScpXG4gICAgKTtcbiAgfVxuXG4gICNmaWx0ZXJCeVBlcm1pc3Npb25zKHR5cGVzOiBHZW5lcmljT2JqZWN0VHlwZVtdLCBzaXR1YXRpb24/OiAnc2VhcmNoJyB8ICdjcmVhdGUnKTogR2VuZXJpY09iamVjdFR5cGVbXSB7XG4gICAgaWYgKCFzaXR1YXRpb24pIHJldHVybiB0eXBlcztcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBzaXR1YXRpb24gPT09ICdzZWFyY2gnID8gdGhpcy4jcGVybWlzc2lvbnMhLnNlYXJjaGFibGVPYmplY3RUeXBlcyA6IHRoaXMuI3Blcm1pc3Npb25zIS5jcmVhdGVhYmxlT2JqZWN0VHlwZXM7XG4gICAgcmV0dXJuIHR5cGVzLmZpbHRlcigodCkgPT4gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKHQuaWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBwYXJ0aWN1bGFyIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSB3aXRoTGFiZWwgV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIHR5cGVzIGxhYmVsXG4gICAqL1xuICBnZXRPYmplY3RUeXBlKG9iamVjdFR5cGVJZDogc3RyaW5nLCB3aXRoTGFiZWw/OiBib29sZWFuKTogR2VuZXJpY09iamVjdFR5cGUgfCB1bmRlZmluZWQge1xuICAgIGxldCBvYmplY3RUeXBlOiBHZW5lcmljT2JqZWN0VHlwZSB8IHVuZGVmaW5lZCA9XG4gICAgICBvYmplY3RUeXBlSWQgPT09IFN5c3RlbVR5cGUuT0JKRUNUID8gdGhpcy5nZXRCYXNlVHlwZSgpIDogdGhpcy5zeXN0ZW0hLm9iamVjdFR5cGVzLmZpbmQoKG90KSA9PiBvdC5pZCA9PT0gb2JqZWN0VHlwZUlkKTtcblxuICAgIGlmIChvYmplY3RUeXBlICYmIHdpdGhMYWJlbCkge1xuICAgICAgb2JqZWN0VHlwZS5sYWJlbCA9IHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7b2JqZWN0VHlwZS5pZH1fbGFiZWxgKSB8fCBvYmplY3RUeXBlSWQ7XG4gICAgfVxuXG4gICAgaWYgKCFvYmplY3RUeXBlKSB7XG4gICAgICAvLyBubyAncmVhbCcgb2JqZWN0IHR5cGUgZm91bmQuIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgU09UIGFuZCB0cmVhdCBpdCBsaWtlIGEgcmVhbCB0eXBlXG4gICAgICAvLyBieSBmaWxsaW5nIHVwIHRoZSBtaXNzaW5nIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IHNvdCA9IHRoaXMuZ2V0U2Vjb25kYXJ5T2JqZWN0VHlwZShvYmplY3RUeXBlSWQsIHdpdGhMYWJlbCk7XG4gICAgICBpZiAoc290KSB7XG4gICAgICAgIG9iamVjdFR5cGUgPSB0aGlzLiNzb3RUb0dlbmVyaWNUeXBlKHNvdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBhcnRpY3VsYXIgc2Vjb25kYXJ5IG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlSWQgSUQgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSB3aXRoTGFiZWwgV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIHR5cGVzIGxhYmVsXG4gICAqL1xuICBnZXRTZWNvbmRhcnlPYmplY3RUeXBlKG9iamVjdFR5cGVJZDogc3RyaW5nLCB3aXRoTGFiZWw/OiBib29sZWFuKTogU2Vjb25kYXJ5T2JqZWN0VHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb2JqZWN0VHlwZTogU2Vjb25kYXJ5T2JqZWN0VHlwZSB8IHVuZGVmaW5lZCA9IHRoaXMuc3lzdGVtIS5zZWNvbmRhcnlPYmplY3RUeXBlcy5maW5kKChvdCkgPT4gb3QuaWQgPT09IG9iamVjdFR5cGVJZCk7XG4gICAgaWYgKG9iamVjdFR5cGUgJiYgd2l0aExhYmVsKSB7XG4gICAgICBvYmplY3RUeXBlLmxhYmVsID0gdGhpcy5nZXRMb2NhbGl6ZWRSZXNvdXJjZShgJHtvYmplY3RUeXBlLmlkfV9sYWJlbGApIHx8IG9iamVjdFR5cGUuaWQ7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZSBkb2N1bWVudCB0eXBlIGFsbCBkb2N1bWVudHMgYmVsb25nIHRvXG4gICAqIEBwYXJhbSB3aXRoTGFiZWwgV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIHR5cGVzIGxhYmVsXG4gICAqL1xuICBnZXRCYXNlRG9jdW1lbnRUeXBlKHdpdGhMYWJlbD86IGJvb2xlYW4pOiBPYmplY3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RUeXBlKFN5c3RlbVR5cGUuRE9DVU1FTlQsIHdpdGhMYWJlbCkhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZSBmb2xkZXIgdHlwZSBhbGwgZm9sZGVycyBiZWxvbmcgdG9cbiAgICogQHBhcmFtIHdpdGhMYWJlbCBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGFkZCB0aGUgdHlwZXMgbGFiZWxcbiAgICovXG4gIGdldEJhc2VGb2xkZXJUeXBlKHdpdGhMYWJlbD86IGJvb2xlYW4pOiBPYmplY3RUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RUeXBlKFN5c3RlbVR5cGUuRk9MREVSLCB3aXRoTGFiZWwpITtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2Ugb2JqZWN0IHR5cGUgYWxsIGRtcyBvYmplY3RzIGJlbG9uZyB0b1xuICAgKi9cbiAgZ2V0QmFzZVR5cGUoKTogT2JqZWN0VHlwZSB7XG4gICAgY29uc3Qgc3lzRm9sZGVyID0gdGhpcy5nZXRCYXNlRm9sZGVyVHlwZSgpO1xuICAgIGNvbnN0IHN5c0RvY3VtZW50ID0gdGhpcy5nZXRCYXNlRG9jdW1lbnRUeXBlKCk7XG5cbiAgICAvLyBiYXNlIHR5cGUgY29udGFpbnMgb25seSBmaWVsZHMgdGhhdCBhcmUgc2hhcmVkIGJ5IGJhc2UgZG9jdW1lbnQgYW5kIGJhc2UgZm9sZGVyIC4uLlxuICAgIGNvbnN0IGZvbGRlclR5cGVGaWVsZElEcyA9IHN5c0ZvbGRlci5maWVsZHMubWFwKChmKSA9PiBmLmlkKTtcbiAgICBjb25zdCBiYXNlVHlwZUZpZWxkczogT2JqZWN0VHlwZUZpZWxkW10gPSBzeXNEb2N1bWVudC5maWVsZHMuZmlsdGVyKChmKSA9PiBmb2xkZXJUeXBlRmllbGRJRHMuaW5jbHVkZXMoZi5pZCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBTeXN0ZW1UeXBlLk9CSkVDVCxcbiAgICAgIGNyZWF0YWJsZTogZmFsc2UsXG4gICAgICBpc0ZvbGRlcjogZmFsc2UsXG4gICAgICBzZWNvbmRhcnlPYmplY3RUeXBlczogW10sXG4gICAgICBmaWVsZHM6IGJhc2VUeXBlRmllbGRzXG4gICAgICAvLyByYXdGaWVsZHM6IGJhc2VUeXBlRmllbGRzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc29sdmVkIG9iamVjdCB0eXBlIHdpdGggYWxsIGZpZWxkcyAoIGluY2x1ZGluZyBmaWVsZHMgZnJvbSByZWxhdGVkIHNlY29uZGFyeSB0eXBlcyApXG4gICAqL1xuICBnZXRSZXNvbHZlZFR5cGUob2JqZWN0VHlwZUlkPzogc3RyaW5nKTogeyBpZDogc3RyaW5nOyBmaWVsZHM6IE9iamVjdFR5cGVGaWVsZFtdIH0ge1xuICAgIGNvbnN0IGFic3RyYWN0VHlwZXMgPSBPYmplY3QudmFsdWVzKFN5c3RlbVR5cGUpO1xuICAgIGlmICghb2JqZWN0VHlwZUlkIHx8IGFic3RyYWN0VHlwZXMuaW5jbHVkZXMob2JqZWN0VHlwZUlkKSkge1xuICAgICAgY29uc3QgYmFzZVR5cGUgPSB0aGlzLmdldEJhc2VUeXBlKCk7XG4gICAgICByZXR1cm4geyBpZDogYmFzZVR5cGUuaWQsIGZpZWxkczogYmFzZVR5cGUuZmllbGRzIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3QgPSB0aGlzLmdldE9iamVjdFR5cGUob2JqZWN0VHlwZUlkKTtcbiAgICBpZiAoIW90KSB7XG4gICAgICBjb25zdCBzb3QgPSB0aGlzLmdldFNlY29uZGFyeU9iamVjdFR5cGUob2JqZWN0VHlwZUlkKSB8fCB7IGlkOiBvYmplY3RUeXBlSWQsIGZpZWxkczogW10gfTtcbiAgICAgIGNvbnN0IGJhc2VUeXBlID0gdGhpcy5nZXRCYXNlVHlwZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHNvdC5pZCxcbiAgICAgICAgZmllbGRzOiBbLi4uc290LmZpZWxkcywgLi4uYmFzZVR5cGUuZmllbGRzXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IG90LmlkLFxuICAgICAgZmllbGRzOiBvdC5maWVsZHNcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb2x2ZWQgb2JqZWN0IHRhZ3NcbiAgICovXG4gIGdldFJlc29sdmVkVGFncyhvYmplY3RUeXBlSWQ6IHN0cmluZyk6IHsgaWQ6IHN0cmluZzsgdGFnTmFtZTogc3RyaW5nOyB0YWdWYWx1ZXM6IGFueTsgZmllbGRzOiBPYmplY3RUeXBlRmllbGRbXSB9W10ge1xuICAgIGNvbnN0IHZUYWdzID0gdGhpcy5nZXRWaXNpYmxlVGFncyhvYmplY3RUeXBlSWQpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh2VGFncykubWFwKChrKSA9PiAoe1xuICAgICAgaWQ6IG9iamVjdFR5cGVJZCxcbiAgICAgIHRhZ05hbWU6IGssXG4gICAgICB0YWdWYWx1ZXM6IHZUYWdzW2tdLFxuICAgICAgZmllbGRzOiB0aGlzLmdldEJhc2VUeXBlKCkuZmllbGRzLmZpbHRlcigoZikgPT4gZi5pZCA9PT0gQmFzZU9iamVjdFR5cGVGaWVsZC5UQUdTKVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGNsYXNzaWZpY2F0aW9ucyBmb3IgYSBnaXZlbiBvYmplY3QgdHlwZSBpbmNsdWRpbmcgdGhlXG4gICAqIGNsYXNzaWZpY2F0aW9ucyBvZiBpdHMgc3RhdGljIHNlY29uZGFyeSBvYmplY3QgdHlwZXNcbiAgICogQHBhcmFtIG9iamVjdFR5cGVJZCBJRCBvZiB0aGUgb2JqZWN0IHR5cGVcbiAgICovXG4gIGdldFJlc29sdmVkQ2xhc3NpZmljYXRpb25zKG9iamVjdFR5cGVJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLiNyZXNvbHZlZENsYXNzaWZpY2F0aW9uc0NhY2hlW29iamVjdFR5cGVJZF0gfHwgdGhpcy4jcmVzb2x2ZUNsYXNzaWZpY2F0aW9ucyhvYmplY3RUeXBlSWQpO1xuICB9XG5cbiAgI3Jlc29sdmVDbGFzc2lmaWNhdGlvbnMob2JqZWN0VHlwZUlkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNsYXNzaWZpY2F0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBvdCA9IHRoaXMuZ2V0T2JqZWN0VHlwZShvYmplY3RUeXBlSWQpO1xuICAgIGlmIChvdCkge1xuICAgICAgY2xhc3NpZmljYXRpb25zID0gb3QuY2xhc3NpZmljYXRpb24gfHwgW107XG4gICAgICBjb25zdCBzdGF0aWNTT1RzOiBzdHJpbmdbXSA9IG90LnNlY29uZGFyeU9iamVjdFR5cGVzID8gb3Quc2Vjb25kYXJ5T2JqZWN0VHlwZXMuZmlsdGVyKChzb3QpID0+IHNvdC5zdGF0aWMpLm1hcCgoc290KSA9PiBzb3QuaWQpIDogW107XG4gICAgICBzdGF0aWNTT1RzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdCA9IHRoaXMuZ2V0U2Vjb25kYXJ5T2JqZWN0VHlwZShpZCk7XG4gICAgICAgIGNsYXNzaWZpY2F0aW9ucyA9IHNvdD8uY2xhc3NpZmljYXRpb25cbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgLi4uY2xhc3NpZmljYXRpb25zLFxuICAgICAgICAgICAgICAuLi5zb3QuY2xhc3NpZmljYXRpb24uZmlsdGVyKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gYWxzbyBmaWx0ZXIgY2xhc3NpZmljYXRpb25zIHRoYXQgc2hvdWxkIG5vdCBiZSBpbmhlcml0ZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gYyAhPT0gT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uLkNSRUFURV9GQUxTRSAmJiBjICE9PSBPYmplY3RUeXBlQ2xhc3NpZmljYXRpb24uU0VBUkNIX0ZBTFNFO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogY2xhc3NpZmljYXRpb25zO1xuICAgICAgfSk7XG4gICAgICB0aGlzLiNyZXNvbHZlZENsYXNzaWZpY2F0aW9uc0NhY2hlW29iamVjdFR5cGVJZF0gPSBjbGFzc2lmaWNhdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2lmaWNhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVmlzaWJsZSB0YWdzIGFyZSBkZWZpbmVkIGJ5IGEgY2xhc3NpZmljYXRpb24gb24gdGhlIG9iamVjdCB0eXBlIChlLmcuICd0YWdbdGVua29saWJyaTpwcm9jZXNzLDEsMiwzXScpLlxuICAgKlxuICAgKiBUaGUgZXhhbXBsZSB3aWxsIG9ubHkgcmV0dXJuIHRhZ3Mgd2l0aCB0aGUgbmFtZSAndGVua29saWJyaTpwcm9jZXNzJ1xuICAgKiBhbmQgdmFsdWVzIG9mIGVpdGhlciAxLCAyIG9yIDMuIEFsbCBvdGhlciB0YWdzIHdpbGwgYmUgaWdub3JlZC5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVJZCBJRCBvZiB0aGUgb2JqZWN0IHR5cGUgdG8gZ2V0IHRoZSB2aXNpYmxlIHRhZ3MgZm9yXG4gICAqIEByZXR1cm5zIG9iamVjdCB3aGVyZSB0aGUgcHJvcGVydHkgbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgdGFnIGFuZCBpdHMgdmFsdWUgYXJlIHRoZSB2aXNpYmxlIHZhbHVlc1xuICAgKiBmb3IgdGhhdCB0YWcgKGlmIHZhbHVlcyBpcyBlbW90eSBhbGwgdmFsdWVzIGFyZSBhbGxvd2VkKVxuICAgKi9cbiAgZ2V0VmlzaWJsZVRhZ3Mob2JqZWN0VHlwZUlkOiBzdHJpbmcpOiB7IFt0YWdOYW1lOiBzdHJpbmddOiBhbnlbXSB9IHtcbiAgICByZXR1cm4gdGhpcy4jdmlzaWJsZVRhZ3NDYWNoZVtvYmplY3RUeXBlSWRdIHx8IHRoaXMuZmV0Y2hWaXNpYmxlVGFncyhvYmplY3RUeXBlSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFZpc2libGVUYWdzKG9iamVjdFR5cGVJZDogc3RyaW5nKTogeyBbdGFnTmFtZTogc3RyaW5nXTogYW55W10gfSB7XG4gICAgY29uc3Qgb3QgPSB0aGlzLmdldE9iamVjdFR5cGUob2JqZWN0VHlwZUlkKSB8fCB0aGlzLmdldFNlY29uZGFyeU9iamVjdFR5cGUob2JqZWN0VHlwZUlkKTtcbiAgICBjb25zdCB0YWdDbGFzc2lmaWNhdGlvbnMgPSB0aGlzLmdldFJlc29sdmVkQ2xhc3NpZmljYXRpb25zKG9iamVjdFR5cGVJZCkuZmlsdGVyKCh0KSA9PiB0LnN0YXJ0c1dpdGgoJ3RhZ1snKSk7XG4gICAgY29uc3QgcGFyZW50VHlwZSA9IG90ICYmIChvdCBhcyBPYmplY3RUeXBlKS5pZDtcblxuICAgIGNvbnN0IHRvOiB7IFt0YWdOYW1lOiBzdHJpbmddOiBhbnlbXSB9ID0ge307XG4gICAgKHRhZ0NsYXNzaWZpY2F0aW9ucyB8fCBbXSkuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICBjb25zdCBtID0gdGFnLm1hdGNoKC9cXFsoLiopXFxdL2kpIVsxXS5zcGxpdCgnLCcpO1xuICAgICAgY29uc3QgdGFnTmFtZSA9IG0uc3BsaWNlKDAsIDEpWzBdO1xuICAgICAgY29uc3QgdGFnVmFsdWVzID0gbS5tYXAoKHYpID0+IHBhcnNlSW50KHYudHJpbSgpKSk7XG4gICAgICB0b1t0YWdOYW1lXSA9IHRhZ1ZhbHVlcztcbiAgICB9KTtcblxuICAgIHRoaXMuI3Zpc2libGVUYWdzQ2FjaGVbb2JqZWN0VHlwZUlkXSA9IHBhcmVudFR5cGUgPyB7IC4uLnRoaXMuZ2V0VmlzaWJsZVRhZ3MocGFyZW50VHlwZSksIC4uLnRvIH0gOiB0bztcbiAgICByZXR1cm4gdGhpcy4jdmlzaWJsZVRhZ3NDYWNoZVtvYmplY3RUeXBlSWRdO1xuICB9XG5cbiAgZmlsdGVyVmlzaWJsZVRhZ3Mob2JqZWN0VHlwZUlkOiBzdHJpbmcsIHRhZ3NWYWx1ZTogQXJyYXk8QXJyYXk8YW55Pj4pOiBBcnJheTxBcnJheTxhbnk+PiB7XG4gICAgaWYgKCF0YWdzVmFsdWUpIHJldHVybiBbXTtcbiAgICBjb25zdCB2VGFnczogeyBbdGFnTmFtZTogc3RyaW5nXTogYW55W10gfSA9IHRoaXMuZ2V0VmlzaWJsZVRhZ3Mob2JqZWN0VHlwZUlkKTtcbiAgICAvLyBUYWcgdmFsdWUgbG9va3MgbGlrZSB0aGlzOiBbdGFnTmFtZTogc3RyaW5nLCBzdGF0ZTogbnVtYmVyLCBkYXRlOiBEYXRlLCB0cmFjZUlkOiBzdHJpbmddXG4gICAgcmV0dXJuIHRhZ3NWYWx1ZS5maWx0ZXIoKHY6IGFueVtdKSA9PiAhIXZUYWdzW3ZbMF1dICYmIHZUYWdzW3ZbMF1dLmluY2x1ZGVzKHZbMV0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGljb24gZm9yIGFuIG9iamVjdCB0eXBlLiBUaGlzIHdpbGwgcmV0dXJuIGFuIFNWRyBhcyBhIHN0cmluZy5cbiAgICogQHBhcmFtIG9iamVjdFR5cGVJZCBJRCBvZiB0aGUgb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIGZhbGxiYWNrIElEIG9mIGEgZmFsbGJhY2sgaWNvbiB0aGF0IHNob3VsZCBiZSB1c2VkIGlmIHRoZSBnaXZlbiBvYmplY3QgdHlwZSBoYXMgbm8gaWNvbiB5ZXRcbiAgICovXG4gIGdldE9iamVjdFR5cGVJY29uKG9iamVjdFR5cGVJZDogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdICYmIHRoaXMuI2ljb25DYWNoZVtvYmplY3RUeXBlSWRdLmljb24pIHtcbiAgICAgIHJldHVybiBvZih0aGlzLiNpY29uQ2FjaGVbb2JqZWN0VHlwZUlkXS5pY29uISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGljb25VcmkgPSB0aGlzLmdldE9iamVjdFR5cGVJY29uVXJpKG9iamVjdFR5cGVJZCwgZmFsbGJhY2spO1xuICAgICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KGljb25VcmkpLnBpcGUodGFwKChpY29uKSA9PiAodGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0gPSB7IHVyaTogaWNvblVyaSwgaWNvbiB9KSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFVSSSBvZiBhbiBvYmplY3QgdHlwZSBpY29uLlxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZUlkIElEIG9mIHRoZSBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gZmFsbGJhY2sgSUQgb2YgYSBmYWxsYmFjayBpY29uIHRoYXQgc2hvdWxkIGJlIHVzZWQgaWYgdGhlIGdpdmVuIG9iamVjdCB0eXBlIGhhcyBubyBpY29uIHlldFxuICAgKi9cbiAgZ2V0T2JqZWN0VHlwZUljb25Vcmkob2JqZWN0VHlwZUlkOiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0pIHtcbiAgICAgIHJldHVybiB0aGlzLiNpY29uQ2FjaGVbb2JqZWN0VHlwZUlkXS51cmk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNpID0gdGhpcy4jZ2V0SWNvbkZyb21DbGFzc2lmaWNhdGlvbihvYmplY3RUeXBlSWQpO1xuICAgICAgY29uc3QgZmIgPSB0aGlzLmdldEZhbGxiYWNrSWNvbihvYmplY3RUeXBlSWQsIGZhbGxiYWNrKTtcbiAgICAgIGNvbnN0IHVyaSA9IGAvcmVzb3VyY2VzL2ljb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNpIHx8IG9iamVjdFR5cGVJZCl9JHtmYiA/IGA/ZmFsbGJhY2s9JHtlbmNvZGVVUklDb21wb25lbnQoZmIpfWAgOiAnJ31gO1xuICAgICAgdGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0gPSB7IHVyaTogYCR7dGhpcy4jYmFja2VuZC5nZXRBcGlCYXNlKEFwaUJhc2UuYXBpV2ViKX0ke3VyaX1gIH07XG4gICAgICByZXR1cm4gdGhpcy4jaWNvbkNhY2hlW29iamVjdFR5cGVJZF0udXJpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmFsbGJhY2tJY29uKG9iamVjdFR5cGVJZDogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3QgPSB0aGlzLmdldE9iamVjdFR5cGUob2JqZWN0VHlwZUlkKTtcbiAgICBpZiAob3QgJiYgIWZhbGxiYWNrKSB7XG4gICAgICAvLyBhZGQgZGVmYXVsdCBmYWxsYmFja3MgZm9yIHN5c3RlbTpkb2N1bWVudCBhbmQgc3lzdGVtOmZvbGRlciBpZiBub3cgb3RoZXIgZmFsbGJhY2sgaGFzIGJlZW4gcHJvdmlkZWRcbiAgICAgIGZhbGxiYWNrID0gb3QuaXNGb2xkZXIgPyAnc3lzdGVtOmZvbGRlcicgOiAnc3lzdGVtOmRvY3VtZW50JztcbiAgICAgIC8vIGlmICh0aGlzLmlzRmxvYXRpbmdPYmplY3RUeXBlKG90KSkge1xuICAgICAgLy8gICAvLyB0eXBlcyB0aGF0IGRvIG5vdCBoYXZlIG5vIG9iamVjdCB0eXBlIGFzc2lnbmVkIHRvIHRoZW0gKHByaW1hcnkgRlNPVHMpXG4gICAgICAvLyAgIGZhbGxiYWNrID0gJ3N5c3RlbTpkbG0nO1xuICAgICAgLy8gfVxuICAgIH1cbiAgICByZXR1cm4gZmFsbGJhY2shO1xuICB9XG5cbiAgI2dldEljb25Gcm9tQ2xhc3NpZmljYXRpb24ob2JqZWN0VHlwZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjZTogTWFwPHN0cmluZywgQ2xhc3NpZmljYXRpb25FbnRyeT4gPSB0aGlzLmdldENsYXNzaWZpY2F0aW9ucyh0aGlzLmdldFJlc29sdmVkQ2xhc3NpZmljYXRpb25zKG9iamVjdFR5cGVJZCkpO1xuICAgIHJldHVybiBjZS5oYXMoT2JqZWN0VHlwZUNsYXNzaWZpY2F0aW9uLk9CSkVDVF9UWVBFX0lDT04pID8gY2UuZ2V0KE9iamVjdFR5cGVDbGFzc2lmaWNhdGlvbi5PQkpFQ1RfVFlQRV9JQ09OKSEub3B0aW9uc1swXSA6IG51bGw7XG4gIH1cblxuICBnZXRMb2NhbGl6ZWRSZXNvdXJjZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtIS5pMThuW2tleV07XG4gIH1cblxuICBnZXRMb2NhbGl6ZWRMYWJlbChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7aWR9X2xhYmVsYCk7XG4gIH1cblxuICBnZXRMb2NhbGl6ZWREZXNjcmlwdGlvbihpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxpemVkUmVzb3VyY2UoYCR7aWR9X2Rlc2NyaXB0aW9uYCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBvYmplY3QgdHlwZSBmaWVsZCBpcyBhIHN5c3RlbSBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgT2JqZWN0IHR5cGUgZmllbGQgdG8gYmUgY2hlY2tlZFxuICAgKi9cbiAgaXNTeXN0ZW1Qcm9wZXJ0eShmaWVsZDogT2JqZWN0VHlwZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLmlkLnN0YXJ0c1dpdGgoJ3N5c3RlbTonKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBiYWNrZW5kcyBzeXN0ZW0gZGVmaW5pdGlvbiBhbmQgdXBkYXRlcyBzeXN0ZW0kIE9ic2VydmFibGUuXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc3lzdGVtJCBvYnNlcnZhYmxlIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBvdGhlcndpc2UgeW91J2xsIHRyaWdnZXIgZmV0Y2hpbmcgdGhlXG4gICAqIHN5c3RlbSBkZWZpbml0aW9uIGV2ZXJ5IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGxvYWQgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxuICAgKi9cbiAgZ2V0U3lzdGVtRGVmaW5pdGlvbihhdXRoRGF0YT86IEF1dGhEYXRhKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETzogU3VwcG9zZWQgdG8gcmV0dXJuIDMwNCBpZiBub3RoaW5nIGNoYW5nZXNcbiAgICByZXR1cm4gdGhpcy4jZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKGF1dGhEYXRhKTtcblxuICAgIC8vIFRPRE86IHJlbW92ZSB3aGVuIDMwNCBpcyB0aGVyZT8/P1xuICAgIC8vIC8vIHRyeSB0byBmZXRjaCBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIGNhY2hlIGZpcnN0XG4gICAgLy8gcmV0dXJuIHRoaXMuYXBwQ2FjaGUuZ2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZKS5waXBlKFxuICAgIC8vICAgc3dpdGNoTWFwKHJlcyA9PiB7XG4gICAgLy8gICAgIGlmIChyZXMpIHtcbiAgICAvLyAgICAgICAvLyBjaGVjayBpZiB0aGUgc3lzdGVtIGRlZmluaXRpb24gZnJvbSB0aGUgY2FjaGUgaXMgdXAgdG8gZGF0ZVxuICAgIC8vICAgICAgIHRoaXMuc3lzdGVtID0gcmVzO1xuICAgIC8vICAgICAgIHRoaXMuc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xuICAgIC8vICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAvLyBub3RoaW5nIGNhY2hlZCBzbyBmYXJcbiAgICAvLyAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24oKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfSlcbiAgICAvLyApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGx5IGZldGNoIHRoZSBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIHRoZSBiYWNrZW5kLlxuICAgKiBAcGFyYW0gdXNlciBVc2VyIHRvIGZldGNoIGRlZmluaXRpb24gZm9yXG4gICAqL1xuICAjZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKGF1dGhEYXRhPzogQXV0aERhdGEpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF1dGhEYXRhID8gb2YoYXV0aERhdGEpIDogdGhpcy4jYXBwQ2FjaGUuZ2V0SXRlbSh0aGlzLiNTVE9SQUdFX0tFWV9BVVRIX0RBVEEpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChkYXRhOiBBdXRoRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUF1dGhEYXRhKGRhdGEpLnN1YnNjcmliZSgpO1xuICAgICAgICBjb25zdCBmZXRjaFRhc2tzID0gW3RoaXMuI2JhY2tlbmQuZ2V0KCcvZG1zL3NjaGVtYS9uYXRpdmUuanNvbicsIEFwaUJhc2UuY29yZSksIHRoaXMuI2ZldGNoTG9jYWxpemF0aW9ucygpXTtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGZldGNoVGFza3MpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLiNsb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicsIGVycm9yKTtcbiAgICAgICAgdGhpcy4jc3lzdGVtU291cmNlLmVycm9yKCdFcnJvciBmZXRjaGluZyByZWNlbnQgdmVyc2lvbiBvZiBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIHNlcnZlci4nKTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U2NoZW1hKGRhdGFbMF0sIGRhdGFbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIWRhdGE7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXRQZXJtaXNzaW9ucyhwOiBPYmplY3RUeXBlUGVybWlzc2lvbnMpIHtcbiAgICB0aGlzLiNwZXJtaXNzaW9ucyA9IHA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBzY2hlbWEgZnJvbSB0aGUgc2VydmVycyBzY2hlbWEgcmVzcG9uc2VcbiAgICogQHBhcmFtIHNjaGVtYVJlc3BvbnNlIFJlc3BvbnNlIGZyb20gdGhlIGJhY2tlbmRcbiAgICovXG4gIHNldFNjaGVtYShzY2hlbWFSZXNwb25zZTogU2NoZW1hUmVzcG9uc2UsIGxvY2FsaXplZFJlc291cmNlOiBMb2NhbGl6YXRpb24gPSB7fSkge1xuICAgIC8vIHByZXBhcmUgYSBxdWljayBhY2Nlc3Mgb2JqZWN0IGZvciB0aGUgZmllbGRzXG4gICAgY29uc3QgcHJvcGVydGllc1FBOiBSZWNvcmQ8c3RyaW5nLCBTY2hlbWFSZXNwb25zZUZpZWxkRGVmaW5pdGlvbj4gPSB7fTtcbiAgICBjb25zdCBvcmdUeXBlRmllbGRzID0gW0Jhc2VPYmplY3RUeXBlRmllbGQuTU9ESUZJRURfQlksIEJhc2VPYmplY3RUeXBlRmllbGQuQ1JFQVRFRF9CWV07XG4gICAgc2NoZW1hUmVzcG9uc2UucHJvcGVydHlEZWZpbml0aW9uLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgcC5jbGFzc2lmaWNhdGlvbnMgPSBwLmNsYXNzaWZpY2F0aW9uO1xuICAgICAgLy8gVE9ETzogUmVtb3ZlIG9uY2Ugc2NoZW1hIHN1cHBvcnRzIG9yZ2FuaXphdGlvbiBjbGFzc2lmaWNhdGlvbiBmb3IgYmFzZSBwYXJhbXNcbiAgICAgIC8vIG1hcCBjZXJ0YWluIGZpZWxkcyB0byBvcmdhbml6YXRpb24gdHlwZSAoZmFrZSBpdCB1bnRpbCB5b3UgbWFrZSBpdCA7LSlcbiAgICAgIGlmIChvcmdUeXBlRmllbGRzLmluY2x1ZGVzKHAuaWQpKSB7XG4gICAgICAgIHAuY2xhc3NpZmljYXRpb25zID0gW0NsYXNzaWZpY2F0aW9uLlNUUklOR19PUkdBTklaQVRJT05dO1xuICAgICAgfVxuICAgICAgcHJvcGVydGllc1FBW3AuaWRdID0gcDtcbiAgICB9KTtcbiAgICAvLyBwcmVwYXJlIGEgcXVpY2sgYWNjZXNzIG9iamVjdCBmb3Igb2JqZWN0IHR5cGVzIChpbmNsdWRpbmcgc2Vjb25kYXJ5IG9iamVjdHMpXG4gICAgY29uc3Qgb2JqZWN0VHlwZXNRQTogeyBbaWQ6IHN0cmluZ106IFNjaGVtYVJlc3BvbnNlVHlwZURlZmluaXRpb24gfSA9IHt9O1xuICAgIHNjaGVtYVJlc3BvbnNlLnR5cGVGb2xkZXJEZWZpbml0aW9uLmZvckVhY2goKG90OiBhbnkpID0+IHtcbiAgICAgIG9iamVjdFR5cGVzUUFbb3QuaWRdID0gb3Q7XG4gICAgfSk7XG4gICAgc2NoZW1hUmVzcG9uc2UudHlwZURvY3VtZW50RGVmaW5pdGlvbi5mb3JFYWNoKChvdDogYW55KSA9PiB7XG4gICAgICBvYmplY3RUeXBlc1FBW290LmlkXSA9IG90O1xuICAgIH0pO1xuICAgIHNjaGVtYVJlc3BvbnNlLnR5cGVTZWNvbmRhcnlEZWZpbml0aW9uLmZvckVhY2goKHNvdDogYW55KSA9PiB7XG4gICAgICBvYmplY3RUeXBlc1FBW3NvdC5pZF0gPSBzb3Q7XG4gICAgfSk7XG5cbiAgICBjb25zdCBvYmplY3RUeXBlczogT2JqZWN0VHlwZVtdID0gW1xuICAgICAgLy8gZm9sZGVyIHR5cGVzXG4gICAgICAuLi5zY2hlbWFSZXNwb25zZS50eXBlRm9sZGVyRGVmaW5pdGlvbi5tYXAoKGZkKSA9PiAoe1xuICAgICAgICBpZDogZmQuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmZC5kZXNjcmlwdGlvbixcbiAgICAgICAgY2xhc3NpZmljYXRpb246IGZkLmNsYXNzaWZpY2F0aW9uLFxuICAgICAgICBiYXNlSWQ6IGZkLmJhc2VJZCxcbiAgICAgICAgY3JlYXRhYmxlOiB0aGlzLiNpc0NyZWF0YWJsZShmZC5pZCksXG4gICAgICAgIGNvbnRlbnRTdHJlYW1BbGxvd2VkOiBDb250ZW50U3RyZWFtQWxsb3dlZC5OT1RfQUxMT1dFRCxcbiAgICAgICAgaXNGb2xkZXI6IHRydWUsXG4gICAgICAgIHNlY29uZGFyeU9iamVjdFR5cGVzOiBmZC5zZWNvbmRhcnlPYmplY3RUeXBlSWQgPyBmZC5zZWNvbmRhcnlPYmplY3RUeXBlSWQubWFwKCh0KSA9PiAoeyBpZDogdC52YWx1ZSwgc3RhdGljOiB0LnN0YXRpYyB9KSkgOiBbXSxcbiAgICAgICAgZmllbGRzOiB0aGlzLiNyZXNvbHZlT2JqZWN0VHlwZUZpZWxkcyhmZCwgcHJvcGVydGllc1FBLCBvYmplY3RUeXBlc1FBKVxuICAgICAgICAvLyByYXdGaWVsZHM6IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVGaWVsZHMoZmQsIHByb3BlcnRpZXNRQSwgb2JqZWN0VHlwZXNRQSwgdHJ1ZSksXG4gICAgICB9KSksXG4gICAgICAvLyBkb2N1bWVudCB0eXBlc1xuICAgICAgLi4uc2NoZW1hUmVzcG9uc2UudHlwZURvY3VtZW50RGVmaW5pdGlvbi5tYXAoKGRkKSA9PiAoe1xuICAgICAgICBpZDogZGQuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkZC5kZXNjcmlwdGlvbixcbiAgICAgICAgY2xhc3NpZmljYXRpb246IGRkLmNsYXNzaWZpY2F0aW9uLFxuICAgICAgICBiYXNlSWQ6IGRkLmJhc2VJZCxcbiAgICAgICAgY3JlYXRhYmxlOiB0aGlzLiNpc0NyZWF0YWJsZShkZC5pZCksXG4gICAgICAgIGNvbnRlbnRTdHJlYW1BbGxvd2VkOiBkZC5jb250ZW50U3RyZWFtQWxsb3dlZCxcbiAgICAgICAgaXNGb2xkZXI6IGZhbHNlLFxuICAgICAgICBzZWNvbmRhcnlPYmplY3RUeXBlczogZGQuc2Vjb25kYXJ5T2JqZWN0VHlwZUlkID8gZGQuc2Vjb25kYXJ5T2JqZWN0VHlwZUlkLm1hcCgodCkgPT4gKHsgaWQ6IHQudmFsdWUsIHN0YXRpYzogdC5zdGF0aWMgfSkpIDogW10sXG4gICAgICAgIGZpZWxkczogdGhpcy4jcmVzb2x2ZU9iamVjdFR5cGVGaWVsZHMoZGQsIHByb3BlcnRpZXNRQSwgb2JqZWN0VHlwZXNRQSlcbiAgICAgICAgLy8gcmF3RmllbGRzOiB0aGlzLnJlc29sdmVPYmplY3RUeXBlRmllbGRzKGRkLCBwcm9wZXJ0aWVzUUEsIG9iamVjdFR5cGVzUUEsIHRydWUpLFxuICAgICAgfSkpXG4gICAgXTtcblxuICAgIGNvbnN0IHNlY29uZGFyeU9iamVjdFR5cGVzOiBTZWNvbmRhcnlPYmplY3RUeXBlW10gPSBzY2hlbWFSZXNwb25zZS50eXBlU2Vjb25kYXJ5RGVmaW5pdGlvbi5tYXAoKHN0ZCkgPT4gKHtcbiAgICAgIGlkOiBzdGQuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogc3RkLmRlc2NyaXB0aW9uLFxuICAgICAgY2xhc3NpZmljYXRpb246IHN0ZC5jbGFzc2lmaWNhdGlvbixcbiAgICAgIGNvbnRlbnRTdHJlYW1BbGxvd2VkOiBzdGQuY29udGVudFN0cmVhbUFsbG93ZWQsXG4gICAgICBiYXNlSWQ6IHN0ZC5iYXNlSWQsXG4gICAgICAvLyBUT0RPOiBDb3VsZCBhIFNPVCBiZSBhIGZvbGRlciB0b28/XG4gICAgICBpc0ZvbGRlcjogZmFsc2UsXG4gICAgICBmaWVsZHM6IHRoaXMuI3Jlc29sdmVPYmplY3RUeXBlRmllbGRzKHN0ZCwgcHJvcGVydGllc1FBLCBvYmplY3RUeXBlc1FBKVxuICAgIH0pKTtcblxuICAgIHRoaXMuc3lzdGVtID0ge1xuICAgICAgdmVyc2lvbjogc2NoZW1hUmVzcG9uc2UudmVyc2lvbixcbiAgICAgIGxhc3RNb2RpZmljYXRpb25EYXRlOiBzY2hlbWFSZXNwb25zZS5sYXN0TW9kaWZpY2F0aW9uRGF0ZSxcbiAgICAgIG9iamVjdFR5cGVzLFxuICAgICAgc2Vjb25kYXJ5T2JqZWN0VHlwZXMsXG4gICAgICBpMThuOiBsb2NhbGl6ZWRSZXNvdXJjZSxcbiAgICAgIGFsbEZpZWxkczogcHJvcGVydGllc1FBXG4gICAgfTtcbiAgICB0aGlzLiNhcHBDYWNoZS5zZXRJdGVtKHRoaXMuI1NUT1JBR0VfS0VZLCB0aGlzLnN5c3RlbSkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy4jc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYWxsIHRoZSBmaWVsZHMgZm9yIGFuIG9iamVjdCB0eXBlLiBUaGlzIGFsc28gaW5jbHVkZXMgc2Vjb25kYXJ5IG9iamVjdCB0eXBlcyBhbmQgdGhlIGZpZWxkcyBpbmhlcml0ZWQgZnJvbVxuICAgKiB0aGUgYmFzZSB0eXBlICguLi4gYW5kIG9mIGNvdXJzZSB0aGUgYmFzZSB0eXBlIChhbmQgaXRzIHNlY29uZGFyeSBvYmplY3QgdHlwZXMpIG9mIHRoZSBiYXNlIHR5cGUgYW5kIHNvIG9uKVxuICAgKiBAcGFyYW0gc2NoZW1hVHlwZURlZmluaXRpb24gb2JqZWN0IHR5cGUgZGVmaW5pdGlvbiBmcm9tIHRoZSBuYXRpdmUgc2NoZW1hXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzUUEgUXVpY2sgYWNjZXNzIG9iamVjdCBvZiBhbGwgcHJvcGVydGllc1xuICAgKiBAcGFyYW0gb2JqZWN0VHlwZXNRQSBRdWljayBhY2Nlc3Mgb2JqZWN0IG9mIGFsbCBvYmplY3QgdHlwZXNcbiAgICogQHBhcmFtIHJhdyBJZiBzZXQgdG8gJ3RydWUnIG9ubHkgdGhlIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdCB0eXBlIGl0c2VsZiB3aWxsIGJlIHJldHVybmVkICh3aXRob3V0IFNPVHMpXG4gICAqL1xuICAjcmVzb2x2ZU9iamVjdFR5cGVGaWVsZHMoXG4gICAgc2NoZW1hVHlwZURlZmluaXRpb246IFNjaGVtYVJlc3BvbnNlVHlwZURlZmluaXRpb24sXG4gICAgcHJvcGVydGllc1FBOiB7IFtpZDogc3RyaW5nXTogU2NoZW1hUmVzcG9uc2VGaWVsZERlZmluaXRpb24gfSxcbiAgICBvYmplY3RUeXBlc1FBOiB7IFtpZDogc3RyaW5nXTogU2NoZW1hUmVzcG9uc2VUeXBlRGVmaW5pdGlvbiB9XG4gICk6IE9iamVjdFR5cGVGaWVsZFtdIHtcbiAgICBjb25zdCBvYmplY3RUeXBlRmllbGRJRHMgPSBzY2hlbWFUeXBlRGVmaW5pdGlvbi5wcm9wZXJ0eVJlZmVyZW5jZS5tYXAoKHByKSA9PiBwci52YWx1ZSk7XG4gICAgaWYgKHNjaGVtYVR5cGVEZWZpbml0aW9uLnNlY29uZGFyeU9iamVjdFR5cGVJZCkge1xuICAgICAgc2NoZW1hVHlwZURlZmluaXRpb24uc2Vjb25kYXJ5T2JqZWN0VHlwZUlkXG4gICAgICAgIC5maWx0ZXIoKHNvdCkgPT4gc290LnN0YXRpYylcbiAgICAgICAgLm1hcCgoc290KSA9PiBzb3QudmFsdWUpXG4gICAgICAgIC5mb3JFYWNoKChzb3RJRCkgPT4gb2JqZWN0VHlwZXNRQVtzb3RJRF0ucHJvcGVydHlSZWZlcmVuY2UuZm9yRWFjaCgocHI6IHsgdmFsdWU6IHN0cmluZyB9KSA9PiBvYmplY3RUeXBlRmllbGRJRHMucHVzaChwci52YWx1ZSkpKTtcbiAgICB9XG5cbiAgICBsZXQgZmllbGRzOiBPYmplY3RUeXBlRmllbGRbXSA9IG9iamVjdFR5cGVGaWVsZElEcy5tYXAoKGlkKSA9PiAoe1xuICAgICAgLi4ucHJvcGVydGllc1FBW2lkXSxcbiAgICAgIF9pbnRlcm5hbFR5cGU6IHRoaXMuZ2V0SW50ZXJuYWxGb3JtRWxlbWVudFR5cGUocHJvcGVydGllc1FBW2lkXS5wcm9wZXJ0eVR5cGUsIHByb3BlcnRpZXNRQVtpZF0uY2xhc3NpZmljYXRpb25zKVxuICAgIH0pKTtcblxuICAgIC8vIGFsc28gcmVzb2x2ZSBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlIHR5cGVcbiAgICBpZiAoc2NoZW1hVHlwZURlZmluaXRpb24uYmFzZUlkICE9PSBzY2hlbWFUeXBlRGVmaW5pdGlvbi5pZCAmJiAhIW9iamVjdFR5cGVzUUFbc2NoZW1hVHlwZURlZmluaXRpb24uYmFzZUlkXSkge1xuICAgICAgZmllbGRzID0gZmllbGRzLmNvbmNhdCh0aGlzLiNyZXNvbHZlT2JqZWN0VHlwZUZpZWxkcyhvYmplY3RUeXBlc1FBW3NjaGVtYVR5cGVEZWZpbml0aW9uLmJhc2VJZF0sIHByb3BlcnRpZXNRQSwgb2JqZWN0VHlwZXNRQSkpO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgI2lzQ3JlYXRhYmxlKG9iamVjdFR5cGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICFbU3lzdGVtVHlwZS5GT0xERVIsIFN5c3RlbVR5cGUuRE9DVU1FTlRdLmluY2x1ZGVzKG9iamVjdFR5cGVJZCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBjb2xsZWN0aW9uIG9mIGZvcm0gbW9kZWxzLlxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZUlEcyBPYmplY3QgdHlwZSBJRHMgdG8gZmV0Y2ggZm9ybSBtb2RlbCBmb3JcbiAgICogQHBhcmFtIHNpdHVhdGlvbiBGb3JtIHNpdHVhdGlvblxuICAgKiBAcmV0dXJucyBPYmplY3Qgd2hlcmUgdGhlIG9iamVjdCB0eXBlIGlkIGlzIGtleSBhbmQgdGhlIGZvcm0gbW9kZWwgaXMgdGhlIHZhbHVlXG4gICAqL1xuICBnZXRPYmplY3RUeXBlRm9ybXMob2JqZWN0VHlwZUlEczogc3RyaW5nW10sIHNpdHVhdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgb2JqZWN0VHlwZUlEcy5tYXAoKG8pID0+XG4gICAgICAgIHRoaXMuZ2V0T2JqZWN0VHlwZUZvcm0obywgc2l0dWF0aW9uKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IG9mKG51bGwpKSxcbiAgICAgICAgICBtYXAoKHJlcykgPT4gKHtcbiAgICAgICAgICAgIGlkOiBvLFxuICAgICAgICAgICAgZm9ybU1vZGVsOiByZXNcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc01hcDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICByZXMuZmlsdGVyKChyKSA9PiB0aGlzLiNmb3JtSGFzRWxlbWVudHMoci5mb3JtTW9kZWwpKS5mb3JFYWNoKChyOiBhbnkpID0+IChyZXNNYXBbci5pZF0gPSByLmZvcm1Nb2RlbCkpO1xuICAgICAgICByZXR1cm4gcmVzTWFwO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybSBtb2RlbCBvZiBhbiBvYmplY3QgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVJZCBJRCBvZiB0aGUgb2JqZWN0IHR5cGUgdG8gZmV0Y2ggdGhlIGZvcm0gZm9yXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gVGhlIGZvcm0gc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcbiAgICogQHJldHVybnMgRm9ybSBtb2RlbFxuICAgKi9cbiAgZ2V0T2JqZWN0VHlwZUZvcm0ob2JqZWN0VHlwZUlkOiBzdHJpbmcsIHNpdHVhdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5nZXQoVXRpbHMuYnVpbGRVcmkoYC9kbXMvZm9ybXMvJHtvYmplY3RUeXBlSWR9YCwgeyBzaXR1YXRpb24gfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSBtb2RlbCBoYXMgYXQgbGVhc3Qgb25lIGZvcm0gZWxlbWVudC4gUmVjdXJzaXZlLlxuICAgKiBAcGFyYW0gZWxlbWVudCBGb3JtIGVsZW1lbnQgdG8gY2hlY2sgY2hpbGQgZWxlbWVudHMgZm9yXG4gICAqL1xuICAjZm9ybUhhc0VsZW1lbnRzKGVsZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNFbGVtZW50ID0gZmFsc2U7XG4gICAgZWxlbWVudC5lbGVtZW50cz8uZm9yRWFjaCgoZTogYW55KSA9PiB7XG4gICAgICBpZiAoIVsnbzJtR3JvdXAnLCAnbzJtR3JvdXBTdGFjayddLmluY2x1ZGVzKGUudHlwZSkpIHtcbiAgICAgICAgaGFzRWxlbWVudCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFoYXNFbGVtZW50KSB7XG4gICAgICAgIGhhc0VsZW1lbnQgPSB0aGlzLiNmb3JtSGFzRWxlbWVudHMoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGhhc0VsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGludGVybmFsIHR5cGUgZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGUgZmllbGQuXG4gICAqIEFkZGluZyB0aGlzIHRvIGEgZm9ybSBlbGVtZW50IG9yIG9iamVjdCB0eXBlIGZpZWxkIGVuYWJsZXMgdXMgdG8gcmVuZGVyIGZvcm1zXG4gICAqIGJhc2VkIG9uIG9iamVjdCB0eXBlIGZpZWxkcyBpbiBhIG1vcmUgcGVyZm9ybWFudCB3YXkuIE90aGVyd2lzZSB3ZSB3b3VsZFxuICAgKiBoYXZlIHRvIGV2YWx1YXRlIHRoZSBjb25kaXRpb25zIGZvciBldmVyeSBmb3JtIGVsZW1lbnQgb24gZXZlcnkgZGlnZXN0IGN5Y2xlLlxuICAgKiBAcGFyYW0gdHlwZSBwcm9wZXJ0eVR5cGUgb2YgdGhlIE9iamVjdFR5cGVGaWVsZFxuICAgKiBAcGFyYW0gY2xhc3NpZmljYXRpb25zIGNsYXNzaWZpY2F0aW9ucyBvZiB0aGUgT2JqZWN0VHlwZUZpZWxkXG4gICAqL1xuICBnZXRJbnRlcm5hbEZvcm1FbGVtZW50VHlwZSh0eXBlOiBzdHJpbmcsIGNsYXNzaWZpY2F0aW9ucz86IHN0cmluZ1tdKTogT2JqZWN0VHlwZUZpZWxkSW50ZXJuYWxUeXBlIHtcbiAgICBjb25zdCBfY2xhc3NpZmljYXRpb25zID0gdGhpcy5nZXRDbGFzc2lmaWNhdGlvbnMoY2xhc3NpZmljYXRpb25zIHx8IFtdKTtcblxuICAgIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfUkVGRVJFTkNFKSkge1xuICAgICAgcmV0dXJuIEludGVybmFsRmllbGRUeXBlLlNUUklOR19SRUZFUkVOQ0U7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OKSkge1xuICAgICAgcmV0dXJuIEludGVybmFsRmllbGRUeXBlLlNUUklOR19PUkdBTklaQVRJT047XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiBfY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OX1NFVCkpIHtcbiAgICAgIHJldHVybiBJbnRlcm5hbEZpZWxkVHlwZS5TVFJJTkdfT1JHQU5JWkFUSU9OX1NFVDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnICYmIF9jbGFzc2lmaWNhdGlvbnMuaGFzKENsYXNzaWZpY2F0aW9uLlNUUklOR19DQVRBTE9HKSkge1xuICAgICAgcmV0dXJuIEludGVybmFsRmllbGRUeXBlLlNUUklOR19DQVRBTE9HO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nICYmIF9jbGFzc2lmaWNhdGlvbnMuaGFzKENsYXNzaWZpY2F0aW9uLkJPT0xFQU5fU1dJVENIKSkge1xuICAgICAgcmV0dXJuIEludGVybmFsRmllbGRUeXBlLkJPT0xFQU5fU1dJVENIO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlID09PSAnc3RyaW5nJyAmJlxuICAgICAgKF9jbGFzc2lmaWNhdGlvbnMuaGFzKENsYXNzaWZpY2F0aW9uLlNUUklOR19DQVRBTE9HX0RZTkFNSUMpIHx8IF9jbGFzc2lmaWNhdGlvbnMuaGFzKENsYXNzaWZpY2F0aW9uLlNUUklOR19DQVRBTE9HX0NVU1RPTSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gSW50ZXJuYWxGaWVsZFR5cGUuU1RSSU5HX0RZTkFNSUNfQ0FUQUxPRztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1hdGNoaW5nIGNvbmRpdGlvbnMganVzdCByZXR1cm4gdGhlIG9yaWdpbmFsIHR5cGVcbiAgICAgIHJldHVybiB0eXBlIGFzIE9iamVjdFR5cGVGaWVsZFR5cGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0T2JqZWN0VHlwZUZpZWxkKGlkOiBzdHJpbmcpOiBPYmplY3RUeXBlRmllbGQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGYgPSB0aGlzLnN5c3RlbT8uYWxsRmllbGRzW2lkXTtcbiAgICByZXR1cm4gZiA/IHsgLi4uZiwgX2ludGVybmFsVHlwZTogdGhpcy5nZXRJbnRlcm5hbEZvcm1FbGVtZW50VHlwZShmLnByb3BlcnR5VHlwZSwgZi5jbGFzc2lmaWNhdGlvbnMpIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBjbGFzc2lmaWNhdGlvbnMgZnJvbSBvYmplY3QgdHlwZSBmaWVsZHMgY2xhc3NpZmljYXRpb25cbiAgICogc3RyaW5nLiBUaGlzIHN0cmluZyBtYXkgY29udGFpbiBtb3JlIHRoYW4gb25lIGNsYXNzaWZpY2F0aW9uIGVudHJ5LlxuICAgKlxuICAgKiBDbGFzc2lmaWNhdGlvbiBpcyBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgdGhhdCBtYXkgY29udGFpbiBhZGRpdGlvbmFsXG4gICAqIHByb3BlcnRpZXMgcmVsYXRlZCB0byBvbiBjbGFzc2lmaWNhdGlvbiBlbnRyeS4gRXhhbXBsZTpcbiAgICpcbiAgICogYGlkOnJlZmVyZW5jZVtzeXN0ZW06Zm9sZGVyXSwgZW1haWxgXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc2lmaWNhdGlvbnMgT2JqZWN0IHR5cGUgZmllbGRzIGNsYXNzaWZpY2F0aW9uIHByb3BlcnR5IChzY2hlbWEpXG4gICAqL1xuICBnZXRDbGFzc2lmaWNhdGlvbnMoY2xhc3NpZmljYXRpb25zOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIENsYXNzaWZpY2F0aW9uRW50cnk+IHtcbiAgICBjb25zdCByZXMgPSBuZXcgTWFwPHN0cmluZywgQ2xhc3NpZmljYXRpb25FbnRyeT4oKTtcbiAgICBpZiAoY2xhc3NpZmljYXRpb25zKSB7XG4gICAgICBjbGFzc2lmaWNhdGlvbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCA9IGMubWF0Y2goL14oW15cXFtdKikoXFxbKC4qKVxcXSk/JC8pO1xuICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgIHJlcy5zZXQobWF0Y2hlc1sxXSwge1xuICAgICAgICAgICAgY2xhc3NpZmljYXRpb246IG1hdGNoZXNbMV0sXG4gICAgICAgICAgICBvcHRpb25zOiBtYXRjaGVzWzNdID8gbWF0Y2hlc1szXS5zcGxpdCgnLCcpLm1hcCgobykgPT4gby50cmltKCkpIDogW11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB0b0Zvcm1FbGVtZW50KGZpZWxkOiBPYmplY3RUeXBlRmllbGQpOiBhbnkge1xuICAgIHJldHVybiB7IC4uLmZpZWxkLCBsYWJlbDogdGhpcy5nZXRMb2NhbGl6ZWRMYWJlbChmaWVsZC5pZCksIG5hbWU6IGZpZWxkLmlkLCB0eXBlOiBmaWVsZC5wcm9wZXJ0eVR5cGUgfTtcbiAgfVxuXG4gIHVwZGF0ZUF1dGhEYXRhKGRhdGE6IFBhcnRpYWw8QXV0aERhdGE+KSB7XG4gICAgdGhpcy5hdXRoRGF0YSA9IHsgLi4udGhpcy5hdXRoRGF0YSEsIC4uLmRhdGEgfTtcbiAgICB0aGlzLiNiYWNrZW5kLnNldEhlYWRlcignQWNjZXB0LUxhbmd1YWdlJywgdGhpcy5hdXRoRGF0YS5sYW5ndWFnZSk7XG4gICAgcmV0dXJuIHRoaXMuI2FwcENhY2hlLnNldEl0ZW0odGhpcy4jU1RPUkFHRV9LRVlfQVVUSF9EQVRBLCB0aGlzLmF1dGhEYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZUxvY2FsaXphdGlvbnMoaXNvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZUF1dGhEYXRhKHsgbGFuZ3VhZ2U6IGlzbyB9KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuI2ZldGNoTG9jYWxpemF0aW9ucygpKSxcbiAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc3lzdGVtIS5pMThuID0gcmVzO1xuICAgICAgICB0aGlzLiNhcHBDYWNoZS5zZXRJdGVtKHRoaXMuI1NUT1JBR0VfS0VZLCB0aGlzLnN5c3RlbSkuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuI3N5c3RlbVNvdXJjZS5uZXh0KHRoaXMuc3lzdGVtISk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAjZmV0Y2hMb2NhbGl6YXRpb25zKCk6IE9ic2VydmFibGU8TG9jYWxpemF0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KCcvcmVzb3VyY2VzL3RleHQnKTtcbiAgfVxuXG4gIGZldGNoUmVzb3VyY2VzKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgZ2xvYmFsOiBhbnk7IHRlbmFudDogYW55IH0+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZFxuICAgICAgLmJhdGNoKFtcbiAgICAgICAgeyB1cmk6IGAvc3lzdGVtL3Jlc291cmNlcy8ke2lkfWAsIGJhc2U6IEFwaUJhc2UuY29yZSB9LFxuICAgICAgICB7IHVyaTogYC9hZG1pbi9yZXNvdXJjZXMvJHtpZH1gLCBiYXNlOiBBcGlCYXNlLmNvcmUgfVxuICAgICAgXSlcbiAgICAgIC5waXBlKG1hcCgoW2dsb2JhbCwgdGVuYW50XSkgPT4gKHsgZ2xvYmFsLCB0ZW5hbnQgfSkpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { switchMap } from 'rxjs';
3
+ import { BackendService } from '../backend/backend.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Service providing user related remote storage. This service is used load and
7
+ * store user related data from any device.
8
+ */
9
+ export class UserStorageService {
10
+ #backend = inject(BackendService);
11
+ #USERS_SETTINGS = '/users/settings';
12
+ // prefix to be added to every section key to be able to later distinguish
13
+ // between user settings and other settings
14
+ #SECTION_PREFIX = 'x-user-';
15
+ /**
16
+ *
17
+ * @param section section key for
18
+ * @param value value to be stored
19
+ */
20
+ getItem(section) {
21
+ return this.#backend.get(`${this.#USERS_SETTINGS}/${this.#sanitizeSection(this.#SECTION_PREFIX + section)}`);
22
+ }
23
+ setItem(section, data) {
24
+ return this.getItem(section).pipe(switchMap((current) => this.#backend.post(`${this.#USERS_SETTINGS}/${this.#sanitizeSection(this.#SECTION_PREFIX + section)}`, { ...current, ...data })));
25
+ }
26
+ #sanitizeSection(section) {
27
+ return encodeURIComponent(section);
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, providedIn: 'root' }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserStorageService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvdXNlci91c2VyLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFNUQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztJQUNwQywwRUFBMEU7SUFDMUUsMkNBQTJDO0lBQzNDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFFNUI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxJQUF5QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3hKLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBekJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFja2VuZFNlcnZpY2UgfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSBwcm92aWRpbmcgdXNlciByZWxhdGVkIHJlbW90ZSBzdG9yYWdlLiBUaGlzIHNlcnZpY2UgaXMgdXNlZCBsb2FkIGFuZFxuICogc3RvcmUgdXNlciByZWxhdGVkIGRhdGEgZnJvbSBhbnkgZGV2aWNlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU3RvcmFnZVNlcnZpY2Uge1xuICAjYmFja2VuZCA9IGluamVjdChCYWNrZW5kU2VydmljZSk7XG5cbiAgI1VTRVJTX1NFVFRJTkdTID0gJy91c2Vycy9zZXR0aW5ncyc7XG4gIC8vIHByZWZpeCB0byBiZSBhZGRlZCB0byBldmVyeSBzZWN0aW9uIGtleSB0byBiZSBhYmxlIHRvIGxhdGVyIGRpc3Rpbmd1aXNoXG4gIC8vIGJldHdlZW4gdXNlciBzZXR0aW5ncyBhbmQgb3RoZXIgc2V0dGluZ3NcbiAgI1NFQ1RJT05fUFJFRklYID0gJ3gtdXNlci0nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gc2VjdGlvbiBzZWN0aW9uIGtleSBmb3JcbiAgICogQHBhcmFtIHZhbHVlICB2YWx1ZSB0byBiZSBzdG9yZWRcbiAgICovXG4gIGdldEl0ZW0oc2VjdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2JhY2tlbmQuZ2V0KGAke3RoaXMuI1VTRVJTX1NFVFRJTkdTfS8ke3RoaXMuI3Nhbml0aXplU2VjdGlvbih0aGlzLiNTRUNUSU9OX1BSRUZJWCArIHNlY3Rpb24pfWApO1xuICB9XG5cbiAgc2V0SXRlbShzZWN0aW9uOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW0oc2VjdGlvbikucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY3VycmVudCkgPT4gdGhpcy4jYmFja2VuZC5wb3N0KGAke3RoaXMuI1VTRVJTX1NFVFRJTkdTfS8ke3RoaXMuI3Nhbml0aXplU2VjdGlvbih0aGlzLiNTRUNUSU9OX1BSRUZJWCArIHNlY3Rpb24pfWAsIHsgLi4uY3VycmVudCwgLi4uZGF0YSB9KSlcbiAgICApO1xuICB9XG5cbiAgI3Nhbml0aXplU2VjdGlvbihzZWN0aW9uOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHNlY3Rpb24pO1xuICB9XG59XG4iXX0=