@cqa-lib/cqa-ui 1.1.451 → 1.1.453
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/execution-screen/breakpoints-modal/breakpoints-modal.component.mjs +2 -2
- package/esm2020/lib/execution-screen/condition-debug-step/condition-debug-step.component.mjs +25 -23
- package/esm2020/lib/execution-screen/jump-to-step-modal/jump-to-step-modal.component.mjs +84 -20
- package/esm2020/lib/execution-screen/session-changes-modal/session-changes-modal.component.mjs +2 -2
- package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +27 -8
- package/esm2020/lib/questionnaire-list/questionnaire-list.component.mjs +3 -3
- package/esm2020/lib/version-history/new-version-history-detail/new-version-history-detail.component.mjs +3 -3
- package/esm2020/lib/version-history/version-history-list/version-history-list.component.mjs +6 -3
- package/esm2020/lib/version-history/version-history-restore-confirm/version-history-restore-confirm.component.mjs +9 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +159 -63
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +152 -58
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/execution-screen/jump-to-step-modal/jump-to-step-modal.component.d.ts +6 -0
- package/lib/execution-screen/session-changes-modal/session-changes-modal.component.d.ts +2 -0
- package/lib/version-history/version-history-list/version-history-list.component.d.ts +7 -1
- package/lib/version-history/version-history-restore-confirm/version-history-restore-confirm.component.d.ts +2 -0
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -47,8 +47,10 @@ export class JumpToStepModalComponent {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
updateFilteredItems() {
|
|
50
|
-
if (this.
|
|
51
|
-
|
|
50
|
+
if (this.stepsMeta?.length) {
|
|
51
|
+
// stepsMeta is the pre-computed, fully-ordered flat list (including ELSE IF/ELSE branches
|
|
52
|
+
// that are absent from the combinedTestCases tree). Use it directly — no re-traversal needed.
|
|
53
|
+
this.buildFromStepsMeta();
|
|
52
54
|
}
|
|
53
55
|
else if (this.items?.length) {
|
|
54
56
|
this.buildFromItems();
|
|
@@ -59,9 +61,59 @@ export class JumpToStepModalComponent {
|
|
|
59
61
|
this.filteredStepItems = [];
|
|
60
62
|
}
|
|
61
63
|
}
|
|
64
|
+
/** Build filteredItems directly from stepsMeta — the pre-computed ordered flat list. */
|
|
65
|
+
buildFromStepsMeta() {
|
|
66
|
+
const searchTerm = (this.searchValue || '').toLowerCase().trim();
|
|
67
|
+
this.prerequisiteGroups = [];
|
|
68
|
+
this.filteredStepItems = [];
|
|
69
|
+
const prereqGroupMap = new Map();
|
|
70
|
+
for (const meta of this.stepsMeta) {
|
|
71
|
+
if (searchTerm) {
|
|
72
|
+
const numMatch = String(meta.stepNumber).toLowerCase().includes(searchTerm);
|
|
73
|
+
const labelMatch = (meta.label || '').toLowerCase().includes(searchTerm);
|
|
74
|
+
if (!numMatch && !labelMatch)
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const item = {
|
|
78
|
+
id: String(meta.stepId),
|
|
79
|
+
stepId: meta.stepId,
|
|
80
|
+
uniqueId: meta.uniqueId,
|
|
81
|
+
stepNumber: meta.stepNumber,
|
|
82
|
+
description: this.stripHtml(meta.label || ('Step ' + meta.stepNumber)),
|
|
83
|
+
status: meta.status,
|
|
84
|
+
isPrerequisite: meta.isPrerequisite,
|
|
85
|
+
groupName: meta.groupName,
|
|
86
|
+
};
|
|
87
|
+
if (meta.isPrerequisite && this.showPrerequisites) {
|
|
88
|
+
const name = (meta.groupName || 'Prerequisite').toString();
|
|
89
|
+
const existing = prereqGroupMap.get(name);
|
|
90
|
+
if (existing)
|
|
91
|
+
existing.push(item);
|
|
92
|
+
else
|
|
93
|
+
prereqGroupMap.set(name, [item]);
|
|
94
|
+
}
|
|
95
|
+
else if (!meta.isPrerequisite) {
|
|
96
|
+
this.filteredStepItems.push(item);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.prerequisiteGroups = Array.from(prereqGroupMap.entries()).map(([name, items]) => ({ name, items }));
|
|
100
|
+
this.filteredItems = [
|
|
101
|
+
...this.prerequisiteGroups.reduce((acc, g) => acc.concat(g.items), []),
|
|
102
|
+
...this.filteredStepItems,
|
|
103
|
+
];
|
|
104
|
+
}
|
|
62
105
|
buildFromCombinedTestCases() {
|
|
106
|
+
// Primary lookup by uniqueId (handles same stepId in multiple groups with different stepNumbers).
|
|
107
|
+
// Fallback lookup by stepId for metas without uniqueId.
|
|
108
|
+
const metaByUniqueId = new Map();
|
|
63
109
|
const metaByStepId = new Map();
|
|
64
|
-
this.stepsMeta.forEach(m =>
|
|
110
|
+
this.stepsMeta.forEach(m => {
|
|
111
|
+
if (m.uniqueId)
|
|
112
|
+
metaByUniqueId.set(m.uniqueId, m);
|
|
113
|
+
// Only store first occurrence per stepId (used as fallback when uniqueId is absent)
|
|
114
|
+
if (!metaByStepId.has(m.stepId))
|
|
115
|
+
metaByStepId.set(m.stepId, m);
|
|
116
|
+
});
|
|
65
117
|
const searchTerm = (this.searchValue || '').toLowerCase().trim();
|
|
66
118
|
const matchesSearch = (meta) => {
|
|
67
119
|
if (!searchTerm)
|
|
@@ -83,14 +135,21 @@ export class JumpToStepModalComponent {
|
|
|
83
135
|
continue;
|
|
84
136
|
const id = s?.id ?? s?.step_id;
|
|
85
137
|
const numId = id != null ? Number(id) : NaN;
|
|
86
|
-
if (!Number.isFinite(numId)
|
|
138
|
+
if (!Number.isFinite(numId))
|
|
139
|
+
continue;
|
|
140
|
+
// Use uniqueId as the deduplication key when available, fallback to String(numId).
|
|
141
|
+
const stepUniqueId = s.uniqueId || undefined;
|
|
142
|
+
const seenKey = stepUniqueId || String(numId);
|
|
143
|
+
if (seen.has(seenKey))
|
|
87
144
|
continue;
|
|
88
|
-
seen.add(
|
|
89
|
-
|
|
145
|
+
seen.add(seenKey);
|
|
146
|
+
// Prefer uniqueId-based meta lookup (correct stepNumber for reused stepIds across groups).
|
|
147
|
+
const meta = (stepUniqueId ? metaByUniqueId.get(stepUniqueId) : undefined) ?? metaByStepId.get(numId);
|
|
90
148
|
if (meta && matchesSearch(meta)) {
|
|
91
149
|
out.push({
|
|
92
150
|
id: String(numId),
|
|
93
151
|
stepId: numId,
|
|
152
|
+
uniqueId: stepUniqueId,
|
|
94
153
|
stepNumber: meta.stepNumber,
|
|
95
154
|
description: this.stripHtml(meta.label || ('Step ' + meta.stepNumber)),
|
|
96
155
|
status: meta.status,
|
|
@@ -125,19 +184,24 @@ export class JumpToStepModalComponent {
|
|
|
125
184
|
// Add the branch step itself (ELSE IF / ELSE)
|
|
126
185
|
const branchRawId = branchData?.id ?? branchData?.step_id;
|
|
127
186
|
const branchNumId = branchRawId != null ? Number(branchRawId) : NaN;
|
|
128
|
-
if (Number.isFinite(branchNumId)
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
187
|
+
if (Number.isFinite(branchNumId)) {
|
|
188
|
+
const branchUniqueId = branchData.uniqueId || undefined;
|
|
189
|
+
const branchSeenKey = branchUniqueId || String(branchNumId);
|
|
190
|
+
if (!seen.has(branchSeenKey)) {
|
|
191
|
+
seen.add(branchSeenKey);
|
|
192
|
+
const branchMeta = (branchUniqueId ? metaByUniqueId.get(branchUniqueId) : undefined) ?? metaByStepId.get(branchNumId);
|
|
193
|
+
if (branchMeta && matchesSearch(branchMeta)) {
|
|
194
|
+
out.push({
|
|
195
|
+
id: String(branchNumId),
|
|
196
|
+
stepId: branchNumId,
|
|
197
|
+
uniqueId: branchUniqueId,
|
|
198
|
+
stepNumber: branchMeta.stepNumber,
|
|
199
|
+
description: this.stripHtml(branchMeta.label || ('Step ' + branchMeta.stepNumber)),
|
|
200
|
+
status: branchMeta.status,
|
|
201
|
+
isPrerequisite: branchMeta.isPrerequisite,
|
|
202
|
+
groupName: branchMeta.groupName,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
141
205
|
}
|
|
142
206
|
}
|
|
143
207
|
// Recurse into branch children
|
|
@@ -292,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
292
356
|
}], onSelect: [{
|
|
293
357
|
type: Output
|
|
294
358
|
}] } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQStDLE1BQU0sZUFBZSxDQUFDOzs7OztBQXVDcEgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUVuRCxnQ0FBZ0M7UUFDdkIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVqQyxrQkFBa0I7UUFDVCxVQUFLLEdBQVcsY0FBYyxDQUFDO1FBRXhDLHVGQUF1RjtRQUM5RSxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUV0QyxxR0FBcUc7UUFDNUYsc0JBQWlCLEdBQTRCLEVBQUUsQ0FBQztRQUV6RCxrSEFBa0g7UUFDekcsY0FBUyxHQUF5QixFQUFFLENBQUM7UUFFOUMsOEJBQThCO1FBQ3JCLHNCQUFpQixHQUFXLG1DQUFtQyxDQUFDO1FBRXpFLDhCQUE4QjtRQUNyQiwwQkFBcUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUUxRCwyQkFBMkI7UUFDbEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEMsZ0NBQWdDO1FBQ3ZCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRXRDLGdFQUFnRTtRQUN2RCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFM0MscUNBQXFDO1FBQ3JDLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUVyQyw4RUFB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UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdHQUFnRztJQUNoRyxPQUFPLENBQUMsS0FBc0I7UUFDNUIsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLElBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOztxSEE3UlUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaWdCQ3ZDckMsbTZOQWdJQTsyRkR6RmEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHdCQUF3QixRQUc1QixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7d0dBTXJCLE1BQU07c0JBQWQsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFlSSxPQUFPO3NCQUFoQixNQUFNO2dCQUdHLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFN0ZXBJdGVtU3RhdHVzID0gJ3Bhc3NlZCcgfCAnY3VycmVudCcgfCAncGVuZGluZycgfCAnZmFpbGVkJyB8ICdydW5uaW5nJyB8ICdza2lwcGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBKdW1wVG9TdGVwSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHN0ZXBOdW1iZXI6IHN0cmluZyB8IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiBTdGVwSXRlbVN0YXR1cztcbiAgLyoqIFN0ZXAgaWQgZm9yIHNlbGVjdGlvbi4gV2hlbiBtaXNzaW5nLCBkZXJpdmVkIGZyb20gaWQuICovXG4gIHN0ZXBJZD86IG51bWJlcjtcbiAgLyoqIE9wdGlvbmFsIGZsYWcgdG8gaW5kaWNhdGUgdGhpcyBpdGVtIHJlcHJlc2VudHMgYSBwcmVyZXF1aXNpdGUgc3RlcC4gKi9cbiAgaXNQcmVyZXF1aXNpdGU/OiBib29sZWFuO1xuICAvKiogT3B0aW9uYWwgZ3JvdXAgbmFtZSAoZS5nLiBwcmVyZXF1aXNpdGUgdGVzdCBjYXNlIG5hbWUpIGZvciB2aXN1YWwgZ3JvdXBpbmcuICovXG4gIGdyb3VwTmFtZT86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBBbGxvdyBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKdW1wVG9TdGVwU3RlcE1ldGEge1xuICBzdGVwSWQ6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgc3RlcE51bWJlcjogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBJdGVtU3RhdHVzO1xuICBpc1ByZXJlcXVpc2l0ZT86IGJvb2xlYW47XG4gIGdyb3VwTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21iaW5lZFRlc3RDYXNlR3JvdXAge1xuICBuYW1lPzogc3RyaW5nO1xuICBpc1ByZXJlcXVpc2l0ZT86IGJvb2xlYW47XG4gIHN0ZXBzPzogYW55W107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1qdW1wLXRvLXN0ZXAtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIEp1bXBUb1N0ZXBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvKiogV2hldGhlciB0aGUgbW9kYWwgaXMgb3BlbiAqL1xuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTW9kYWwgdGl0bGUgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdKdW1wIHRvIFN0ZXAnO1xuXG4gIC8qKiBMaXN0IG9mIHN0ZXAgaXRlbXMgdG8gZGlzcGxheSAobGVnYWN5OyB1c2VkIHdoZW4gY29tYmluZWRUZXN0Q2FzZXMgbm90IHByb3ZpZGVkKSAqL1xuICBASW5wdXQoKSBpdGVtczogSnVtcFRvU3RlcEl0ZW1bXSA9IFtdO1xuXG4gIC8qKiBDb21iaW5lZCB0ZXN0IGNhc2VzIGZvciBhY2NvcmRpb24gbGF5b3V0LiBXaGVuIHByb3ZpZGVkIHdpdGggc3RlcHNNZXRhLCB1c2VkIGluc3RlYWQgb2YgaXRlbXMuICovXG4gIEBJbnB1dCgpIGNvbWJpbmVkVGVzdENhc2VzOiBDb21iaW5lZFRlc3RDYXNlR3JvdXBbXSA9IFtdO1xuXG4gIC8qKiBQcmUtY29tcHV0ZWQgc3RlcCBtZXRhZGF0YSAoc3RlcE51bWJlciwgc3RhdHVzLCBldGMuKSBmb3IgZWFjaCBzdGVwLiBSZXF1aXJlZCB3aGVuIHVzaW5nIGNvbWJpbmVkVGVzdENhc2VzLiAqL1xuICBASW5wdXQoKSBzdGVwc01ldGE6IEp1bXBUb1N0ZXBTdGVwTWV0YVtdID0gW107XG5cbiAgLyoqIFNlYXJjaCBwbGFjZWhvbGRlciB0ZXh0ICovXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VhcmNoIHN0ZXBzIGJ5IG5hbWUgb3IgbnVtYmVyLi4uJztcblxuICAvKiogU2VhcmNoIEVtcHR5IFN0YXRlIHRleHQgKi9cbiAgQElucHV0KCkgc2VhcmNoRW1wdHlTdGF0ZUxhYmVsOiBzdHJpbmcgPSAnTm8gc3RlcHMgZm91bmQnO1xuXG4gIC8qKiBDdXJyZW50IHNlYXJjaCB2YWx1ZSAqL1xuICBASW5wdXQoKSBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgc2VhcmNoIGlzIGVuYWJsZWQgKi9cbiAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHByZXJlcXVpc2l0ZSBzdGVwcyBzZWN0aW9uLiBEZWZhdWx0IHRydWUuICovXG4gIEBJbnB1dCgpIHNob3dQcmVyZXF1aXNpdGVzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogRmlsdGVyZWQgaXRlbXMgYmFzZWQgb24gc2VhcmNoICovXG4gIGZpbHRlcmVkSXRlbXM6IEp1bXBUb1N0ZXBJdGVtW10gPSBbXTtcblxuICAvKiogUHJlcmVxdWlzaXRlIGdyb3VwcyBmb3IgYWNjb3JkaW9uOiBlYWNoIHByZXJlcXVpc2l0ZSB0ZXN0IGNhc2UgYnkgbmFtZS4gKi9cbiAgcHJlcmVxdWlzaXRlR3JvdXBzOiB7IG5hbWU6IHN0cmluZzsgaXRlbXM6IEp1bXBUb1N0ZXBJdGVtW10gfVtdID0gW107XG5cbiAgLyoqIEZpbHRlcmVkIG5vbi1wcmVyZXF1aXNpdGUgc3RlcCBpdGVtcy4gKi9cbiAgZmlsdGVyZWRTdGVwSXRlbXM6IEp1bXBUb1N0ZXBJdGVtW10gPSBbXTtcblxuICAvKiogRXhwYW5kZWQgcHJlcmVxdWlzaXRlIGdyb3VwIG5hbWVzLiBXaGVuIGVtcHR5LCBhbGwgZ3JvdXBzIGFyZSBjb2xsYXBzZWQgYnkgZGVmYXVsdC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBleHBhbmRlZEdyb3VwTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIG1vZGFsIHNob3VsZCBiZSBjbG9zZWQgKi9cbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBzZWFyY2ggdmFsdWUgY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGEgc3RlcCBpdGVtIGlzIHNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SnVtcFRvU3RlcEl0ZW0+KCk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddIHx8IGNoYW5nZXNbJ2NvbWJpbmVkVGVzdENhc2VzJ10gfHwgY2hhbmdlc1snc3RlcHNNZXRhJ10gfHwgY2hhbmdlc1snc2VhcmNoVmFsdWUnXSkge1xuICAgICAgdGhpcy51cGRhdGVGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJlZEl0ZW1zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbWJpbmVkVGVzdENhc2VzPy5sZW5ndGggJiYgdGhpcy5zdGVwc01ldGE/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5idWlsZEZyb21Db21iaW5lZFRlc3RDYXNlcygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmJ1aWxkRnJvbUl0ZW1zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5wcmVyZXF1aXNpdGVHcm91cHMgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWRTdGVwSXRlbXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRnJvbUNvbWJpbmVkVGVzdENhc2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldGFCeVN0ZXBJZCA9IG5ldyBNYXA8bnVtYmVyLCBKdW1wVG9TdGVwU3RlcE1ldGE+KCk7XG4gICAgdGhpcy5zdGVwc01ldGEuZm9yRWFjaChtID0+IG1ldGFCeVN0ZXBJZC5zZXQobS5zdGVwSWQsIG0pKTtcblxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgY29uc3QgbWF0Y2hlc1NlYXJjaCA9IChtZXRhOiBKdW1wVG9TdGVwU3RlcE1ldGEpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghc2VhcmNoVGVybSkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBTdHJpbmcobWV0YS5zdGVwTnVtYmVyKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8XG4gICAgICAgIChtZXRhLmxhYmVsIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXG4gICAgICApO1xuICAgIH07XG5cbiAgICB0aGlzLnByZXJlcXVpc2l0ZUdyb3VwcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRTdGVwSXRlbXMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5jb21iaW5lZFRlc3RDYXNlcykge1xuICAgICAgaWYgKCFncm91cD8uc3RlcHM/Lmxlbmd0aCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IChncm91cC5uYW1lIHx8ICdQcmVyZXF1aXNpdGUnKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgaXNQcmVyZXEgPSAhIWdyb3VwLmlzUHJlcmVxdWlzaXRlO1xuXG4gICAgICBjb25zdCBjb2xsZWN0U3RlcHMgPSAoc3RlcHM6IGFueVtdLCBzZWVuOiBTZXQ8bnVtYmVyPik6IEp1bXBUb1N0ZXBJdGVtW10gPT4ge1xuICAgICAgICBjb25zdCBvdXQ6IEp1bXBUb1N0ZXBJdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHN0ZXBzKSB7XG4gICAgICAgICAgaWYgKCFzKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBpZCA9IHM/LmlkID8/IHM/LnN0ZXBfaWQ7XG4gICAgICAgICAgY29uc3QgbnVtSWQgPSBpZCAhPSBudWxsID8gTnVtYmVyKGlkKSA6IE5hTjtcbiAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1JZCkgfHwgc2Vlbi5oYXMobnVtSWQpKSBjb250aW51ZTtcbiAgICAgICAgICBzZWVuLmFkZChudW1JZCk7XG5cbiAgICAgICAgICBjb25zdCBtZXRhID0gbWV0YUJ5U3RlcElkLmdldChudW1JZCk7XG4gICAgICAgICAgaWYgKG1ldGEgJiYgbWF0Y2hlc1NlYXJjaChtZXRhKSkge1xuICAgICAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgICAgICBpZDogU3RyaW5nKG51bUlkKSxcbiAgICAgICAgICAgICAgc3RlcElkOiBudW1JZCxcbiAgICAgICAgICAgICAgc3RlcE51bWJlcjogbWV0YS5zdGVwTnVtYmVyLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwobWV0YS5sYWJlbCB8fCAoJ1N0ZXAgJyArIG1ldGEuc3RlcE51bWJlcikpLFxuICAgICAgICAgICAgICBzdGF0dXM6IG1ldGEuc3RhdHVzLFxuICAgICAgICAgICAgICBpc1ByZXJlcXVpc2l0ZTogbWV0YS5pc1ByZXJlcXVpc2l0ZSxcbiAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBtZXRhLmdyb3VwTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZvciBzdGVwcyB3aXRoIGNvbmRpdGlvbkRhdGEgKENPTkRJVElPTl9JRiksIHNraXAgZ2VuZXJpYyBjaGlsZHJlbi9uZXN0ZWRTdGVwc1xuICAgICAgICAgIC8vICh0aGV5IG1heSBjb250YWluIGFsbCBicmFuY2ggc3RlcHMgaW4gYSBmbGF0IHN0cnVjdHVyZSBjYXVzaW5nIGR1cGxpY2F0ZXMgd2l0aCB3cm9uZyBudW1iZXJzKS5cbiAgICAgICAgICAvLyBVc2UgY29uZGl0aW9uRGF0YSBleGNsdXNpdmVseSBmb3IgY29uZGl0aW9uIHN0ZXBzLlxuICAgICAgICAgIGNvbnN0IGhhc0NvbmRpdGlvbkRhdGEgPSBzLmNvbmRpdGlvbkRhdGEgJiYgdHlwZW9mIHMuY29uZGl0aW9uRGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMocy5jb25kaXRpb25EYXRhKS5sZW5ndGggPiAwO1xuICAgICAgICAgIGlmICghaGFzQ29uZGl0aW9uRGF0YSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhcnIgb2YgW3MuY2hpbGRyZW4gfHwgW10sIHMubmVzdGVkU3RlcHMgfHwgW10sIHMuc3RlcHMgfHwgW11dKSB7XG4gICAgICAgICAgICAgIGlmIChhcnI/Lmxlbmd0aCkgb3V0LnB1c2goLi4uY29sbGVjdFN0ZXBzKGFyciwgc2VlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMuYnJhbmNoZXMgJiYgQXJyYXkuaXNBcnJheShzLmJyYW5jaGVzKSkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGIgb2Ygcy5icmFuY2hlcykge1xuICAgICAgICAgICAgICAgIGlmIChiPy5zdWJTdGVwcz8ubGVuZ3RoKSBvdXQucHVzaCguLi5jb2xsZWN0U3RlcHMoYi5zdWJTdGVwcywgc2VlbikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYXNDb25kaXRpb25EYXRhKSB7XG4gICAgICAgICAgICBjb25zdCBicmFuY2hJZHM6IHN0cmluZ1tdID0gKHMuaWZDaGlsZERhdGEgJiYgcy5pZkNoaWxkRGF0YS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICA/IHMuaWZDaGlsZERhdGEubWFwKFN0cmluZylcbiAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhzLmNvbmRpdGlvbkRhdGEpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBicmFuY2hJZCBvZiBicmFuY2hJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgYnJhbmNoRGF0YSA9IChzLmNvbmRpdGlvbkRhdGEgYXMgYW55KVticmFuY2hJZF07XG4gICAgICAgICAgICAgIGlmICghYnJhbmNoRGF0YSkgY29udGludWU7XG4gICAgICAgICAgICAgIC8vIEFkZCB0aGUgYnJhbmNoIHN0ZXAgaXRzZWxmIChFTFNFIElGIC8gRUxTRSlcbiAgICAgICAgICAgICAgY29uc3QgYnJhbmNoUmF3SWQgPSBicmFuY2hEYXRhPy5pZCA/PyBicmFuY2hEYXRhPy5zdGVwX2lkO1xuICAgICAgICAgICAgICBjb25zdCBicmFuY2hOdW1JZCA9IGJyYW5jaFJhd0lkICE9IG51bGwgPyBOdW1iZXIoYnJhbmNoUmF3SWQpIDogTmFOO1xuICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGJyYW5jaE51bUlkKSAmJiAhc2Vlbi5oYXMoYnJhbmNoTnVtSWQpKSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5hZGQoYnJhbmNoTnVtSWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaE1ldGEgPSBtZXRhQnlTdGVwSWQuZ2V0KGJyYW5jaE51bUlkKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJhbmNoTWV0YSAmJiBtYXRjaGVzU2VhcmNoKGJyYW5jaE1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICBvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBTdHJpbmcoYnJhbmNoTnVtSWQpLFxuICAgICAgICAgICAgICAgICAgICBzdGVwSWQ6IGJyYW5jaE51bUlkLFxuICAgICAgICAgICAgICAgICAgICBzdGVwTnVtYmVyOiBicmFuY2hNZXRhLnN0ZXBOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnN0cmlwSHRtbChicmFuY2hNZXRhLmxhYmVsIHx8ICgnU3RlcCAnICsgYnJhbmNoTWV0YS5zdGVwTnVtYmVyKSksXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogYnJhbmNoTWV0YS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIGlzUHJlcmVxdWlzaXRlOiBicmFuY2hNZXRhLmlzUHJlcmVxdWlzaXRlLFxuICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IGJyYW5jaE1ldGEuZ3JvdXBOYW1lLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaW50byBicmFuY2ggY2hpbGRyZW5cbiAgICAgICAgICAgICAgY29uc3QgYnJhbmNoQ2hpbGRyZW46IGFueVtdID0gYnJhbmNoRGF0YS5jaGlsZHJlbiB8fCBicmFuY2hEYXRhLm5lc3RlZFN0ZXBzIHx8IFtdO1xuICAgICAgICAgICAgICBpZiAoYnJhbmNoQ2hpbGRyZW4ubGVuZ3RoKSBvdXQucHVzaCguLi5jb2xsZWN0U3RlcHMoYnJhbmNoQ2hpbGRyZW4sIHNlZW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gY29sbGVjdFN0ZXBzKGdyb3VwLnN0ZXBzLCBzZWVuKTtcblxuICAgICAgaWYgKGlzUHJlcmVxICYmIHRoaXMuc2hvd1ByZXJlcXVpc2l0ZXMpIHtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucHJlcmVxdWlzaXRlR3JvdXBzLnB1c2goeyBuYW1lOiBncm91cE5hbWUsIGl0ZW1zIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFpc1ByZXJlcSkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkU3RlcEl0ZW1zLnB1c2goLi4uaXRlbXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMucHJlcmVxdWlzaXRlR3JvdXBzLnJlZHVjZTxKdW1wVG9TdGVwSXRlbVtdPigoYWNjLCBnKSA9PiBhY2MuY29uY2F0KGcuaXRlbXMpLCBbXSksXG4gICAgICAuLi50aGlzLmZpbHRlcmVkU3RlcEl0ZW1zLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRnJvbUl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBzdGVwTnVtYmVyTWF0Y2ggPSBTdHJpbmcoaXRlbS5zdGVwTnVtYmVyKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbk1hdGNoID0gKGl0ZW0uZGVzY3JpcHRpb24gfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG4gICAgICAgIHJldHVybiBzdGVwTnVtYmVyTWF0Y2ggfHwgZGVzY3JpcHRpb25NYXRjaDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXJlcUl0ZW1zID0gdGhpcy5maWx0ZXJlZEl0ZW1zLmZpbHRlcihpID0+IGkuaXNQcmVyZXF1aXNpdGUgPT09IHRydWUpO1xuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBKdW1wVG9TdGVwSXRlbVtdPigpO1xuICAgIHByZXJlcUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gKGl0ZW0uZ3JvdXBOYW1lIHx8ICdQcmVyZXF1aXNpdGUnKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBncm91cHMuZ2V0KG5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nKSBleGlzdGluZy5wdXNoKGl0ZW0pO1xuICAgICAgZWxzZSBncm91cHMuc2V0KG5hbWUsIFtpdGVtXSk7XG4gICAgfSk7XG4gICAgdGhpcy5wcmVyZXF1aXNpdGVHcm91cHMgPSBBcnJheS5mcm9tKGdyb3Vwcy5lbnRyaWVzKCkpLm1hcCgoW25hbWUsIGl0ZW1zXSkgPT4gKHsgbmFtZSwgaXRlbXMgfSkpO1xuICAgIHRoaXMuZmlsdGVyZWRTdGVwSXRlbXMgPSB0aGlzLmZpbHRlcmVkSXRlbXMuZmlsdGVyKGkgPT4gaS5pc1ByZXJlcXVpc2l0ZSAhPT0gdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHN0cmlwSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaHRtbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiAoZGl2LnRleHRDb250ZW50IHx8IGRpdi5pbm5lclRleHQgfHwgJycpLnRyaW0oKTtcbiAgfVxuXG4gIGlzR3JvdXBFeHBhbmRlZChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZEdyb3VwTmFtZXMuaGFzKG5hbWUpO1xuICB9XG5cbiAgdG9nZ2xlR3JvdXAobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRHcm91cE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgdGhpcy5leHBhbmRlZEdyb3VwTmFtZXMuZGVsZXRlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkR3JvdXBOYW1lcy5hZGQobmFtZSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25TZWFyY2hWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRJdGVtcygpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBKdW1wVG9TdGVwSXRlbSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdChpdGVtKTtcbiAgfVxuXG4gIG9uQmFja2Ryb3BDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBcbiAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0IHx8IHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ21vZGFsLWJhY2tkcm9wJykpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgZ2V0U3RhdHVzQmFkZ2VDbGFzc2VzKHN0YXR1czogU3RlcEl0ZW1TdGF0dXMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2NxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC1bNnB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXB5LVs0cHhdIGNxYS1weC0zJztcbiAgICBcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAncGFzc2VkJzpcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VDbGFzc2VzfSBjcWEtYmctZ3JlZW4tMTAwIGNxYS10ZXh0LWdyZWVuLTgwMGA7XG4gICAgICBjYXNlICdjdXJyZW50JzpcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VDbGFzc2VzfSBjcWEtYmctYmx1ZS0xMDAgY3FhLXRleHQtYmx1ZS04MDBgO1xuICAgICAgY2FzZSAncGVuZGluZyc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWdyYXktMTAwIGNxYS10ZXh0LWdyYXktODAwYDtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLXJlZC0xMDAgY3FhLXRleHQtcmVkLTgwMGA7XG4gICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VDbGFzc2VzfSBjcWEtYmctYmx1ZS0xMDAgY3FhLXRleHQtYmx1ZS04MDBgO1xuICAgICAgY2FzZSAnc2tpcHBlZCc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWdyYXktMTAwIGNxYS10ZXh0LWdyYXktODAwYDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWdyYXktMTAwIGNxYS10ZXh0LWdyYXktODAwYDtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcyAmJiB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBpdGVtc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJdGVtcyA/IHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggOiAwO1xuICB9XG5cbiAgLyoqIENvbnZlcnQgc3RlcE51bWJlciB0byBzdHJpbmcgZm9yIHRoZSBiYWRnZSBsYWJlbCAoU3RyaW5nKCkgaXMgbm90IGF2YWlsYWJsZSBpbiB0ZW1wbGF0ZXMpICovXG4gIHRvTGFiZWwodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnICsgdmFsdWU7XG4gIH1cblxuICB0cmFja0J5SXRlbUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IEp1bXBUb1N0ZXBJdGVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxufVxuXG4iLCI8ZGl2ICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcCBjcWEtZml4ZWQgY3FhLWluc2V0LTAgY3FhLWJnLWJsYWNrIGNxYS1iZy1vcGFjaXR5LTUwIGNxYS16LTUwIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1wLTRcIlxuICAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKCRldmVudClcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLXJvdW5kZWQtbGcgY3FhLWJnLXdoaXRlIGNxYS1zaGFkb3ctbGcgIGNxYS13LWZ1bGwgY3FhLW1heC13LVs1MDBweF0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtZmxleCBjcWEtZmxleC1jb2xcIlxuICAgIHN0eWxlPVwiYm94LXNoYWRvdzogMHB4IDhweCA4cHggLTRweCAjMTAxODI4MDg7IG1heC1oZWlnaHQ6IDkwdmg7XCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1weC02IGNxYS1wdC02IGNxYS1wYi00XCI+XG4gICAgICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1iYXNlIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTYgY3FhLWgtNiBjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10ZXh0LWdyYXktNTAwIGhvdmVyOmNxYS10ZXh0LWdyYXktNzAwIGNxYS10cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbG9zZSgpXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIG1vZGFsXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdy01ICFjcWEtaC01ICFjcWEtdGV4dC1bMjBweF0gIWNxYS1ibG9jayAhY3FhLWxlYWRpbmctbm9uZVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG5cbiAgICA8IS0tIFNlYXJjaCBCYXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImVuYWJsZVNlYXJjaFwiIGNsYXNzPVwiY3FhLXB4LTYgY3FhLXBiLTRcIj5cbiAgICAgIDxjcWEtc2VhcmNoLWJhclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25TZWFyY2hWYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L2NxYS1zZWFyY2gtYmFyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEaXZpZGVyIGJlbG93IHNlYXJjaCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLS1teC0yIGNxYS13LVtjYWxjKDEwMCUrMXJlbSldIGNxYS1mbGV4LXNocmluay0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWgtcHggY3FhLXctZnVsbCBjcWEtYmctWyNFNUU3RUJdXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTdGVwcyBMaXN0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLW92ZXJmbG93LXgtaGlkZGVuIGNxYS1weC02IGNxYS1wdC0yXCIgc3R5bGU9XCJzY3JvbGxiYXItd2lkdGg6IHRoaW47XCI+XG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiFoYXNJdGVtc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0xMiBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtdGV4dC1ncmF5LTUwMCBjcWEtZm9udC1pbnRlclwiPlxuICAgICAgICAge3tzZWFyY2hFbXB0eVN0YXRlTGFiZWwgfHwgJ05vIERhdGEgZm91bmQuJ319XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFN0ZXBzIExpc3QgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaGFzSXRlbXNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cblxuICAgICAgICA8IS0tIFByZXJlcXVpc2l0ZSBzdGVwczogYWNjb3JkaW9uIGJ5IHRlc3QgY2FzZSBuYW1lIChzdHlsZWQgbGlrZSBjcWEtbWFpbi1zdGVwLWNvbGxhcHNlKSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQcmVyZXF1aXNpdGVzICYmIHByZXJlcXVpc2l0ZUdyb3Vwcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLW1iLTFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHByZXJlcXVpc2l0ZUdyb3Vwc1wiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtbXQtMiBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0zIGNxYS1weC0zIGNxYS1weS0yIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtYmctWyNFRUYyRkZdIGNxYS1yb3VuZGVkLVs0cHhdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0M2RDJGRl0gY3FhLWJvcmRlci1zb2xpZCBjcWEtdy1mdWxsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JvdXAoZ3JvdXAubmFtZSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBbY2xhc3MuY3FhLXJvdGF0ZS0xODBdPVwiaXNHcm91cEV4cGFuZGVkKGdyb3VwLm5hbWUpXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA2TDggMTBMMTIgNlwiIHN0cm9rZT1cIiM0RjM5RjZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxN3B4XSBjcWEtdGV4dC1bIzMxMkM4NV0gY3FhLWZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNHcm91cEV4cGFuZGVkKGdyb3VwLm5hbWUpXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1weC0yLjVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5pdGVtczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1JZFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXB4LTMgY3FhLXB5LTMgY3FhLXctZnVsbCBjcWEtdGV4dC1sZWZ0IGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgaG92ZXI6Y3FhLWJnLWdyYXktNTAgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBjcWEtcm91bmRlZC1tZCBjcWEtbWluLXctMFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1yb3VuZGVkLVs2cHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LW1lZGl1bSBjcWEtcHktWzRweF0gY3FhLXB4LVsxMHB4XSBjcWEtZmxleC1zaHJpbmstMCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0UyRThGMF0gY3FhLXRleHQtWyMzRjQzRUVdIGNxYS1iZy1bI0Y4RjlGRl1cIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzJweDtcIj57eyBpdGVtLnN0ZXBOdW1iZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtc20gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1mb250LWludGVyIGNxYS1mb250LW5vcm1hbCBjcWEtbGVhZGluZy1bMjBweF0gY3FhLW1pbi13LTAgY3FhLXRydW5jYXRlXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtc2hyaW5rLTBcIiBbbmdDbGFzc109XCJnZXRTdGF0dXNCYWRnZUNsYXNzZXMoaXRlbS5zdGF0dXMpXCI+e3sgaXRlbS5zdGF0dXMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkU3RlcEl0ZW1zPy5sZW5ndGhcIiBjbGFzcz1cImNxYS1oLXB4IGNxYS13LWZ1bGwgY3FhLWJnLVsjRTVFN0VCXSBjcWEtbXktMSBjcWEtbWItMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBNYWluIHRlc3Qgc3RlcHMgc2VjdGlvbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkU3RlcEl0ZW1zPy5sZW5ndGhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLW1iLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdXBwZXJjYXNlIGNxYS10cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgIFRlc3Qgc3RlcHNcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFN0ZXBJdGVtczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1JZFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC0zIGNxYS1weS0zIGNxYS13LWZ1bGwgY3FhLXRleHQtbGVmdCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGhvdmVyOmNxYS1iZy1ncmF5LTUwIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLXJvdW5kZWQtbWQgY3FhLW1pbi13LTBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cblxuICAgICAgICAgICAgICA8IS0tIFN0ZXAgTnVtYmVyIEJhZGdlIC0tPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC1bNnB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXB5LVs0cHhdIGNxYS1weC1bMTBweF0gY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFMkU4RjBdIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtYmctWyNGOEY5RkZdXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzJweDtcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnN0ZXBOdW1iZXIgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gU3RlcCBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC0xIGNxYS10ZXh0LXNtIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtZm9udC1pbnRlciBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1taW4tdy0wIGNxYS10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDwhLS0gU3RhdHVzIEJhZGdlIC0tPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQmFkZ2VDbGFzc2VzKGl0ZW0uc3RhdHVzKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uc3RhdHVzIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBGb290ZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cImhhc0l0ZW1zXCIgY2xhc3M9XCJjcWEtcHgtNiBjcWEtcGItNSBjcWEtcHQtM1wiPlxuICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLWZvbnQtaW50ZXIgY3FhLWZvbnQtbm9ybWFsXCI+XG4gICAgICAgIHt7IGl0ZW1zQ291bnQgfX0ge3sgaXRlbXNDb3VudCA9PT0gMSA/ICdzdGVwJyA6ICdzdGVwcycgfX0gZm91bmRcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
359
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQStDLE1BQU0sZUFBZSxDQUFDOzs7OztBQTJDcEgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUVuRCxnQ0FBZ0M7UUFDdkIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVqQyxrQkFBa0I7UUFDVCxVQUFLLEdBQVcsY0FBYyxDQUFDO1FBRXhDLHVGQUF1RjtRQUM5RSxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUV0QyxxR0FBcUc7UUFDNUYsc0JBQWlCLEdBQTRCLEVBQUUsQ0FBQztRQUV6RCxrSEFBa0g7UUFDekcsY0FBUyxHQUF5QixFQUFFLENBQUM7UUFFOUMsOEJBQThCO1FBQ3JCLHNCQUFpQixHQUFXLG1DQUFtQyxDQUFDO1FBRXpFLDhCQUE4QjtRQUNyQiwwQkFBcUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUUxRCwyQkFBMkI7UUFDbEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEMsZ0NBQWdDO1FBQ3ZCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRXRDLGdFQUFnRTtRQUN2RCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFM0MscUNBQXFDO1FBQ3JDLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUVyQyw4RUFB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QUM7O3FIQTlWVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpZ0JDM0NyQyxtNk5BZ0lBOzJGRHJGYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usd0JBQXdCLFFBRzVCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTt3R0FNckIsTUFBTTtzQkFBZCxLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQWVJLE9BQU87c0JBQWhCLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTTtnQkFHRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgU3RlcEl0ZW1TdGF0dXMgPSAncGFzc2VkJyB8ICdjdXJyZW50JyB8ICdwZW5kaW5nJyB8ICdmYWlsZWQnIHwgJ3J1bm5pbmcnIHwgJ3NraXBwZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEp1bXBUb1N0ZXBJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgc3RlcE51bWJlcjogc3RyaW5nIHwgbnVtYmVyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXM6IFN0ZXBJdGVtU3RhdHVzO1xuICAvKiogU3RlcCBpZCBmb3Igc2VsZWN0aW9uLiBXaGVuIG1pc3NpbmcsIGRlcml2ZWQgZnJvbSBpZC4gKi9cbiAgc3RlcElkPzogbnVtYmVyO1xuICAvKiogU3RhYmxlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHN0ZXAgaW5zdGFuY2UuIFByZWZlcnJlZCBvdmVyIHN0ZXBJZCBmb3Igc2VsZWN0aW9uLiAqL1xuICB1bmlxdWVJZD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGZsYWcgdG8gaW5kaWNhdGUgdGhpcyBpdGVtIHJlcHJlc2VudHMgYSBwcmVyZXF1aXNpdGUgc3RlcC4gKi9cbiAgaXNQcmVyZXF1aXNpdGU/OiBib29sZWFuO1xuICAvKiogT3B0aW9uYWwgZ3JvdXAgbmFtZSAoZS5nLiBwcmVyZXF1aXNpdGUgdGVzdCBjYXNlIG5hbWUpIGZvciB2aXN1YWwgZ3JvdXBpbmcuICovXG4gIGdyb3VwTmFtZT86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBBbGxvdyBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKdW1wVG9TdGVwU3RlcE1ldGEge1xuICBzdGVwSWQ6IG51bWJlcjtcbiAgLyoqIFN0YWJsZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBzdGVwIGluc3RhbmNlIChlLmcuIFRTLVJPT1Qt4oCmKS4gUmVxdWlyZWQgd2hlbiB0aGUgc2FtZSBzdGVwSWQgYXBwZWFycyBpbiBtdWx0aXBsZSBncm91cHMuICovXG4gIHVuaXF1ZUlkPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBzdGVwTnVtYmVyOiBzdHJpbmc7XG4gIHN0YXR1czogU3RlcEl0ZW1TdGF0dXM7XG4gIGlzUHJlcmVxdWlzaXRlPzogYm9vbGVhbjtcbiAgZ3JvdXBOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbWJpbmVkVGVzdENhc2VHcm91cCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGlzUHJlcmVxdWlzaXRlPzogYm9vbGVhbjtcbiAgc3RlcHM/OiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWp1bXAtdG8tc3RlcC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9qdW1wLXRvLXN0ZXAtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgSnVtcFRvU3RlcE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBtb2RhbCBpcyBvcGVuICovXG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBNb2RhbCB0aXRsZSAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0p1bXAgdG8gU3RlcCc7XG5cbiAgLyoqIExpc3Qgb2Ygc3RlcCBpdGVtcyB0byBkaXNwbGF5IChsZWdhY3k7IHVzZWQgd2hlbiBjb21iaW5lZFRlc3RDYXNlcyBub3QgcHJvdmlkZWQpICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBKdW1wVG9TdGVwSXRlbVtdID0gW107XG5cbiAgLyoqIENvbWJpbmVkIHRlc3QgY2FzZXMgZm9yIGFjY29yZGlvbiBsYXlvdXQuIFdoZW4gcHJvdmlkZWQgd2l0aCBzdGVwc01ldGEsIHVzZWQgaW5zdGVhZCBvZiBpdGVtcy4gKi9cbiAgQElucHV0KCkgY29tYmluZWRUZXN0Q2FzZXM6IENvbWJpbmVkVGVzdENhc2VHcm91cFtdID0gW107XG5cbiAgLyoqIFByZS1jb21wdXRlZCBzdGVwIG1ldGFkYXRhIChzdGVwTnVtYmVyLCBzdGF0dXMsIGV0Yy4pIGZvciBlYWNoIHN0ZXAuIFJlcXVpcmVkIHdoZW4gdXNpbmcgY29tYmluZWRUZXN0Q2FzZXMuICovXG4gIEBJbnB1dCgpIHN0ZXBzTWV0YTogSnVtcFRvU3RlcFN0ZXBNZXRhW10gPSBbXTtcblxuICAvKiogU2VhcmNoIHBsYWNlaG9sZGVyIHRleHQgKi9cbiAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2ggc3RlcHMgYnkgbmFtZSBvciBudW1iZXIuLi4nO1xuXG4gIC8qKiBTZWFyY2ggRW1wdHkgU3RhdGUgdGV4dCAqL1xuICBASW5wdXQoKSBzZWFyY2hFbXB0eVN0YXRlTGFiZWw6IHN0cmluZyA9ICdObyBzdGVwcyBmb3VuZCc7XG5cbiAgLyoqIEN1cnJlbnQgc2VhcmNoIHZhbHVlICovXG4gIEBJbnB1dCgpIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAvKiogV2hldGhlciBzZWFyY2ggaXMgZW5hYmxlZCAqL1xuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgcHJlcmVxdWlzaXRlIHN0ZXBzIHNlY3Rpb24uIERlZmF1bHQgdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd1ByZXJlcXVpc2l0ZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBGaWx0ZXJlZCBpdGVtcyBiYXNlZCBvbiBzZWFyY2ggKi9cbiAgZmlsdGVyZWRJdGVtczogSnVtcFRvU3RlcEl0ZW1bXSA9IFtdO1xuXG4gIC8qKiBQcmVyZXF1aXNpdGUgZ3JvdXBzIGZvciBhY2NvcmRpb246IGVhY2ggcHJlcmVxdWlzaXRlIHRlc3QgY2FzZSBieSBuYW1lLiAqL1xuICBwcmVyZXF1aXNpdGVHcm91cHM6IHsgbmFtZTogc3RyaW5nOyBpdGVtczogSnVtcFRvU3RlcEl0ZW1bXSB9W10gPSBbXTtcblxuICAvKiogRmlsdGVyZWQgbm9uLXByZXJlcXVpc2l0ZSBzdGVwIGl0ZW1zLiAqL1xuICBmaWx0ZXJlZFN0ZXBJdGVtczogSnVtcFRvU3RlcEl0ZW1bXSA9IFtdO1xuXG4gIC8qKiBFeHBhbmRlZCBwcmVyZXF1aXNpdGUgZ3JvdXAgbmFtZXMuIFdoZW4gZW1wdHksIGFsbCBncm91cHMgYXJlIGNvbGxhcHNlZCBieSBkZWZhdWx0LiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cGFuZGVkR3JvdXBOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gbW9kYWwgc2hvdWxkIGJlIGNsb3NlZCAqL1xuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHNlYXJjaCB2YWx1ZSBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYSBzdGVwIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgQE91dHB1dCgpIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxKdW1wVG9TdGVwSXRlbT4oKTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gfHwgY2hhbmdlc1snY29tYmluZWRUZXN0Q2FzZXMnXSB8fCBjaGFuZ2VzWydzdGVwc01ldGEnXSB8fCBjaGFuZ2VzWydzZWFyY2hWYWx1ZSddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpbHRlcmVkSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RlcHNNZXRhPy5sZW5ndGgpIHtcbiAgICAgIC8vIHN0ZXBzTWV0YSBpcyB0aGUgcHJlLWNvbXB1dGVkLCBmdWxseS1vcmRlcmVkIGZsYXQgbGlzdCAoaW5jbHVkaW5nIEVMU0UgSUYvRUxTRSBicmFuY2hlc1xuICAgICAgLy8gdGhhdCBhcmUgYWJzZW50IGZyb20gdGhlIGNvbWJpbmVkVGVzdENhc2VzIHRyZWUpLiBVc2UgaXQgZGlyZWN0bHkg4oCUIG5vIHJlLXRyYXZlcnNhbCBuZWVkZWQuXG4gICAgICB0aGlzLmJ1aWxkRnJvbVN0ZXBzTWV0YSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmJ1aWxkRnJvbUl0ZW1zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5wcmVyZXF1aXNpdGVHcm91cHMgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWRTdGVwSXRlbXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKiogQnVpbGQgZmlsdGVyZWRJdGVtcyBkaXJlY3RseSBmcm9tIHN0ZXBzTWV0YSDigJQgdGhlIHByZS1jb21wdXRlZCBvcmRlcmVkIGZsYXQgbGlzdC4gKi9cbiAgcHJpdmF0ZSBidWlsZEZyb21TdGVwc01ldGEoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9ICh0aGlzLnNlYXJjaFZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgIHRoaXMucHJlcmVxdWlzaXRlR3JvdXBzID0gW107XG4gICAgdGhpcy5maWx0ZXJlZFN0ZXBJdGVtcyA9IFtdO1xuXG4gICAgY29uc3QgcHJlcmVxR3JvdXBNYXAgPSBuZXcgTWFwPHN0cmluZywgSnVtcFRvU3RlcEl0ZW1bXT4oKTtcblxuICAgIGZvciAoY29uc3QgbWV0YSBvZiB0aGlzLnN0ZXBzTWV0YSkge1xuICAgICAgaWYgKHNlYXJjaFRlcm0pIHtcbiAgICAgICAgY29uc3QgbnVtTWF0Y2ggPSBTdHJpbmcobWV0YS5zdGVwTnVtYmVyKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgICAgICBjb25zdCBsYWJlbE1hdGNoID0gKG1ldGEubGFiZWwgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG4gICAgICAgIGlmICghbnVtTWF0Y2ggJiYgIWxhYmVsTWF0Y2gpIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpdGVtOiBKdW1wVG9TdGVwSXRlbSA9IHtcbiAgICAgICAgaWQ6IFN0cmluZyhtZXRhLnN0ZXBJZCksXG4gICAgICAgIHN0ZXBJZDogbWV0YS5zdGVwSWQsXG4gICAgICAgIHVuaXF1ZUlkOiBtZXRhLnVuaXF1ZUlkLFxuICAgICAgICBzdGVwTnVtYmVyOiBtZXRhLnN0ZXBOdW1iZXIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnN0cmlwSHRtbChtZXRhLmxhYmVsIHx8ICgnU3RlcCAnICsgbWV0YS5zdGVwTnVtYmVyKSksXG4gICAgICAgIHN0YXR1czogbWV0YS5zdGF0dXMsXG4gICAgICAgIGlzUHJlcmVxdWlzaXRlOiBtZXRhLmlzUHJlcmVxdWlzaXRlLFxuICAgICAgICBncm91cE5hbWU6IG1ldGEuZ3JvdXBOYW1lLFxuICAgICAgfTtcblxuICAgICAgaWYgKG1ldGEuaXNQcmVyZXF1aXNpdGUgJiYgdGhpcy5zaG93UHJlcmVxdWlzaXRlcykge1xuICAgICAgICBjb25zdCBuYW1lID0gKG1ldGEuZ3JvdXBOYW1lIHx8ICdQcmVyZXF1aXNpdGUnKS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHByZXJlcUdyb3VwTWFwLmdldChuYW1lKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nKSBleGlzdGluZy5wdXNoKGl0ZW0pO1xuICAgICAgICBlbHNlIHByZXJlcUdyb3VwTWFwLnNldChuYW1lLCBbaXRlbV0pO1xuICAgICAgfSBlbHNlIGlmICghbWV0YS5pc1ByZXJlcXVpc2l0ZSkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkU3RlcEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcmVyZXF1aXNpdGVHcm91cHMgPSBBcnJheS5mcm9tKHByZXJlcUdyb3VwTWFwLmVudHJpZXMoKSkubWFwKChbbmFtZSwgaXRlbXNdKSA9PiAoeyBuYW1lLCBpdGVtcyB9KSk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5wcmVyZXF1aXNpdGVHcm91cHMucmVkdWNlPEp1bXBUb1N0ZXBJdGVtW10+KChhY2MsIGcpID0+IGFjYy5jb25jYXQoZy5pdGVtcyksIFtdKSxcbiAgICAgIC4uLnRoaXMuZmlsdGVyZWRTdGVwSXRlbXMsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGcm9tQ29tYmluZWRUZXN0Q2FzZXMoKTogdm9pZCB7XG4gICAgLy8gUHJpbWFyeSBsb29rdXAgYnkgdW5pcXVlSWQgKGhhbmRsZXMgc2FtZSBzdGVwSWQgaW4gbXVsdGlwbGUgZ3JvdXBzIHdpdGggZGlmZmVyZW50IHN0ZXBOdW1iZXJzKS5cbiAgICAvLyBGYWxsYmFjayBsb29rdXAgYnkgc3RlcElkIGZvciBtZXRhcyB3aXRob3V0IHVuaXF1ZUlkLlxuICAgIGNvbnN0IG1ldGFCeVVuaXF1ZUlkID0gbmV3IE1hcDxzdHJpbmcsIEp1bXBUb1N0ZXBTdGVwTWV0YT4oKTtcbiAgICBjb25zdCBtZXRhQnlTdGVwSWQgPSBuZXcgTWFwPG51bWJlciwgSnVtcFRvU3RlcFN0ZXBNZXRhPigpO1xuICAgIHRoaXMuc3RlcHNNZXRhLmZvckVhY2gobSA9PiB7XG4gICAgICBpZiAobS51bmlxdWVJZCkgbWV0YUJ5VW5pcXVlSWQuc2V0KG0udW5pcXVlSWQsIG0pO1xuICAgICAgLy8gT25seSBzdG9yZSBmaXJzdCBvY2N1cnJlbmNlIHBlciBzdGVwSWQgKHVzZWQgYXMgZmFsbGJhY2sgd2hlbiB1bmlxdWVJZCBpcyBhYnNlbnQpXG4gICAgICBpZiAoIW1ldGFCeVN0ZXBJZC5oYXMobS5zdGVwSWQpKSBtZXRhQnlTdGVwSWQuc2V0KG0uc3RlcElkLCBtKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgY29uc3QgbWF0Y2hlc1NlYXJjaCA9IChtZXRhOiBKdW1wVG9TdGVwU3RlcE1ldGEpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghc2VhcmNoVGVybSkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBTdHJpbmcobWV0YS5zdGVwTnVtYmVyKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pIHx8XG4gICAgICAgIChtZXRhLmxhYmVsIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXG4gICAgICApO1xuICAgIH07XG5cbiAgICB0aGlzLnByZXJlcXVpc2l0ZUdyb3VwcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVyZWRTdGVwSXRlbXMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5jb21iaW5lZFRlc3RDYXNlcykge1xuICAgICAgaWYgKCFncm91cD8uc3RlcHM/Lmxlbmd0aCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IChncm91cC5uYW1lIHx8ICdQcmVyZXF1aXNpdGUnKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgaXNQcmVyZXEgPSAhIWdyb3VwLmlzUHJlcmVxdWlzaXRlO1xuXG4gICAgICBjb25zdCBjb2xsZWN0U3RlcHMgPSAoc3RlcHM6IGFueVtdLCBzZWVuOiBTZXQ8c3RyaW5nPik6IEp1bXBUb1N0ZXBJdGVtW10gPT4ge1xuICAgICAgICBjb25zdCBvdXQ6IEp1bXBUb1N0ZXBJdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHN0ZXBzKSB7XG4gICAgICAgICAgaWYgKCFzKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBpZCA9IHM/LmlkID8/IHM/LnN0ZXBfaWQ7XG4gICAgICAgICAgY29uc3QgbnVtSWQgPSBpZCAhPSBudWxsID8gTnVtYmVyKGlkKSA6IE5hTjtcbiAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1JZCkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgLy8gVXNlIHVuaXF1ZUlkIGFzIHRoZSBkZWR1cGxpY2F0aW9uIGtleSB3aGVuIGF2YWlsYWJsZSwgZmFsbGJhY2sgdG8gU3RyaW5nKG51bUlkKS5cbiAgICAgICAgICBjb25zdCBzdGVwVW5pcXVlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHMudW5pcXVlSWQgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IHNlZW5LZXkgPSBzdGVwVW5pcXVlSWQgfHwgU3RyaW5nKG51bUlkKTtcbiAgICAgICAgICBpZiAoc2Vlbi5oYXMoc2VlbktleSkpIGNvbnRpbnVlO1xuICAgICAgICAgIHNlZW4uYWRkKHNlZW5LZXkpO1xuXG4gICAgICAgICAgLy8gUHJlZmVyIHVuaXF1ZUlkLWJhc2VkIG1ldGEgbG9va3VwIChjb3JyZWN0IHN0ZXBOdW1iZXIgZm9yIHJldXNlZCBzdGVwSWRzIGFjcm9zcyBncm91cHMpLlxuICAgICAgICAgIGNvbnN0IG1ldGEgPSAoc3RlcFVuaXF1ZUlkID8gbWV0YUJ5VW5pcXVlSWQuZ2V0KHN0ZXBVbmlxdWVJZCkgOiB1bmRlZmluZWQpID8/IG1ldGFCeVN0ZXBJZC5nZXQobnVtSWQpO1xuICAgICAgICAgIGlmIChtZXRhICYmIG1hdGNoZXNTZWFyY2gobWV0YSkpIHtcbiAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IFN0cmluZyhudW1JZCksXG4gICAgICAgICAgICAgIHN0ZXBJZDogbnVtSWQsXG4gICAgICAgICAgICAgIHVuaXF1ZUlkOiBzdGVwVW5pcXVlSWQsXG4gICAgICAgICAgICAgIHN0ZXBOdW1iZXI6IG1ldGEuc3RlcE51bWJlcixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuc3RyaXBIdG1sKG1ldGEubGFiZWwgfHwgKCdTdGVwICcgKyBtZXRhLnN0ZXBOdW1iZXIpKSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBtZXRhLnN0YXR1cyxcbiAgICAgICAgICAgICAgaXNQcmVyZXF1aXNpdGU6IG1ldGEuaXNQcmVyZXF1aXNpdGUsXG4gICAgICAgICAgICAgIGdyb3VwTmFtZTogbWV0YS5ncm91cE5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGb3Igc3RlcHMgd2l0aCBjb25kaXRpb25EYXRhIChDT05ESVRJT05fSUYpLCBza2lwIGdlbmVyaWMgY2hpbGRyZW4vbmVzdGVkU3RlcHNcbiAgICAgICAgICAvLyAodGhleSBtYXkgY29udGFpbiBhbGwgYnJhbmNoIHN0ZXBzIGluIGEgZmxhdCBzdHJ1Y3R1cmUgY2F1c2luZyBkdXBsaWNhdGVzIHdpdGggd3JvbmcgbnVtYmVycykuXG4gICAgICAgICAgLy8gVXNlIGNvbmRpdGlvbkRhdGEgZXhjbHVzaXZlbHkgZm9yIGNvbmRpdGlvbiBzdGVwcy5cbiAgICAgICAgICBjb25zdCBoYXNDb25kaXRpb25EYXRhID0gcy5jb25kaXRpb25EYXRhICYmIHR5cGVvZiBzLmNvbmRpdGlvbkRhdGEgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHMuY29uZGl0aW9uRGF0YSkubGVuZ3RoID4gMDtcbiAgICAgICAgICBpZiAoIWhhc0NvbmRpdGlvbkRhdGEpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYXJyIG9mIFtzLmNoaWxkcmVuIHx8IFtdLCBzLm5lc3RlZFN0ZXBzIHx8IFtdLCBzLnN0ZXBzIHx8IFtdXSkge1xuICAgICAgICAgICAgICBpZiAoYXJyPy5sZW5ndGgpIG91dC5wdXNoKC4uLmNvbGxlY3RTdGVwcyhhcnIsIHNlZW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzLmJyYW5jaGVzICYmIEFycmF5LmlzQXJyYXkocy5icmFuY2hlcykpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBiIG9mIHMuYnJhbmNoZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoYj8uc3ViU3RlcHM/Lmxlbmd0aCkgb3V0LnB1c2goLi4uY29sbGVjdFN0ZXBzKGIuc3ViU3RlcHMsIHNlZW4pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFzQ29uZGl0aW9uRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgYnJhbmNoSWRzOiBzdHJpbmdbXSA9IChzLmlmQ2hpbGREYXRhICYmIHMuaWZDaGlsZERhdGEubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgPyBzLmlmQ2hpbGREYXRhLm1hcChTdHJpbmcpXG4gICAgICAgICAgICAgIDogT2JqZWN0LmtleXMocy5jb25kaXRpb25EYXRhKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYnJhbmNoSWQgb2YgYnJhbmNoSWRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJyYW5jaERhdGEgPSAocy5jb25kaXRpb25EYXRhIGFzIGFueSlbYnJhbmNoSWRdO1xuICAgICAgICAgICAgICBpZiAoIWJyYW5jaERhdGEpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAvLyBBZGQgdGhlIGJyYW5jaCBzdGVwIGl0c2VsZiAoRUxTRSBJRiAvIEVMU0UpXG4gICAgICAgICAgICAgIGNvbnN0IGJyYW5jaFJhd0lkID0gYnJhbmNoRGF0YT8uaWQgPz8gYnJhbmNoRGF0YT8uc3RlcF9pZDtcbiAgICAgICAgICAgICAgY29uc3QgYnJhbmNoTnVtSWQgPSBicmFuY2hSYXdJZCAhPSBudWxsID8gTnVtYmVyKGJyYW5jaFJhd0lkKSA6IE5hTjtcbiAgICAgICAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShicmFuY2hOdW1JZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmFuY2hVbmlxdWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gYnJhbmNoRGF0YS51bmlxdWVJZCB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoU2VlbktleSA9IGJyYW5jaFVuaXF1ZUlkIHx8IFN0cmluZyhicmFuY2hOdW1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWVuLmhhcyhicmFuY2hTZWVuS2V5KSkge1xuICAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoYnJhbmNoU2VlbktleSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBicmFuY2hNZXRhID0gKGJyYW5jaFVuaXF1ZUlkID8gbWV0YUJ5VW5pcXVlSWQuZ2V0KGJyYW5jaFVuaXF1ZUlkKSA6IHVuZGVmaW5lZCkgPz8gbWV0YUJ5U3RlcElkLmdldChicmFuY2hOdW1JZCk7XG4gICAgICAgICAgICAgICAgICBpZiAoYnJhbmNoTWV0YSAmJiBtYXRjaGVzU2VhcmNoKGJyYW5jaE1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogU3RyaW5nKGJyYW5jaE51bUlkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGVwSWQ6IGJyYW5jaE51bUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUlkOiBicmFuY2hVbmlxdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICBzdGVwTnVtYmVyOiBicmFuY2hNZXRhLnN0ZXBOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuc3RyaXBIdG1sKGJyYW5jaE1ldGEubGFiZWwgfHwgKCdTdGVwICcgKyBicmFuY2hNZXRhLnN0ZXBOdW1iZXIpKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGJyYW5jaE1ldGEuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUHJlcmVxdWlzaXRlOiBicmFuY2hNZXRhLmlzUHJlcmVxdWlzaXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogYnJhbmNoTWV0YS5ncm91cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBSZWN1cnNlIGludG8gYnJhbmNoIGNoaWxkcmVuXG4gICAgICAgICAgICAgIGNvbnN0IGJyYW5jaENoaWxkcmVuOiBhbnlbXSA9IGJyYW5jaERhdGEuY2hpbGRyZW4gfHwgYnJhbmNoRGF0YS5uZXN0ZWRTdGVwcyB8fCBbXTtcbiAgICAgICAgICAgICAgaWYgKGJyYW5jaENoaWxkcmVuLmxlbmd0aCkgb3V0LnB1c2goLi4uY29sbGVjdFN0ZXBzKGJyYW5jaENoaWxkcmVuLCBzZWVuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBjb25zdCBpdGVtcyA9IGNvbGxlY3RTdGVwcyhncm91cC5zdGVwcywgc2Vlbik7XG5cbiAgICAgIGlmIChpc1ByZXJlcSAmJiB0aGlzLnNob3dQcmVyZXF1aXNpdGVzKSB7XG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnByZXJlcXVpc2l0ZUdyb3Vwcy5wdXNoKHsgbmFtZTogZ3JvdXBOYW1lLCBpdGVtcyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmVyZXEpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFN0ZXBJdGVtcy5wdXNoKC4uLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXG4gICAgICAuLi50aGlzLnByZXJlcXVpc2l0ZUdyb3Vwcy5yZWR1Y2U8SnVtcFRvU3RlcEl0ZW1bXT4oKGFjYywgZykgPT4gYWNjLmNvbmNhdChnLml0ZW1zKSwgW10pLFxuICAgICAgLi4udGhpcy5maWx0ZXJlZFN0ZXBJdGVtcyxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZyb21JdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gKHRoaXMuc2VhcmNoVmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcE51bWJlck1hdGNoID0gU3RyaW5nKGl0ZW0uc3RlcE51bWJlcikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25NYXRjaCA9IChpdGVtLmRlc2NyaXB0aW9uIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xuICAgICAgICByZXR1cm4gc3RlcE51bWJlck1hdGNoIHx8IGRlc2NyaXB0aW9uTWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVyZXFJdGVtcyA9IHRoaXMuZmlsdGVyZWRJdGVtcy5maWx0ZXIoaSA9PiBpLmlzUHJlcmVxdWlzaXRlID09PSB0cnVlKTtcbiAgICBjb25zdCBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgSnVtcFRvU3RlcEl0ZW1bXT4oKTtcbiAgICBwcmVyZXFJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IChpdGVtLmdyb3VwTmFtZSB8fCAnUHJlcmVxdWlzaXRlJykudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZ3JvdXBzLmdldChuYW1lKTtcbiAgICAgIGlmIChleGlzdGluZykgZXhpc3RpbmcucHVzaChpdGVtKTtcbiAgICAgIGVsc2UgZ3JvdXBzLnNldChuYW1lLCBbaXRlbV0pO1xuICAgIH0pO1xuICAgIHRoaXMucHJlcmVxdWlzaXRlR3JvdXBzID0gQXJyYXkuZnJvbShncm91cHMuZW50cmllcygpKS5tYXAoKFtuYW1lLCBpdGVtc10pID0+ICh7IG5hbWUsIGl0ZW1zIH0pKTtcbiAgICB0aGlzLmZpbHRlcmVkU3RlcEl0ZW1zID0gdGhpcy5maWx0ZXJlZEl0ZW1zLmZpbHRlcihpID0+IGkuaXNQcmVyZXF1aXNpdGUgIT09IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpcEh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWh0bWwpIHJldHVybiAnJztcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgICByZXR1cm4gKGRpdi50ZXh0Q29udGVudCB8fCBkaXYuaW5uZXJUZXh0IHx8ICcnKS50cmltKCk7XG4gIH1cblxuICBpc0dyb3VwRXhwYW5kZWQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRHcm91cE5hbWVzLmhhcyhuYW1lKTtcbiAgfVxuXG4gIHRvZ2dsZUdyb3VwKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkR3JvdXBOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRHcm91cE5hbWVzLmRlbGV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leHBhbmRlZEdyb3VwTmFtZXMuYWRkKG5hbWUpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uU2VhcmNoVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkSXRlbXMoKTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogSnVtcFRvU3RlcEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQoaXRlbSk7XG4gIH1cblxuICBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgXG4gICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCB8fCB0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1iYWNrZHJvcCcpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIGdldFN0YXR1c0JhZGdlQ2xhc3NlcyhzdGF0dXM6IFN0ZXBJdGVtU3RhdHVzKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9ICdjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJvdW5kZWQtWzZweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtbWVkaXVtIGNxYS1weS1bNHB4XSBjcWEtcHgtMyc7XG4gICAgXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3Bhc3NlZCc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWdyZWVuLTEwMCBjcWEtdGV4dC1ncmVlbi04MDBgO1xuICAgICAgY2FzZSAnY3VycmVudCc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWJsdWUtMTAwIGNxYS10ZXh0LWJsdWUtODAwYDtcbiAgICAgIGNhc2UgJ3BlbmRpbmcnOlxuICAgICAgICByZXR1cm4gYCR7YmFzZUNsYXNzZXN9IGNxYS1iZy1ncmF5LTEwMCBjcWEtdGV4dC1ncmF5LTgwMGA7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gYCR7YmFzZUNsYXNzZXN9IGNxYS1iZy1yZWQtMTAwIGNxYS10ZXh0LXJlZC04MDBgO1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiBgJHtiYXNlQ2xhc3Nlc30gY3FhLWJnLWJsdWUtMTAwIGNxYS10ZXh0LWJsdWUtODAwYDtcbiAgICAgIGNhc2UgJ3NraXBwZWQnOlxuICAgICAgICByZXR1cm4gYCR7YmFzZUNsYXNzZXN9IGNxYS1iZy1ncmF5LTEwMCBjcWEtdGV4dC1ncmF5LTgwMGA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7YmFzZUNsYXNzZXN9IGNxYS1iZy1ncmF5LTEwMCBjcWEtdGV4dC1ncmF5LTgwMGA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhhc0l0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXMgJiYgdGhpcy5maWx0ZXJlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgaXRlbXNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXMgPyB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoIDogMDtcbiAgfVxuXG4gIC8qKiBDb252ZXJ0IHN0ZXBOdW1iZXIgdG8gc3RyaW5nIGZvciB0aGUgYmFkZ2UgbGFiZWwgKFN0cmluZygpIGlzIG5vdCBhdmFpbGFibGUgaW4gdGVtcGxhdGVzKSAqL1xuICB0b0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJyArIHZhbHVlO1xuICB9XG5cbiAgdHJhY2tCeUl0ZW1JZChpbmRleDogbnVtYmVyLCBpdGVtOiBKdW1wVG9TdGVwSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cbn1cblxuIiwiPGRpdiAqbmdJZj1cImlzT3BlblwiXG4gIGNsYXNzPVwibW9kYWwtYmFja2Ryb3AgY3FhLWZpeGVkIGNxYS1pbnNldC0wIGNxYS1iZy1ibGFjayBjcWEtYmctb3BhY2l0eS01MCBjcWEtei01MCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcC00XCJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1yb3VuZGVkLWxnIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LWxnICBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWZsZXggY3FhLWZsZXgtY29sXCJcbiAgICBzdHlsZT1cImJveC1zaGFkb3c6IDBweCA4cHggOHB4IC00cHggIzEwMTgyODA4OyBtYXgtaGVpZ2h0OiA5MHZoO1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuXG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtcHgtNiBjcWEtcHQtNiBjcWEtcGItNFwiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWxlYWRpbmctWzI0cHhdIGNxYS1mb250LWludGVyXCI+XG4gICAgICAgIHt7IHRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy02IGNxYS1oLTYgY3FhLXAtMCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdGV4dC1ncmF5LTUwMCBob3ZlcjpjcWEtdGV4dC1ncmF5LTcwMCBjcWEtdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xvc2UoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBtb2RhbFwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXctNSAhY3FhLWgtNSAhY3FhLXRleHQtWzIwcHhdICFjcWEtYmxvY2sgIWNxYS1sZWFkaW5nLW5vbmVcIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuXG4gICAgPCEtLSBTZWFyY2ggQmFyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJlbmFibGVTZWFyY2hcIiBjbGFzcz1cImNxYS1weC02IGNxYS1wYi00XCI+XG4gICAgICA8Y3FhLXNlYXJjaC1iYXJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFZhbHVlXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uU2VhcmNoVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9jcWEtc2VhcmNoLWJhcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRGl2aWRlciBiZWxvdyBzZWFyY2ggLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS0tbXgtMiBjcWEtdy1bY2FsYygxMDAlKzFyZW0pXSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1oLXB4IGNxYS13LWZ1bGwgY3FhLWJnLVsjRTVFN0VCXVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU3RlcHMgTGlzdCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1vdmVyZmxvdy14LWhpZGRlbiBjcWEtcHgtNiBjcWEtcHQtMlwiIHN0eWxlPVwic2Nyb2xsYmFyLXdpZHRoOiB0aGluO1wiPlxuICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaGFzSXRlbXNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHktMTIgY3FhLXRleHQtY2VudGVyXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtZ3JheS01MDAgY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgICAgIHt7c2VhcmNoRW1wdHlTdGF0ZUxhYmVsIHx8ICdObyBEYXRhIGZvdW5kLid9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBTdGVwcyBMaXN0IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImhhc0l0ZW1zXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG5cbiAgICAgICAgPCEtLSBQcmVyZXF1aXNpdGUgc3RlcHM6IGFjY29yZGlvbiBieSB0ZXN0IGNhc2UgbmFtZSAoc3R5bGVkIGxpa2UgY3FhLW1haW4tc3RlcC1jb2xsYXBzZSkgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UHJlcmVxdWlzaXRlcyAmJiBwcmVyZXF1aXNpdGVHcm91cHM/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1tYi0xXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBwcmVyZXF1aXNpdGVHcm91cHNcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLW10LTIgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtMyBjcWEtcHgtMyBjcWEtcHktMiBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJnLVsjRUVGMkZGXSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNDNkQyRkZdIGNxYS1ib3JkZXItc29saWQgY3FhLXctZnVsbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyb3VwKGdyb3VwLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzR3JvdXBFeHBhbmRlZChncm91cC5uYW1lKVwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgNkw4IDEwTDEyIDZcIiBzdHJva2U9XCIjNEYzOUY2XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMTdweF0gY3FhLXRleHQtWyMzMTJDODVdIGNxYS1mbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXAubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzR3JvdXBFeHBhbmRlZChncm91cC5uYW1lKVwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcHgtMi41XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtSWRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC0zIGNxYS1weS0zIGNxYS13LWZ1bGwgY3FhLXRleHQtbGVmdCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGhvdmVyOmNxYS1iZy1ncmF5LTUwIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLXJvdW5kZWQtbWQgY3FhLW1pbi13LTBcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC1bNnB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXB5LVs0cHhdIGNxYS1weC1bMTBweF0gY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFMkU4RjBdIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtYmctWyNGOEY5RkZdXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMycHg7XCI+e3sgaXRlbS5zdGVwTnVtYmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC0xIGNxYS10ZXh0LXNtIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtZm9udC1pbnRlciBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1taW4tdy0wIGNxYS10cnVuY2F0ZVwiPnt7IGl0ZW0uZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wXCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQmFkZ2VDbGFzc2VzKGl0ZW0uc3RhdHVzKVwiPnt7IGl0ZW0uc3RhdHVzIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJlZFN0ZXBJdGVtcz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtaC1weCBjcWEtdy1mdWxsIGNxYS1iZy1bI0U1RTdFQl0gY3FhLW15LTEgY3FhLW1iLTJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTWFpbiB0ZXN0IHN0ZXBzIHNlY3Rpb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZFN0ZXBJdGVtcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tYi0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXVwcGVyY2FzZSBjcWEtdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICBUZXN0IHN0ZXBzXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTFcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRTdGVwSXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtSWRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHgtMyBjcWEtcHktMyBjcWEtdy1mdWxsIGNxYS10ZXh0LWxlZnQgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBob3ZlcjpjcWEtYmctZ3JheS01MCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tY29sb3JzIGNxYS1yb3VuZGVkLW1kIGNxYS1taW4tdy0wXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBTdGVwIE51bWJlciBCYWRnZSAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJvdW5kZWQtWzZweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtbWVkaXVtIGNxYS1weS1bNHB4XSBjcWEtcHgtWzEwcHhdIGNxYS1mbGV4LXNocmluay0wIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTJFOEYwXSBjcWEtdGV4dC1bIzNGNDNFRV0gY3FhLWJnLVsjRjhGOUZGXVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDMycHg7XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5zdGVwTnVtYmVyIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFN0ZXAgRGVzY3JpcHRpb24gLS0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtdGV4dC1zbSBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWZvbnQtaW50ZXIgY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtbWluLXctMCBjcWEtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8IS0tIFN0YXR1cyBCYWRnZSAtLT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMFwiIFtuZ0NsYXNzXT1cImdldFN0YXR1c0JhZGdlQ2xhc3NlcyhpdGVtLnN0YXR1cylcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnN0YXR1cyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJoYXNJdGVtc1wiIGNsYXNzPVwiY3FhLXB4LTYgY3FhLXBiLTUgY3FhLXB0LTNcIj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyM2QjcyODBdIGNxYS1mb250LWludGVyIGNxYS1mb250LW5vcm1hbFwiPlxuICAgICAgICB7eyBpdGVtc0NvdW50IH19IHt7IGl0ZW1zQ291bnQgPT09IDEgPyAnc3RlcCcgOiAnc3RlcHMnIH19IGZvdW5kXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/esm2020/lib/execution-screen/session-changes-modal/session-changes-modal.component.mjs
CHANGED
|
@@ -55,7 +55,7 @@ export class SessionChangesModalComponent {
|
|
|
55
55
|
onRemoveStep(step, event) {
|
|
56
56
|
event.preventDefault();
|
|
57
57
|
event.stopPropagation();
|
|
58
|
-
this.removeStep.emit({ id: step.id, type: step.type });
|
|
58
|
+
this.removeStep.emit({ id: step.id, type: step.type, uniqueId: step.uniqueId });
|
|
59
59
|
}
|
|
60
60
|
onEscape() {
|
|
61
61
|
if (this.isOpen) {
|
|
@@ -103,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
103
103
|
type: HostListener,
|
|
104
104
|
args: ['document:keydown.escape']
|
|
105
105
|
}] } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBa0JyRixNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT1csV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixVQUFLLEdBQVcsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFXLG1CQUFtQixDQUFDO1FBQzlDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcseURBQXlELENBQUM7UUFDMUYscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWpDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTJDLENBQUM7UUFDekUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0EwRDdDO0lBeERDLElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENB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RFAsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFNlc3Npb25DaGFuZ2VUeXBlID0gJ2FkZGVkJyB8ICdlZGl0ZWQnIHwgJ2RlbGV0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25DaGFuZ2VTdGVwIHtcbiAgaWQ6IHN0cmluZztcbiAgc3RlcE51bWJlcj86IHN0cmluZztcbiAgc3RlcERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0eXBlOiBTZXNzaW9uQ2hhbmdlVHlwZTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXNlc3Npb24tY2hhbmdlcy1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25DaGFuZ2VzTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdTZXNzaW9uIENoYW5nZXMnO1xuICBASW5wdXQoKSBhZGRlZFN0ZXBzOiBTZXNzaW9uQ2hhbmdlU3RlcFtdID0gW107XG4gIEBJbnB1dCgpIGVkaXRlZFN0ZXBzOiBTZXNzaW9uQ2hhbmdlU3RlcFtdID0gW107XG4gIEBJbnB1dCgpIGRlbGV0ZWRTdGVwczogU2Vzc2lvbkNoYW5nZVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBzYXZlQnV0dG9uTGFiZWw6IHN0cmluZyA9ICdTYXZlIHRvIFRlc3QgQ2FzZSc7XG4gIEBJbnB1dCgpIHNhdmVCdXR0b25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBleGVjdXRpb25JblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbW1pdE1lc3NhZ2VUZW1wbGF0ZTogc3RyaW5nID0gJ1RoaXMgd2lsbCBjb21taXQgYWxsIHt7Y291bnR9fSBjaGFuZ2VzIHRvIHRoZSB0ZXN0IGNhc2UnO1xuICBASW5wdXQoKSBzaG93Q2FuY2VsQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNsb3NlTW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlVG9UZXN0Q2FzZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgdHlwZTogU2Vzc2lvbkNoYW5nZVR5cGUgfT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgdG90YWxDaGFuZ2VzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuYWRkZWRTdGVwcz8ubGVuZ3RoIHx8IDApICsgKHRoaXMuZWRpdGVkU3RlcHM/Lmxlbmd0aCB8fCAwKSArICh0aGlzLmRlbGV0ZWRTdGVwcz8ubGVuZ3RoIHx8IDApO1xuICB9XG5cbiAgZ2V0IGNvbW1pdE1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMudG90YWxDaGFuZ2VzQ291bnQ7XG4gICAgcmV0dXJuIHRoaXMuY29tbWl0TWVzc2FnZVRlbXBsYXRlLnJlcGxhY2UoL1xce1xce2NvdW50XFx9XFx9L2csIFN0cmluZyhjb3VudCkpO1xuICB9XG5cbiAgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLWJhY2tkcm9wJykpIHtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1vZGFsLmVtaXQoKTtcbiAgfVxuXG4gIGdldCBpc1NhdmVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYXZlQnV0dG9uRGlzYWJsZWQgfHwgdGhpcy5leGVjdXRpb25JblByb2dyZXNzIHx8IHRoaXMudG90YWxDaGFuZ2VzQ291bnQgPT09IDA7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5leGVjdXRpb25JblByb2dyZXNzKXJldHVybiAnQnV0dG9uIHdpbGwgYmUgZW5hYmxlZCBhZnRlciBleGVjdXRpb24gaXMgY29tcGxldGUnO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTYXZlRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2F2ZVRvVGVzdENhc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uUmVtb3ZlU3RlcChzdGVwOiBTZXNzaW9uQ2hhbmdlU3RlcCwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92ZVN0ZXAuZW1pdCh7IGlkOiBzdGVwLmlkLCB0eXBlOiBzdGVwLnR5cGUgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVN0ZXBJZChfaW5kZXg6IG51bWJlciwgc3RlcDogU2Vzc2lvbkNoYW5nZVN0ZXApOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGVwLmlkO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJzZXNzaW9uLWNoYW5nZXMtbW9kYWwtYmFja2Ryb3AgY3FhLWZpeGVkIGNxYS1pbnNldC0wIGNxYS1iZy1ibGFjayBjcWEtYmctb3BhY2l0eS01MCBjcWEtei01MCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcC00XCJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCJcbiAgcm9sZT1cImRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidzZXNzaW9uLWNoYW5nZXMtdGl0bGUnXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInc2Vzc2lvbi1jaGFuZ2VzLWNvbnRlbnQnXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy14bCBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1tYXgtaC1bOTB2aF0gY3FhLWZvbnQtaW50ZXJcIlxuICAgIHN0eWxlPVwiYm94LXNoYWRvdzogMHB4IDhweCA4cHggLTRweCByZ2JhKDE2LCAyNCwgNDAsIDAuMDgpO1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLXB4LTYgY3FhLXB0LTYgY3FhLXBiLTQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8aDJcbiAgICAgICAgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtdGl0bGVcIlxuICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbGVhZGluZy1bMjhweF0gY3FhLXRleHQtWyMzMzMzMzNdIGNxYS1tLTBcIj5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBidG5TaXplPVwibWRcIlxuICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICBpY29uQ29sb3I9XCIjNEE1NTY1XCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ0Nsb3NlIG1vZGFsJ1wiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgY3VzdG9tQ2xhc3M9XCIhY3FhLW1pbi13LTAgY3FhLXAtMVwiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IC0tPlxuICAgIDxkaXYgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtY29udGVudFwiIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1weC02IGNxYS1weS00IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTZcIiBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICAgIDwhLS0gQWRkZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImFkZGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy01IGNxYS1oLTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMlYxMk0yIDdIMTJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSAgY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiB0ZXh0Q29sb3I9XCIjMEEwQTBBXCI+XG4gICAgICAgICAgICBBZGRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgYWRkZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGFkZGVkU3RlcHM7IHRyYWNrQnk6IHRyYWNrQnlTdGVwSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcm91bmRlZC1bOHB4XSBjcWEtcC0zIGNxYS1iZy1bI0Y5RkFGQl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbS0wXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcC5zdGVwTnVtYmVyXCIgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHN0ZXAuc3RlcE51bWJlciB9fS48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgc3RlcC5zdGVwRGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnRpbWVzdGFtcCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgIGJ0blNpemU9XCJtZFwiXG4gICAgICAgICAgICAgIGljb249XCJkZWxldGVfb3V0bGluZVwiXG4gICAgICAgICAgICAgIGljb25Db2xvcj1cIiM5OTk5OUVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInUmVtb3ZlIHN0ZXA6ICcgKyBzdGVwLnN0ZXBEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblJlbW92ZVN0ZXAoc3RlcCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBFZGl0ZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImVkaXRlZFN0ZXBzPy5sZW5ndGhcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0ZWQtc3RlcHMtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDJMMTIgNS41TDUgMTIuNUwxIDEzTDIgOUw4LjUgMlpcIiBzdHJva2U9XCIjRjU5RTBCXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImVkaXRlZC1zdGVwcy1oZWFkaW5nXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiBjcWEtdGV4dC1jb2xvcj1cIiMwQTBBMEFcIj5cbiAgICAgICAgICAgIEVkaXRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgZWRpdGVkU3RlcHMubGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBlZGl0ZWRTdGVwczsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1wLTMgY3FhLWJnLVsjRjlGQUZCXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLnN0ZXBOdW1iZXJcIiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkXCI+e3sgc3RlcC5zdGVwTnVtYmVyIH19Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cInJlc3RvcmVcIlxuICAgICAgICAgICAgICBpY29uQ29sb3I9XCIjOTk5OTlFXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc3RvcmUgZWRpdGVkIHN0ZXA6ICcgKyBzdGVwLnN0ZXBEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblJlbW92ZVN0ZXAoc3RlcCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBEZWxldGVkIFN0ZXBzIC0tPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgKm5nSWY9XCJkZWxldGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRlbGV0ZWQtc3RlcHMtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA3SDEyXCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aDMgaWQ9XCJkZWxldGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLW0tMFwiIHRleHRDb2xvcj1cIiMwQTBBMEFcIj5cbiAgICAgICAgICAgIERlbGV0ZWQgU3RlcHNcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHktMC41IGNxYS1weC0yIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy1bMTZweF1cIlxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRTVFN0VCOyBjb2xvcjogIzZCNzI4MDtcIj5cbiAgICAgICAgICAgIHt7IGRlbGV0ZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGRlbGV0ZWRTdGVwczsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1wLTMgY3FhLWJnLVsjRjlGQUZCXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLnN0ZXBOdW1iZXJcIiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkXCI+e3sgc3RlcC5zdGVwTnVtYmVyIH19Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cInJlc3RvcmVcIlxuICAgICAgICAgICAgICBpY29uQ29sb3I9XCIjOTk5OTlFXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc3RvcmUgZGVsZXRlZCBzdGVwOiAnICsgc3RlcC5zdGVwRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzPVwiY3FhLXNocmluay0wXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmVTdGVwKHN0ZXAsICRldmVudClcIj5cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gICAgICA8cCAqbmdJZj1cIiFhZGRlZFN0ZXBzPy5sZW5ndGggJiYgIWVkaXRlZFN0ZXBzPy5sZW5ndGggJiYgIWRlbGV0ZWRTdGVwcz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tLTBcIj5cbiAgICAgICAgTm8gc2Vzc2lvbiBjaGFuZ2VzIHRvIGRpc3BsYXkuXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXB4LTYgY3FhLXBiLTYgY3FhLXB0LTIgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctWyNGQ0Q5RDldIGNxYS1weC0zIGNxYS1weS1bMTdweF0gY3FhLW1iLTRcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGNDdGN0ZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNocmluay0wIGNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtbXQtMC41XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MzY5XzIxMjY4KVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMTQuNUMxMS41ODk5IDE0LjUgMTQuNSAxMS41ODk5IDE0LjUgOEMxNC41IDQuNDEwMTUgMTEuNTg5OSAxLjUgOCAxLjVDNC40MTAxNSAxLjUgMS41IDQuNDEwMTUgMS41IDhDMS41IDExLjU4OTkgNC40MTAxNSAxNC41IDggMTQuNVpcIiBzdHJva2U9XCIjRUUzRjNGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNC42NjY5OVY4LjAwMDMyXCIgc3Ryb2tlPVwiI0VFM0YzRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxMC42NjdIOC4wMDY2N1wiIHN0cm9rZT1cIiNFRTNGM0ZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MzY5XzIxMjY4XCI+XG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzlGMkEyQV0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgICBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM5RjJBMkFdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgVGhlIG9yaWdpbmFsIHRlc3QgY2FzZSB3aWxsIGJlIHBlcm1hbmVudGx5IG92ZXJ3cml0dGVuIHdpdGggeW91ciBjaGFuZ2VzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgW3RleHRdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVEaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNTYXZlRGlzYWJsZWRcIlxuICAgICAgICBbdG9vbHRpcF09XCJzYXZlQnV0dG9uVG9vbHRpcFwiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25TYXZlKClcIlxuICAgICAgICBbaW5saW5lU3R5bGVzXT1cIidiYWNrZ3JvdW5kLWNvbG9yOiAjNEY0NkU1OyBib3JkZXItY29sb3I6ICM0RjQ2RTU7IGNvbG9yOiAjRkZGRkZGOydcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDxwICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNDE0MTQ2XSBjcWEtbXQtMiBjcWEtbWItMCBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAge3sgY29tbWl0TWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtbXQtM1wiPlxuICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHRleHQ9XCJDYW5jZWxcIlxuICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBbUJyRixNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBT1csV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixVQUFLLEdBQVcsaUJBQWlCLENBQUM7UUFDbEMsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFXLG1CQUFtQixDQUFDO1FBQzlDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcseURBQXlELENBQUM7UUFDMUYscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWpDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQThELENBQUM7UUFDNUYsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0EwRDdDO0lBeERDLElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENB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QUFNO3NCQUFmLE1BQU07Z0JBaURQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFNlc3Npb25DaGFuZ2VUeXBlID0gJ2FkZGVkJyB8ICdlZGl0ZWQnIHwgJ2RlbGV0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25DaGFuZ2VTdGVwIHtcbiAgaWQ6IHN0cmluZztcbiAgdW5pcXVlSWQ/OiBzdHJpbmc7XG4gIHN0ZXBOdW1iZXI/OiBzdHJpbmc7XG4gIHN0ZXBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdHlwZTogU2Vzc2lvbkNoYW5nZVR5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1zZXNzaW9uLWNoYW5nZXMtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uQ2hhbmdlc01vZGFsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnU2Vzc2lvbiBDaGFuZ2VzJztcbiAgQElucHV0KCkgYWRkZWRTdGVwczogU2Vzc2lvbkNoYW5nZVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBlZGl0ZWRTdGVwczogU2Vzc2lvbkNoYW5nZVN0ZXBbXSA9IFtdO1xuICBASW5wdXQoKSBkZWxldGVkU3RlcHM6IFNlc3Npb25DaGFuZ2VTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgc2F2ZUJ1dHRvbkxhYmVsOiBzdHJpbmcgPSAnU2F2ZSB0byBUZXN0IENhc2UnO1xuICBASW5wdXQoKSBzYXZlQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXhlY3V0aW9uSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjb21taXRNZXNzYWdlVGVtcGxhdGU6IHN0cmluZyA9ICdUaGlzIHdpbGwgY29tbWl0IGFsbCB7e2NvdW50fX0gY2hhbmdlcyB0byB0aGUgdGVzdCBjYXNlJztcbiAgQElucHV0KCkgc2hvd0NhbmNlbEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2F2ZVRvVGVzdENhc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IHR5cGU6IFNlc3Npb25DaGFuZ2VUeXBlOyB1bmlxdWVJZD86IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCB0b3RhbENoYW5nZXNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5hZGRlZFN0ZXBzPy5sZW5ndGggfHwgMCkgKyAodGhpcy5lZGl0ZWRTdGVwcz8ubGVuZ3RoIHx8IDApICsgKHRoaXMuZGVsZXRlZFN0ZXBzPy5sZW5ndGggfHwgMCk7XG4gIH1cblxuICBnZXQgY29tbWl0TWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy50b3RhbENoYW5nZXNDb3VudDtcbiAgICByZXR1cm4gdGhpcy5jb21taXRNZXNzYWdlVGVtcGxhdGUucmVwbGFjZSgvXFx7XFx7Y291bnRcXH1cXH0vZywgU3RyaW5nKGNvdW50KSk7XG4gIH1cblxuICBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCB8fCB0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZXNzaW9uLWNoYW5nZXMtbW9kYWwtYmFja2Ryb3AnKSkge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWwuZW1pdCgpO1xuICB9XG5cbiAgZ2V0IGlzU2F2ZURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhdmVCdXR0b25EaXNhYmxlZCB8fCB0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MgfHwgdGhpcy50b3RhbENoYW5nZXNDb3VudCA9PT0gMDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmV4ZWN1dGlvbkluUHJvZ3Jlc3MpcmV0dXJuICdCdXR0b24gd2lsbCBiZSBlbmFibGVkIGFmdGVyIGV4ZWN1dGlvbiBpcyBjb21wbGV0ZSc7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1NhdmVEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zYXZlVG9UZXN0Q2FzZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25SZW1vdmVTdGVwKHN0ZXA6IFNlc3Npb25DaGFuZ2VTdGVwLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVtb3ZlU3RlcC5lbWl0KHsgaWQ6IHN0ZXAuaWQsIHR5cGU6IHN0ZXAudHlwZSwgdW5pcXVlSWQ6IHN0ZXAudW5pcXVlSWQgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVN0ZXBJZChfaW5kZXg6IG51bWJlciwgc3RlcDogU2Vzc2lvbkNoYW5nZVN0ZXApOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGVwLmlkO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiaXNPcGVuXCJcbiAgY2xhc3M9XCJzZXNzaW9uLWNoYW5nZXMtbW9kYWwtYmFja2Ryb3AgY3FhLWZpeGVkIGNxYS1pbnNldC0wIGNxYS1iZy1ibGFjayBjcWEtYmctb3BhY2l0eS01MCBjcWEtei01MCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcC00XCJcbiAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygkZXZlbnQpXCJcbiAgcm9sZT1cImRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidzZXNzaW9uLWNoYW5nZXMtdGl0bGUnXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInc2Vzc2lvbi1jaGFuZ2VzLWNvbnRlbnQnXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctd2hpdGUgY3FhLXNoYWRvdy14bCBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1tYXgtaC1bOTB2aF0gY3FhLWZvbnQtaW50ZXJcIlxuICAgIHN0eWxlPVwiYm94LXNoYWRvdzogMHB4IDhweCA4cHggLTRweCByZ2JhKDE2LCAyNCwgNDAsIDAuMDgpO1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLXB4LTYgY3FhLXB0LTYgY3FhLXBiLTQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8aDJcbiAgICAgICAgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtdGl0bGVcIlxuICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsxOHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtbGVhZGluZy1bMjhweF0gY3FhLXRleHQtWyMzMzMzMzNdIGNxYS1tLTBcIj5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBidG5TaXplPVwibWRcIlxuICAgICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgICBpY29uQ29sb3I9XCIjNEE1NTY1XCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ0Nsb3NlIG1vZGFsJ1wiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgY3VzdG9tQ2xhc3M9XCIhY3FhLW1pbi13LTAgY3FhLXAtMVwiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IC0tPlxuICAgIDxkaXYgaWQ9XCJzZXNzaW9uLWNoYW5nZXMtY29udGVudFwiIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1weC02IGNxYS1weS00IGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTZcIiBzdHlsZT1cInNjcm9sbGJhci13aWR0aDogdGhpbjtcIj5cbiAgICAgIDwhLS0gQWRkZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImFkZGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy01IGNxYS1oLTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMlYxMk0yIDdIMTJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImFkZGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSAgY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiB0ZXh0Q29sb3I9XCIjMEEwQTBBXCI+XG4gICAgICAgICAgICBBZGRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgYWRkZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGFkZGVkU3RlcHM7IHRyYWNrQnk6IHRyYWNrQnlTdGVwSWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcm91bmRlZC1bOHB4XSBjcWEtcC0zIGNxYS1iZy1bI0Y5RkFGQl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS10ZXh0LVsjMEEwQTBBXSBjcWEtbS0wXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RlcC5zdGVwTnVtYmVyXCIgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZFwiPnt7IHN0ZXAuc3RlcE51bWJlciB9fS48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgc3RlcC5zdGVwRGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnRpbWVzdGFtcCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgIGJ0blNpemU9XCJtZFwiXG4gICAgICAgICAgICAgIGljb249XCJkZWxldGVfb3V0bGluZVwiXG4gICAgICAgICAgICAgIGljb25Db2xvcj1cIiM5OTk5OUVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInUmVtb3ZlIHN0ZXA6ICcgKyBzdGVwLnN0ZXBEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblJlbW92ZVN0ZXAoc3RlcCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBFZGl0ZWQgU3RlcHMgLS0+XG4gICAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cImVkaXRlZFN0ZXBzPy5sZW5ndGhcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0ZWQtc3RlcHMtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDJMMTIgNS41TDUgMTIuNUwxIDEzTDIgOUw4LjUgMlpcIiBzdHJva2U9XCIjRjU5RTBCXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMyBpZD1cImVkaXRlZC1zdGVwcy1oZWFkaW5nXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS1tLTBcIiBjcWEtdGV4dC1jb2xvcj1cIiMwQTBBMEFcIj5cbiAgICAgICAgICAgIEVkaXRlZCBTdGVwc1xuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0wLjUgY3FhLXB4LTIgY3FhLXJvdW5kZWQtZnVsbCBjcWEtdGV4dC1bMTJweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNFNUU3RUI7IGNvbG9yOiAjNkI3MjgwO1wiPlxuICAgICAgICAgICAge3sgZWRpdGVkU3RlcHMubGVuZ3RoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBlZGl0ZWRTdGVwczsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1wLTMgY3FhLWJnLVsjRjlGQUZCXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLnN0ZXBOdW1iZXJcIiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkXCI+e3sgc3RlcC5zdGVwTnVtYmVyIH19Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cInJlc3RvcmVcIlxuICAgICAgICAgICAgICBpY29uQ29sb3I9XCIjOTk5OTlFXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc3RvcmUgZWRpdGVkIHN0ZXA6ICcgKyBzdGVwLnN0ZXBEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJjcWEtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblJlbW92ZVN0ZXAoc3RlcCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPCEtLSBEZWxldGVkIFN0ZXBzIC0tPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgKm5nSWY9XCJkZWxldGVkU3RlcHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRlbGV0ZWQtc3RlcHMtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiA3SDEyXCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aDMgaWQ9XCJkZWxldGVkLXN0ZXBzLWhlYWRpbmdcIiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLW0tMFwiIHRleHRDb2xvcj1cIiMwQTBBMEFcIj5cbiAgICAgICAgICAgIERlbGV0ZWQgU3RlcHNcbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHktMC41IGNxYS1weC0yIGNxYS1yb3VuZGVkLWZ1bGwgY3FhLXRleHQtWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy1bMTZweF1cIlxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRTVFN0VCOyBjb2xvcjogIzZCNzI4MDtcIj5cbiAgICAgICAgICAgIHt7IGRlbGV0ZWRTdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdGVwIG9mIGRlbGV0ZWRTdGVwczsgdHJhY2tCeTogdHJhY2tCeVN0ZXBJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1wLTMgY3FhLWJnLVsjRjlGQUZCXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMjBweF0gY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdGVwLnN0ZXBOdW1iZXJcIiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkXCI+e3sgc3RlcC5zdGVwTnVtYmVyIH19Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBzdGVwLnN0ZXBEZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAudGltZXN0YW1wIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgYnRuU2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgaWNvbj1cInJlc3RvcmVcIlxuICAgICAgICAgICAgICBpY29uQ29sb3I9XCIjOTk5OTlFXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1Jlc3RvcmUgZGVsZXRlZCBzdGVwOiAnICsgc3RlcC5zdGVwRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgICAgIGN1c3RvbUNsYXNzPVwiY3FhLXNocmluay0wXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmVTdGVwKHN0ZXAsICRldmVudClcIj5cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gRW1wdHkgc3RhdGUgLS0+XG4gICAgICA8cCAqbmdJZj1cIiFhZGRlZFN0ZXBzPy5sZW5ndGggJiYgIWVkaXRlZFN0ZXBzPy5sZW5ndGggJiYgIWRlbGV0ZWRTdGVwcz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tLTBcIj5cbiAgICAgICAgTm8gc2Vzc2lvbiBjaGFuZ2VzIHRvIGRpc3BsYXkuXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXB4LTYgY3FhLXBiLTYgY3FhLXB0LTIgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtYmctWyNGQ0Q5RDldIGNxYS1weC0zIGNxYS1weS1bMTdweF0gY3FhLW1iLTRcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNGNDdGN0ZcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXNocmluay0wIGNxYS1mbGV4IGNxYS1pdGVtcy1zdGFydCBjcWEtbXQtMC41XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MzY5XzIxMjY4KVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggMTQuNUMxMS41ODk5IDE0LjUgMTQuNSAxMS41ODk5IDE0LjUgOEMxNC41IDQuNDEwMTUgMTEuNTg5OSAxLjUgOCAxLjVDNC40MTAxNSAxLjUgMS41IDQuNDEwMTUgMS41IDhDMS41IDExLjU4OTkgNC40MTAxNSAxNC41IDggMTQuNVpcIiBzdHJva2U9XCIjRUUzRjNGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNC42NjY5OVY4LjAwMDMyXCIgc3Ryb2tlPVwiI0VFM0YzRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAxMC42NjdIOC4wMDY2N1wiIHN0cm9rZT1cIiNFRTNGM0ZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MzY5XzIxMjY4XCI+XG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1taW4tdy0wXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzlGMkEyQV0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgICBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXRleHQtWyM5RjJBMkFdIGNxYS1tdC0xIGNxYS1tLTBcIj5cbiAgICAgICAgICAgICAgVGhlIG9yaWdpbmFsIHRlc3QgY2FzZSB3aWxsIGJlIHBlcm1hbmVudGx5IG92ZXJ3cml0dGVuIHdpdGggeW91ciBjaGFuZ2VzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgW3RleHRdPVwic2F2ZUJ1dHRvbkxhYmVsXCJcbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmVEaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNTYXZlRGlzYWJsZWRcIlxuICAgICAgICBbdG9vbHRpcF09XCJzYXZlQnV0dG9uVG9vbHRpcFwiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25TYXZlKClcIlxuICAgICAgICBbaW5saW5lU3R5bGVzXT1cIidiYWNrZ3JvdW5kLWNvbG9yOiAjNEY0NkU1OyBib3JkZXItY29sb3I6ICM0RjQ2RTU7IGNvbG9yOiAjRkZGRkZGOydcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgIDxwICpuZ0lmPVwidG90YWxDaGFuZ2VzQ291bnQgPiAwXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE2cHhdIGNxYS10ZXh0LVsjNDE0MTQ2XSBjcWEtbXQtMiBjcWEtbWItMCBjcWEtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAge3sgY29tbWl0TWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtbXQtM1wiPlxuICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHRleHQ9XCJDYW5jZWxcIlxuICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|