@sumaris-net/ngx-components 18.23.26 → 18.23.27
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/doc/changelog.md +6 -0
- package/esm2022/src/app/shared/inputs.mjs +2 -2
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -5
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +3 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +5 -5
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/social/job/progression/job-progression.component.d.ts +1 -1
- package/src/assets/manifest.json +1 -1
package/doc/changelog.md
CHANGED
|
@@ -2101,3 +2101,9 @@ enh: Environment: add useHash property to configure Angular router to use hash U
|
|
|
2101
2101
|
|
|
2102
2102
|
# 18.23.26
|
|
2103
2103
|
- enh(inputs) `focusNextInput()` ignore readonly input
|
|
2104
|
+
|
|
2105
|
+
# 18.23.27
|
|
2106
|
+
- fix(mat-chips-field) Set default `colSizes` if undefined
|
|
2107
|
+
- fix(mat-autocomplete-field) Set default `colSizes` if undefined
|
|
2108
|
+
- fix(mat-autocomplete-field) Simplify detection of `required` default value, using `control.hasValidator()`
|
|
2109
|
+
|
|
@@ -213,7 +213,7 @@ export function focusNextInput(event, elements, opts) {
|
|
|
213
213
|
event.stopPropagation();
|
|
214
214
|
}
|
|
215
215
|
// Get current index
|
|
216
|
-
const minTabindex = event && isInputElement(event.target) ? event.target.tabIndex
|
|
216
|
+
const minTabindex = event && isInputElement(event.target) ? (event.target.tabIndex ?? event.target.tabindex) : undefined;
|
|
217
217
|
// Get focusable input elements
|
|
218
218
|
const focusableInputs = getFocusableInputElements(elements, { minTabindex, ...opts });
|
|
219
219
|
if (isNotEmptyArray(focusableInputs)) {
|
|
@@ -278,4 +278,4 @@ export function getInputRangeFromCaretIndex(caretIndex, inputRanges) {
|
|
|
278
278
|
}
|
|
279
279
|
return null;
|
|
280
280
|
}
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsS0FBWTtJQUN0RCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0I7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNuRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxNQUEwQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFtRDtJQUNwRiwyQ0FBMkM7SUFDM0MsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLHdHQUF3RyxDQUFDLENBQUM7UUFDdkgsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFeEIsb0JBQW9CO0lBQ3BCLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUM7WUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBNkMsRUFDN0MsVUFBa0IsRUFDbEIsUUFBaUIsRUFDakIsU0FBMkM7SUFFM0MsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsaUJBQWlCLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDM0QsYUFBYTtRQUNiLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU1QyxJQUFJLENBQUM7WUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBVTtJQUN6QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUNqSixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQWlCO0lBQ2xHLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFhLENBQUM7SUFDbEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QyxRQUFRO0lBQ1IsaURBQWlEO0lBRWpELElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsNEJBQTRCO0lBRW5FLGtCQUFrQjtJQUNsQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBZSxDQUFDO0lBRXBDLG1CQUFtQjtJQUNuQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV0QyxJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssSUFBSSxhQUFhLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNDLFFBQVE7WUFDUiw2Q0FBNkM7WUFDN0MsOENBQThDO1lBQzlDLHVFQUF1RTtZQUV2RSxPQUFPLEdBQUcsT0FBTyxLQUFLLEtBQUssQ0FBQztZQUU1QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2SCxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEgsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDNUIsZ0NBQWdDO29CQUNoQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2pFLDBCQUEwQjt3QkFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFvQixFQUFFLGFBQXNCLEVBQUUsZ0JBQXlCO0lBQ3ZHLHlFQUF5RTtJQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN6RixxR0FBcUc7UUFDckcsS0FBSztJQUNQLENBQUM7SUFDRCxvQkFBb0I7U0FDZixJQUNILGFBQWE7UUFDYixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxFQUN6SCxDQUFDO1FBQ0Qsa0VBQWtFO1FBQ2xFLEtBQUs7SUFDUCxDQUFDO1NBQU0sQ0FBQztRQUNOLGlIQUFpSDtRQUNqSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzdJLHNHQUFzRztZQUN0RyxLQUFLO1FBQ1AsQ0FBQztRQUNELCtCQUErQjthQUMxQixDQUFDO1lBQ0osNkhBQTZIO1lBQzdILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFVLE9BQXNCO0lBQ3hELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxJQUFJLFlBQVk7UUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFVLE9BQXNCLEVBQUUsUUFBZ0I7SUFDM0UsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO1NBQU0sSUFBSSxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVELE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM1QyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUM7QUFVRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQVc7SUFDeEMsT0FBTyxDQUNMLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUMxQixDQUFDLE9BQU8sSUFBSSxNQUFNO1lBQ2hCLHlGQUF5RjtZQUN6RixVQUFVLElBQUksTUFBTTtZQUNwQixVQUFVLElBQUksTUFBTSxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBVSxNQUFxQjtJQUMzRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDMUMsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ2hHLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLENBQWUsRUFBRSxDQUFlO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEMsT0FBTyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQWNELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBbUIsRUFBRSxJQUEwQjtJQUMxRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZHQUE2RyxDQUFDLENBQUM7SUFDakksT0FBTztJQUNMLDJCQUEyQjtJQUMzQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUNqQywyQkFBMkI7UUFDM0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDakMseUJBQXlCO1FBQ3pCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQy9CLHlDQUF5QztRQUN6QyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekYseUNBQXlDO1FBQ3pDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN6Riw4QkFBOEI7UUFDOUIsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QywwQkFBMEI7UUFDMUIsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUErQixFQUFFLElBQStCO0lBQ3hHLElBQUksR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUUxQyx1QkFBdUI7SUFDdkIsTUFBTSxnQkFBZ0IsR0FBbUIsUUFBUTtRQUUvQyxxQkFBcUI7U0FDcEIsR0FBRyxDQUFDLGNBQWMsQ0FBQztTQUVuQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNoQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLFFBQVE7UUFDUixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSztZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxRQUFRLGVBQWUsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFTCxtQkFBbUI7SUFDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBVSxLQUF3QixFQUFFLFFBQWtDLEVBQzVELElBQStCO0lBQ3JFLHlEQUF5RDtJQUN6RCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE1BQU0sV0FBVyxHQUFHLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXZILCtCQUErQjtJQUMvQixNQUFNLGVBQWUsR0FBbUIseUJBQXlCLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV0RyxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3JDLHdCQUF3QjtRQUN4QixlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFVLEtBQXdCLEVBQUUsUUFBa0MsRUFBRSxJQUErQjtJQUN2SSx5REFBeUQ7SUFDekQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixNQUFNLFdBQVcsR0FBRyxLQUFLLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV2SCwrQkFBK0I7SUFDL0IsTUFBTSxlQUFlLEdBQW1CLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEcsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUNyQyx1QkFBdUI7UUFDdkIsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLElBQXlCO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLFdBQW1CLENBQUM7SUFDeEIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxRQUFRO1lBQ1IseUVBQXlFO1lBRXpFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDckMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUMxQixVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUM7UUFDNUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxVQUFrQixFQUFFLFdBQXVCO0lBQ3JGLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzYWJsZUVsZW1lbnQsIGlzRm9jdXNhYmxlRWxlbWVudCB9IGZyb20gJy4vZm9jdXNhYmxlJztcbmltcG9ydCB7IGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuLCB0b051bWJlciB9IGZyb20gJy4vZnVuY3Rpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdElucHV0Q29udGVudEZyb21FdmVudChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgaWYgKCFldmVudCB8fCBldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBzZWxlY3RJbnB1dENvbnRlbnQoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0SW5wdXRDb250ZW50KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCB8IGFueSk6IGJvb2xlYW4ge1xuICAvLyBEZXRlY3QgZGVwcmVjYXRlZCB1c2FnZSAoYmVmb3JlIDE4LjIuMjEpXG4gIGlmIChpbnB1dD8udGFyZ2V0IHx8IGlucHV0IGluc3RhbmNlb2YgRXZlbnQpIHtcbiAgICBjb25zb2xlLndhcm4oJ0RFUFJFQ0FURUQgdXNhZ2Ugc2luY2UgMTguMi4yMSAtIFBsZWFzZSB1c2Ugc2VsZWN0SW5wdXRDb250ZW50RnJvbUV2ZW50KCkgaW5zdGVhZCBzZWxlY3RJbnB1dENvbnRlbnQoKScpO1xuICAgIGlucHV0ID0gaW5wdXQudGFyZ2V0O1xuICB9XG4gIGlmICghaW5wdXQpIHJldHVybiB0cnVlO1xuXG4gIC8vIE5vdGhpbmcgdG8gc2VsZWN0XG4gIGlmIChpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBpbnB1dC5zZWxlY3RSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBpbnB1dC5zZWxlY3RSYW5nZShpbnB1dC52YWx1ZS5sZW5ndGgsIDApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3Qgc2VsZWN0IGlucHV0IGNvbnRlbnQsIHVzaW5nIHNlbGVjdFJhbmdlKCknLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQuc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3Qgc2VsZWN0IGlucHV0IGNvbnRlbnQsIHVzaW5nIHNlbGVjdCgpJywgZXJyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnB1dFJhbmdlKFxuICBpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQsXG4gIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgZW5kSW5kZXg/OiBudW1iZXIsXG4gIGRpcmVjdGlvbj86ICdiYWNrd2FyZCcgfCAnZm9yd2FyZCcgfCAnbm9uZSdcbikge1xuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNldFNlbGVjdGlvblJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gTm8gY29udGVudFxuICAgIGlmIChpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnRJbmRleCwgZW5kSW5kZXggPz8gc3RhcnRJbmRleCwgZGlyZWN0aW9uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBzZWxlY3QgaW5wdXQgcmFuZ2UnLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhcmV0UG9zaXRpb24oaW5wdXQ6IGFueSk6IG51bWJlciB7XG4gIGlmIChpbnB1dCAmJiBpbnB1dC5zZWxlY3Rpb25TdGFydCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbiA/IChpbnB1dC5zZWxlY3Rpb25EaXJlY3Rpb24gPT09ICdiYWNrd2FyZCcgPyBpbnB1dC5zZWxlY3Rpb25TdGFydCA6IGlucHV0LnNlbGVjdGlvbkVuZCkgOiBpbnB1dC5zZWxlY3Rpb25TdGFydDtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSW5wdXRDYXJldFRvU2VwYXJhdG9yKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBzZXBhcmF0b3I6IHN0cmluZywgZm9yd2FyZD86IGJvb2xlYW4pIHtcbiAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgIXNlcGFyYXRvcikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBhbnk7XG4gIGlmICghaW5wdXQpIHJldHVybiB0cnVlO1xuXG4gIGNvbnN0IGNhcmV0UG9zaXRpb24gPSBnZXRDYXJldFBvc2l0aW9uKGlucHV0KTtcblxuICAvLyBERUJVR1xuICAvL2NvbnNvbGUuZGVidWcoJ2NhcmV0UG9zaXRpb249JywgY2FyZXRQb3NpdGlvbik7XG5cbiAgaWYgKGNhcmV0UG9zaXRpb24gPT09IC0xKSByZXR1cm4gdHJ1ZTsgLy8gQ2FyZXQgcG9zIG5vdCBmb3VuZDogc2tpcFxuXG4gIC8vIEdldCBpbnB1dCB2YWx1ZVxuICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlIGFzIHN0cmluZztcblxuICAvLyBObyBjb250ZW50OiBza2lwXG4gIGlmIChpc05pbE9yQmxhbmsodmFsdWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBpZiAodmFsdWUgJiYgY2FyZXRQb3NpdGlvbiA8PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJJbnB1dCB0ZXh0IHZhbHVlOiBcIiwgdmFsdWUpO1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQ3Vyc29yIGF0OiBcIiwgY2FyZXRQb3NpdGlvbik7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJUZXh0IGFmdGVyIGN1cnNvcjogXCIsIHZhbHVlLnN1YnN0cmluZyhjYXJldFBvc2l0aW9uKSk7XG5cbiAgICAgIGZvcndhcmQgPSBmb3J3YXJkICE9PSBmYWxzZTtcblxuICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSBmb3J3YXJkID8gdmFsdWUuaW5kZXhPZihzZXBhcmF0b3IsIGNhcmV0UG9zaXRpb24pIDogdmFsdWUubGFzdEluZGV4T2Yoc2VwYXJhdG9yLCBjYXJldFBvc2l0aW9uKTtcbiAgICAgIGlmIChzZXBhcmF0b3JJbmRleCAhPT0gLTEgJiYgKChmb3J3YXJkICYmIHNlcGFyYXRvckluZGV4ICsgMSA8IHZhbHVlLmxlbmd0aCkgfHwgKCFmb3J3YXJkICYmIHNlcGFyYXRvckluZGV4ID4gMCkpKSB7XG4gICAgICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgIC8vIE1vdmUgYWZ0ZXIgdGhlIG5leHQgc2VwYXJhdG9yXG4gICAgICAgICAgaWYgKHNlbGVjdElucHV0UmFuZ2UoaW5wdXQsIHNlcGFyYXRvckluZGV4ICsgKGZvcndhcmQgPyAxIDogLTEpKSkge1xuICAgICAgICAgICAgLy8gU3RvcCB0aGUga2V5Ym9hcmQgZXZlbnRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBtb3ZlIGNhcmV0IHRvIG5leHQgc2VwYXJhdG9yJywgZXJyKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOdW1iZXJJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCwgYWxsb3dEZWNpbWFsczogYm9vbGVhbiwgZGVjaW1hbFNlcGFyYXRvcj86IHN0cmluZykge1xuICAvL2lucHV0IG51bWJlciBlbnRlcmVkIG9yIG9uZSBvZiB0aGUgNCBkaXJlY3Rpb24gdXAsIGRvd24sIGxlZnQgYW5kIHJpZ2h0XG4gIGlmICgoZXZlbnQud2hpY2ggPj0gNDggJiYgZXZlbnQud2hpY2ggPD0gNTcpIHx8IChldmVudC53aGljaCA+PSAzNyAmJiBldmVudC53aGljaCA8PSA0MCkpIHtcbiAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG51bWJlciBlbnRlcmVkIDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUpO1xuICAgIC8vIE9LXG4gIH1cbiAgLy8gRGVjaW1hbCBzZXBhcmF0b3JcbiAgZWxzZSBpZiAoXG4gICAgYWxsb3dEZWNpbWFscyAmJlxuICAgICgoIWRlY2ltYWxTZXBhcmF0b3IgJiYgKGV2ZW50LmtleSA9PT0gJy4nIHx8IGV2ZW50LmtleSA9PT0gJywnKSkgfHwgKGRlY2ltYWxTZXBhcmF0b3IgJiYgZXZlbnQua2V5ID09PSBkZWNpbWFsU2VwYXJhdG9yKSlcbiAgKSB7XG4gICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBkZWNpbWFsIHNlcGFyYXRvciBlbnRlcmVkIDonICsgZXZlbnQuY29kZSk7XG4gICAgLy8gT0tcbiAgfSBlbHNlIHtcbiAgICAvL2lucHV0IGNvbW1hbmQgZW50ZXJlZCBvZiBkZWxldGUsIGJhY2tzcGFjZSBvciBvbmUgb2YgdGhlIDQgZGlyZWN0aW9uIHVwLCBkb3duLCBsZWZ0IGFuZCByaWdodCwgb3IgbmVnYXRpdmUgc2lnblxuICAgIGlmICgoZXZlbnQua2V5Q29kZSA+PSAzNyAmJiBldmVudC5rZXlDb2RlIDw9IDQwKSB8fCBldmVudC5rZXlDb2RlID09PSA0NiB8fCBldmVudC53aGljaCA9PT0gOCB8fCBldmVudC5rZXlDb2RlID09PSA5IHx8IGV2ZW50LmtleUNvZGUgPT09IDQ1KSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IGNvbW1hbmQgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcbiAgICAgIC8vIE9LXG4gICAgfVxuICAgIC8vIENhbmNlbCBvdGhlciBrZXlib2FyZCBldmVudHNcbiAgICBlbHNlIHtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnaW5wdXQgbm90IG51bWJlciBlbnRlcmVkIDonICsgZXZlbnQud2hpY2ggKyAnICcgKyBldmVudC5rZXlDb2RlICsgJyAnICsgZXZlbnQuY2hhckNvZGUgKyAnICcgKyBldmVudC5jb2RlICk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNJbnB1dDxUID0gYW55PihlbGVtZW50OiBFbGVtZW50UmVmPFQ+KSB7XG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IGFzSW5wdXRFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoaW5wdXRFbGVtZW50KSBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgZWxzZSB7XG4gICAgY29uc29sZS53YXJuKCdUcnlpbmcgdG8gZm9jdXMgb24gdGhpcyBlbGVtZW50OicsIGVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUYWJJbmRleDxUID0gYW55PihlbGVtZW50OiBFbGVtZW50UmVmPFQ+LCB0YWJJbmRleDogbnVtYmVyKSB7XG4gIGlmIChpc0lucHV0RWxlbWVudChlbGVtZW50KSkge1xuICAgIGVsZW1lbnQudGFiaW5kZXggPSB0YWJJbmRleDtcbiAgfSBlbHNlIGlmIChlbGVtZW50ICYmIGlzSW5wdXRFbGVtZW50KGVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0YWJJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oJ1RyeWluZyB0byBjaGFuZ2UgdGFiaW5kZXggb24gdGhpcyBlbGVtZW50OicsIGVsZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRFbGVtZW50IGV4dGVuZHMgRm9jdXNhYmxlRWxlbWVudCB7XG4gIHRhYmluZGV4PzogbnVtYmVyO1xuICB0YWJJbmRleD86IG51bWJlcjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIHZhbHVlOiBhbnk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dEVsZW1lbnQob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSW5wdXRFbGVtZW50IHtcbiAgcmV0dXJuIChcbiAgICBpc0ZvY3VzYWJsZUVsZW1lbnQob2JqZWN0KSAmJlxuICAgICgndmFsdWUnIGluIG9iamVjdCB8fFxuICAgICAgLy8gaGFzIHZhbHVlIGlzIG5vdCBhbHdheXMgc2V0IChuZWl0aGVyIHRhYmluZGV4KSBjaGVjayBvbiAyIHByb3BlcnRpZXMgd2l0aCBhIGxvZ2ljYWwgT1JcbiAgICAgICd0YWJpbmRleCcgaW4gb2JqZWN0IHx8XG4gICAgICAndGFiSW5kZXgnIGluIG9iamVjdClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzSW5wdXRFbGVtZW50PFQgPSBhbnk+KG9iamVjdDogRWxlbWVudFJlZjxUPik6IElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmplY3QpIHtcbiAgICBpZiAoaXNJbnB1dEVsZW1lbnQob2JqZWN0KSkgcmV0dXJuIG9iamVjdDtcbiAgICBpZiAob2JqZWN0Lm5hdGl2ZUVsZW1lbnQgJiYgaXNJbnB1dEVsZW1lbnQob2JqZWN0Lm5hdGl2ZUVsZW1lbnQpKSByZXR1cm4gb2JqZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmluZGV4Q29tcGFyYXRvcihhOiBJbnB1dEVsZW1lbnQsIGI6IElucHV0RWxlbWVudCkge1xuICBjb25zdCB2YWx1ZUEgPSBhLnRhYmluZGV4IHx8IGEudGFiSW5kZXg7XG4gIGNvbnN0IHZhbHVlQiA9IGIudGFiaW5kZXggfHwgYi50YWJJbmRleDtcbiAgcmV0dXJuIHZhbHVlQSA9PT0gdmFsdWVCID8gMCA6IHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAtMTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5HYWluRm9jdXNPcHRpb25zIHtcbiAgbWluVGFiaW5kZXg/OiBudW1iZXI7XG4gIG1heFRhYmluZGV4PzogbnVtYmVyO1xuICBpc0VtcHR5PzogYm9vbGVhbjtcbiAgaXNOb3RFbXB0eT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Rm9jdXNhYmxlSW5wdXRPcHRpb25zIGV4dGVuZHMgQ2FuR2FpbkZvY3VzT3B0aW9ucyB7XG4gIHNvcnRCeVRhYkluZGV4PzogYm9vbGVhbjtcbiAgZGVidWc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuSGF2ZUZvY3VzKGlucHV0OiBJbnB1dEVsZW1lbnQsIG9wdHM/OiBDYW5HYWluRm9jdXNPcHRpb25zKTogYm9vbGVhbiB7XG4gIGlmICghaW5wdXQpIHJldHVybiBmYWxzZTtcbiAgaWYgKG9wdHM/LmlzRW1wdHkgJiYgb3B0cy5pc05vdEVtcHR5KVxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMgb25seUVtcHR5SW5wdXQgYW5kIG9ubHlOb3RFbXB0eUlucHV0IGF0IHRoZSBzYW1lIHRpbWUuIFBsZWFzZSB1c2Ugb25seSBvbmUgb2YgdGhlbS4nKTtcbiAgcmV0dXJuIChcbiAgICAvLyBFeGNsdWRlIGRpc2FibGVkIGVsZW1lbnRcbiAgICAhdG9Cb29sZWFuKGlucHV0LmRpc2FibGVkLCBmYWxzZSkgJiZcbiAgICAvLyBFeGNsdWRlIHJlYWRvbmx5IGVsZW1lbnRcbiAgICAhdG9Cb29sZWFuKGlucHV0LnJlYWRvbmx5LCBmYWxzZSkgJiZcbiAgICAvLyBFeGNsdWRlIGhpZGRlbiBlbGVtZW50XG4gICAgIXRvQm9vbGVhbihpbnB1dC5oaWRkZW4sIGZhbHNlKSAmJlxuICAgIC8vIEV4Y2x1ZGUgbWluVGFiSW5kZXggPCBlbGVtZW50LnRhYkluZGV4XG4gICAgKGlzTmlsKG9wdHM/Lm1pblRhYmluZGV4KSB8fCB0b051bWJlcihpbnB1dC50YWJJbmRleCwgaW5wdXQudGFiaW5kZXgpID4gb3B0cy5taW5UYWJpbmRleCkgJiZcbiAgICAvLyBFeGNsdWRlIG1heFRhYkluZGV4ID4gZWxlbWVudC50YWJJbmRleFxuICAgIChpc05pbChvcHRzPy5tYXhUYWJpbmRleCkgfHwgdG9OdW1iZXIoaW5wdXQudGFiSW5kZXgsIGlucHV0LnRhYmluZGV4KSA8IG9wdHMubWF4VGFiaW5kZXgpICYmXG4gICAgLy8gRXhjbHVkZSBub3QgbmlsIGlucHV0IHZhbHVlXG4gICAgKCFvcHRzPy5pc0VtcHR5IHx8IGlzTmlsT3JCbGFuayhpbnB1dC52YWx1ZSkpICYmXG4gICAgLy8gRXhjbHVkZSBuaWwgaW5wdXQgdmFsdWVcbiAgICAoIW9wdHM/LmlzTm90RW1wdHkgfHwgaXNOb3ROaWxPckJsYW5rKGlucHV0LnZhbHVlKSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvY3VzYWJsZUlucHV0RWxlbWVudHMoZWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiwgb3B0cz86IEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyk6IElucHV0RWxlbWVudFtdIHtcbiAgb3B0cyA9IHsgc29ydEJ5VGFiSW5kZXg6IGZhbHNlLCAuLi5vcHRzIH07XG5cbiAgLy8gRm9jdXMgdG8gZmlyc3QgaW5wdXRcbiAgY29uc3QgZmlsdGVyZWRFbGVtZW50czogSW5wdXRFbGVtZW50W10gPSBlbGVtZW50c1xuXG4gICAgLy8gVHJhbnNmb3JtIHRvIGlucHV0XG4gICAgLm1hcChhc0lucHV0RWxlbWVudClcblxuICAgIC5maWx0ZXIoKGlucHV0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlZCA9IGNhbkhhdmVGb2N1cyhpbnB1dCwgb3B0cyk7XG4gICAgICAvLyBERUJVR1xuICAgICAgaWYgKGlucHV0ICYmIG9wdHMuZGVidWcpXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFtpbnB1dHNdIEZvY3VzYWJsZSBpbnB1dCB7Y2FuRm9jdXM6ICR7aW5jbHVkZWR9LCB0YWJJbmRleDogJHtpbnB1dC50YWJJbmRleCB8fCBpbnB1dC50YWJpbmRleH19YCwgaW5wdXQpO1xuICAgICAgcmV0dXJuIGluY2x1ZGVkO1xuICAgIH0pO1xuXG4gIC8vIFNvcnQgYnkgdGFiSW5kZXhcbiAgaWYgKG9wdHMuc29ydEJ5VGFiSW5kZXgpIHtcbiAgICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cy5zb3J0KHRhYmluZGV4Q29tcGFyYXRvcik7XG4gIH1cblxuICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzTmV4dElucHV0PFQgPSBhbnk+KGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgZWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPFQ+PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzPzogR2V0Rm9jdXNhYmxlSW5wdXRPcHRpb25zKTogYm9vbGVhbiB7XG4gIC8vIENhbmNlbGxpbmcgZXZlbnQgKGUuZy4gd2hlbiBlbWl0dGVkIGJ5IChrZXlkb3duLnRhYikgKVxuICBpZiAoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLy8gR2V0IGN1cnJlbnQgaW5kZXhcbiAgY29uc3QgbWluVGFiaW5kZXggPSBldmVudCAmJiBpc0lucHV0RWxlbWVudChldmVudC50YXJnZXQpID8gZXZlbnQudGFyZ2V0LnRhYkluZGV4IHx8IGV2ZW50LnRhcmdldC50YWJpbmRleCA6IHVuZGVmaW5lZDtcblxuICAvLyBHZXQgZm9jdXNhYmxlIGlucHV0IGVsZW1lbnRzXG4gIGNvbnN0IGZvY3VzYWJsZUlucHV0czogSW5wdXRFbGVtZW50W10gPSBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzLCB7IG1pblRhYmluZGV4LCAuLi5vcHRzIH0pO1xuXG4gIGlmIChpc05vdEVtcHR5QXJyYXkoZm9jdXNhYmxlSW5wdXRzKSkge1xuICAgIC8vIEZvY3VzIG9uIGZpcnN0IGlucHV0c1xuICAgIGZvY3VzYWJsZUlucHV0c1swXS5mb2N1cygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNQcmV2aW91c0lucHV0PFQgPSBhbnk+KGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgZWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPFQ+Piwgb3B0cz86IEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1heFRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IGV2ZW50LnRhcmdldC50YWJJbmRleCB8fCBldmVudC50YXJnZXQudGFiaW5kZXggOiB1bmRlZmluZWQ7XG5cbiAgLy8gR2V0IGZvY3VzYWJsZSBpbnB1dCBlbGVtZW50c1xuICBjb25zdCBmb2N1c2FibGVJbnB1dHM6IElucHV0RWxlbWVudFtdID0gZ2V0Rm9jdXNhYmxlSW5wdXRFbGVtZW50cyhlbGVtZW50cywgeyBtYXhUYWJpbmRleCwgLi4ub3B0cyB9KTtcblxuICBpZiAoaXNOb3RFbXB0eUFycmF5KGZvY3VzYWJsZUlucHV0cykpIHtcbiAgICAvLyBGb2N1cyBvbiBsYXN0IGlucHV0c1xuICAgIGZvY3VzYWJsZUlucHV0c1tmb2N1c2FibGVJbnB1dHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sobWFzazogKHN0cmluZyB8IFJlZ0V4cClbXSk6IG51bWJlcltdW10ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgbGV0IGZpcnN0X2luZGV4OiBudW1iZXI7XG4gIGxldCBsYXN0X2luZGV4OiBudW1iZXI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSAwICYmIG1hc2tbaV0udG9TdHJpbmcoKSA9PT0gJy9bKy1dLycpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ1RPRE8gcHVzaCBzdGFydCBtYXNrJywgeyBpLCBtYXNrOiBtYXNrW2ldLnRvU3RyaW5nKCkgfSk7XG5cbiAgICAgIHJlc3VsdC5wdXNoKFswLCAwXSk7XG4gICAgfSBlbHNlIGlmIChtYXNrW2ldIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBpZiAoaXNOaWwoZmlyc3RfaW5kZXgpKSB7XG4gICAgICAgIGZpcnN0X2luZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzTm90TmlsKGZpcnN0X2luZGV4KSkge1xuICAgICAgICBsYXN0X2luZGV4ID0gaSAtIDE7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtmaXJzdF9pbmRleCwgbGFzdF9pbmRleF0pO1xuICAgICAgICBmaXJzdF9pbmRleCA9IG51bGw7XG4gICAgICAgIGxhc3RfaW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobWFza1ttYXNrLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgbGFzdF9pbmRleCA9IG1hc2subGVuZ3RoIC0gMTtcbiAgICByZXN1bHQucHVzaChbZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRSYW5nZUZyb21DYXJldEluZGV4KGNhcmV0SW5kZXg6IG51bWJlciwgaW5wdXRSYW5nZXM6IG51bWJlcltdW10pOiBudW1iZXJbXSB7XG4gIGZvciAoY29uc3QgaW5wdXRSYW5nZSBvZiBpbnB1dFJhbmdlcykge1xuICAgIGlmIChjYXJldEluZGV4ID49IGlucHV0UmFuZ2VbMF0gJiYgY2FyZXRJbmRleCA8PSBpbnB1dFJhbmdlWzFdICsgMSkge1xuICAgICAgcmV0dXJuIGlucHV0UmFuZ2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvaW5wdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsS0FBWTtJQUN0RCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0I7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNuRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxNQUEwQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFtRDtJQUNwRiwyQ0FBMkM7SUFDM0MsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLHdHQUF3RyxDQUFDLENBQUM7UUFDdkgsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFeEIsb0JBQW9CO0lBQ3BCLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUM7WUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBNkMsRUFDN0MsVUFBa0IsRUFDbEIsUUFBaUIsRUFDakIsU0FBMkM7SUFFM0MsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsaUJBQWlCLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDM0QsYUFBYTtRQUNiLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU1QyxJQUFJLENBQUM7WUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBVTtJQUN6QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUNqSixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQWlCO0lBQ2xHLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFhLENBQUM7SUFDbEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV4QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QyxRQUFRO0lBQ1IsaURBQWlEO0lBRWpELElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsNEJBQTRCO0lBRW5FLGtCQUFrQjtJQUNsQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBZSxDQUFDO0lBRXBDLG1CQUFtQjtJQUNuQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV0QyxJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssSUFBSSxhQUFhLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNDLFFBQVE7WUFDUiw2Q0FBNkM7WUFDN0MsOENBQThDO1lBQzlDLHVFQUF1RTtZQUV2RSxPQUFPLEdBQUcsT0FBTyxLQUFLLEtBQUssQ0FBQztZQUU1QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2SCxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEgsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDNUIsZ0NBQWdDO29CQUNoQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2pFLDBCQUEwQjt3QkFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFvQixFQUFFLGFBQXNCLEVBQUUsZ0JBQXlCO0lBQ3ZHLHlFQUF5RTtJQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN6RixxR0FBcUc7UUFDckcsS0FBSztJQUNQLENBQUM7SUFDRCxvQkFBb0I7U0FDZixJQUNILGFBQWE7UUFDYixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxFQUN6SCxDQUFDO1FBQ0Qsa0VBQWtFO1FBQ2xFLEtBQUs7SUFDUCxDQUFDO1NBQU0sQ0FBQztRQUNOLGlIQUFpSDtRQUNqSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzdJLHNHQUFzRztZQUN0RyxLQUFLO1FBQ1AsQ0FBQztRQUNELCtCQUErQjthQUMxQixDQUFDO1lBQ0osNkhBQTZIO1lBQzdILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFVLE9BQXNCO0lBQ3hELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxJQUFJLFlBQVk7UUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFVLE9BQXNCLEVBQUUsUUFBZ0I7SUFDM0UsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO1NBQU0sSUFBSSxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVELE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM1QyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUM7QUFVRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQVc7SUFDeEMsT0FBTyxDQUNMLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUMxQixDQUFDLE9BQU8sSUFBSSxNQUFNO1lBQ2hCLHlGQUF5RjtZQUN6RixVQUFVLElBQUksTUFBTTtZQUNwQixVQUFVLElBQUksTUFBTSxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBVSxNQUFxQjtJQUMzRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDMUMsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ2hHLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLENBQWUsRUFBRSxDQUFlO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEMsT0FBTyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQWNELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBbUIsRUFBRSxJQUEwQjtJQUMxRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDZHQUE2RyxDQUFDLENBQUM7SUFDakksT0FBTztJQUNMLDJCQUEyQjtJQUMzQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUNqQywyQkFBMkI7UUFDM0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDakMseUJBQXlCO1FBQ3pCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQy9CLHlDQUF5QztRQUN6QyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekYseUNBQXlDO1FBQ3pDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN6Riw4QkFBOEI7UUFDOUIsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QywwQkFBMEI7UUFDMUIsQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUErQixFQUFFLElBQStCO0lBQ3hHLElBQUksR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUUxQyx1QkFBdUI7SUFDdkIsTUFBTSxnQkFBZ0IsR0FBbUIsUUFBUTtRQUUvQyxxQkFBcUI7U0FDcEIsR0FBRyxDQUFDLGNBQWMsQ0FBQztTQUVuQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNoQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLFFBQVE7UUFDUixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSztZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxRQUFRLGVBQWUsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFTCxtQkFBbUI7SUFDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBVSxLQUF3QixFQUFFLFFBQWtDLEVBQzVELElBQStCO0lBQ3JFLHlEQUF5RDtJQUN6RCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE1BQU0sV0FBVyxHQUFHLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV6SCwrQkFBK0I7SUFDL0IsTUFBTSxlQUFlLEdBQW1CLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEcsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUNyQyx3QkFBd0I7UUFDeEIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBVSxLQUF3QixFQUFFLFFBQWtDLEVBQUUsSUFBK0I7SUFDdkkseURBQXlEO0lBQ3pELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFdkgsK0JBQStCO0lBQy9CLE1BQU0sZUFBZSxHQUFtQix5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRHLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDckMsdUJBQXVCO1FBQ3ZCLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxJQUF5QjtJQUN2RSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxXQUFtQixDQUFDO0lBQ3hCLElBQUksVUFBa0IsQ0FBQztJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsUUFBUTtZQUNSLHlFQUF5RTtZQUV6RSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDbkIsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxZQUFZLE1BQU0sRUFBRSxDQUFDO1FBQzVDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsVUFBa0IsRUFBRSxXQUF1QjtJQUNyRixLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVFbGVtZW50LCBpc0ZvY3VzYWJsZUVsZW1lbnQgfSBmcm9tICcuL2ZvY3VzYWJsZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHRvQm9vbGVhbiwgdG9OdW1iZXIgfSBmcm9tICcuL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnB1dENvbnRlbnRGcm9tRXZlbnQoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gIGlmICghZXZlbnQgfHwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gc2VsZWN0SW5wdXRDb250ZW50KGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdElucHV0Q29udGVudChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBhbnkpOiBib29sZWFuIHtcbiAgLy8gRGV0ZWN0IGRlcHJlY2F0ZWQgdXNhZ2UgKGJlZm9yZSAxOC4yLjIxKVxuICBpZiAoaW5wdXQ/LnRhcmdldCB8fCBpbnB1dCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgY29uc29sZS53YXJuKCdERVBSRUNBVEVEIHVzYWdlIHNpbmNlIDE4LjIuMjEgLSBQbGVhc2UgdXNlIHNlbGVjdElucHV0Q29udGVudEZyb21FdmVudCgpIGluc3RlYWQgc2VsZWN0SW5wdXRDb250ZW50KCknKTtcbiAgICBpbnB1dCA9IGlucHV0LnRhcmdldDtcbiAgfVxuICBpZiAoIWlucHV0KSByZXR1cm4gdHJ1ZTtcblxuICAvLyBOb3RoaW5nIHRvIHNlbGVjdFxuICBpZiAoaXNOaWxPckJsYW5rKGlucHV0LnZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgaW5wdXQuc2VsZWN0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgaW5wdXQuc2VsZWN0UmFuZ2UoaW5wdXQudmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHNlbGVjdCBpbnB1dCBjb250ZW50LCB1c2luZyBzZWxlY3RSYW5nZSgpJywgZXJyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHNlbGVjdCBpbnB1dCBjb250ZW50LCB1c2luZyBzZWxlY3QoKScsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0SW5wdXRSYW5nZShcbiAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGVuZEluZGV4PzogbnVtYmVyLFxuICBkaXJlY3Rpb24/OiAnYmFja3dhcmQnIHwgJ2ZvcndhcmQnIHwgJ25vbmUnXG4pIHtcbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIE5vIGNvbnRlbnRcbiAgICBpZiAoaXNOaWxPckJsYW5rKGlucHV0LnZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ID8/IHN0YXJ0SW5kZXgsIGRpcmVjdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3Qgc2VsZWN0IGlucHV0IHJhbmdlJywgZXJyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXJldFBvc2l0aW9uKGlucHV0OiBhbnkpOiBudW1iZXIge1xuICBpZiAoaW5wdXQgJiYgaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkge1xuICAgIHJldHVybiBpbnB1dC5zZWxlY3Rpb25EaXJlY3Rpb24gPyAoaW5wdXQuc2VsZWN0aW9uRGlyZWN0aW9uID09PSAnYmFja3dhcmQnID8gaW5wdXQuc2VsZWN0aW9uU3RhcnQgOiBpbnB1dC5zZWxlY3Rpb25FbmQpIDogaW5wdXQuc2VsZWN0aW9uU3RhcnQ7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvcihldmVudDogS2V5Ym9hcmRFdmVudCwgc2VwYXJhdG9yOiBzdHJpbmcsIGZvcndhcmQ/OiBib29sZWFuKSB7XG4gIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFzZXBhcmF0b3IpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgYW55O1xuICBpZiAoIWlucHV0KSByZXR1cm4gdHJ1ZTtcblxuICBjb25zdCBjYXJldFBvc2l0aW9uID0gZ2V0Q2FyZXRQb3NpdGlvbihpbnB1dCk7XG5cbiAgLy8gREVCVUdcbiAgLy9jb25zb2xlLmRlYnVnKCdjYXJldFBvc2l0aW9uPScsIGNhcmV0UG9zaXRpb24pO1xuXG4gIGlmIChjYXJldFBvc2l0aW9uID09PSAtMSkgcmV0dXJuIHRydWU7IC8vIENhcmV0IHBvcyBub3QgZm91bmQ6IHNraXBcblxuICAvLyBHZXQgaW5wdXQgdmFsdWVcbiAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWx1ZSBhcyBzdHJpbmc7XG5cbiAgLy8gTm8gY29udGVudDogc2tpcFxuICBpZiAoaXNOaWxPckJsYW5rKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgaWYgKHZhbHVlICYmIGNhcmV0UG9zaXRpb24gPD0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiSW5wdXQgdGV4dCB2YWx1ZTogXCIsIHZhbHVlKTtcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkN1cnNvciBhdDogXCIsIGNhcmV0UG9zaXRpb24pO1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiVGV4dCBhZnRlciBjdXJzb3I6IFwiLCB2YWx1ZS5zdWJzdHJpbmcoY2FyZXRQb3NpdGlvbikpO1xuXG4gICAgICBmb3J3YXJkID0gZm9yd2FyZCAhPT0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gZm9yd2FyZCA/IHZhbHVlLmluZGV4T2Yoc2VwYXJhdG9yLCBjYXJldFBvc2l0aW9uKSA6IHZhbHVlLmxhc3RJbmRleE9mKHNlcGFyYXRvciwgY2FyZXRQb3NpdGlvbik7XG4gICAgICBpZiAoc2VwYXJhdG9ySW5kZXggIT09IC0xICYmICgoZm9yd2FyZCAmJiBzZXBhcmF0b3JJbmRleCArIDEgPCB2YWx1ZS5sZW5ndGgpIHx8ICghZm9yd2FyZCAmJiBzZXBhcmF0b3JJbmRleCA+IDApKSkge1xuICAgICAgICBpZiAoaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICAgICAgICAvLyBNb3ZlIGFmdGVyIHRoZSBuZXh0IHNlcGFyYXRvclxuICAgICAgICAgIGlmIChzZWxlY3RJbnB1dFJhbmdlKGlucHV0LCBzZXBhcmF0b3JJbmRleCArIChmb3J3YXJkID8gMSA6IC0xKSkpIHtcbiAgICAgICAgICAgIC8vIFN0b3AgdGhlIGtleWJvYXJkIGV2ZW50XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgbW92ZSBjYXJldCB0byBuZXh0IHNlcGFyYXRvcicsIGVycik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTnVtYmVySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGFsbG93RGVjaW1hbHM6IGJvb2xlYW4sIGRlY2ltYWxTZXBhcmF0b3I/OiBzdHJpbmcpIHtcbiAgLy9pbnB1dCBudW1iZXIgZW50ZXJlZCBvciBvbmUgb2YgdGhlIDQgZGlyZWN0aW9uIHVwLCBkb3duLCBsZWZ0IGFuZCByaWdodFxuICBpZiAoKGV2ZW50LndoaWNoID49IDQ4ICYmIGV2ZW50LndoaWNoIDw9IDU3KSB8fCAoZXZlbnQud2hpY2ggPj0gMzcgJiYgZXZlbnQud2hpY2ggPD0gNDApKSB7XG4gICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlKTtcbiAgICAvLyBPS1xuICB9XG4gIC8vIERlY2ltYWwgc2VwYXJhdG9yXG4gIGVsc2UgaWYgKFxuICAgIGFsbG93RGVjaW1hbHMgJiZcbiAgICAoKCFkZWNpbWFsU2VwYXJhdG9yICYmIChldmVudC5rZXkgPT09ICcuJyB8fCBldmVudC5rZXkgPT09ICcsJykpIHx8IChkZWNpbWFsU2VwYXJhdG9yICYmIGV2ZW50LmtleSA9PT0gZGVjaW1hbFNlcGFyYXRvcikpXG4gICkge1xuICAgIC8vY29uc29sZS5kZWJ1ZygnaW5wdXQgZGVjaW1hbCBzZXBhcmF0b3IgZW50ZXJlZCA6JyArIGV2ZW50LmNvZGUpO1xuICAgIC8vIE9LXG4gIH0gZWxzZSB7XG4gICAgLy9pbnB1dCBjb21tYW5kIGVudGVyZWQgb2YgZGVsZXRlLCBiYWNrc3BhY2Ugb3Igb25lIG9mIHRoZSA0IGRpcmVjdGlvbiB1cCwgZG93biwgbGVmdCBhbmQgcmlnaHQsIG9yIG5lZ2F0aXZlIHNpZ25cbiAgICBpZiAoKGV2ZW50LmtleUNvZGUgPj0gMzcgJiYgZXZlbnQua2V5Q29kZSA8PSA0MCkgfHwgZXZlbnQua2V5Q29kZSA9PT0gNDYgfHwgZXZlbnQud2hpY2ggPT09IDggfHwgZXZlbnQua2V5Q29kZSA9PT0gOSB8fCBldmVudC5rZXlDb2RlID09PSA0NSkge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKCdpbnB1dCBjb21tYW5kIGVudGVyZWQgOicgKyBldmVudC53aGljaCArICcgJyArIGV2ZW50LmtleUNvZGUgKyAnICcgKyBldmVudC5jaGFyQ29kZSk7XG4gICAgICAvLyBPS1xuICAgIH1cbiAgICAvLyBDYW5jZWwgb3RoZXIga2V5Ym9hcmQgZXZlbnRzXG4gICAgZWxzZSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ2lucHV0IG5vdCBudW1iZXIgZW50ZXJlZCA6JyArIGV2ZW50LndoaWNoICsgJyAnICsgZXZlbnQua2V5Q29kZSArICcgJyArIGV2ZW50LmNoYXJDb2RlICsgJyAnICsgZXZlbnQuY29kZSApO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzSW5wdXQ8VCA9IGFueT4oZWxlbWVudDogRWxlbWVudFJlZjxUPikge1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSBhc0lucHV0RWxlbWVudChlbGVtZW50KTtcbiAgaWYgKGlucHV0RWxlbWVudCkgaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gIGVsc2Uge1xuICAgIGNvbnNvbGUud2FybignVHJ5aW5nIHRvIGZvY3VzIG9uIHRoaXMgZWxlbWVudDonLCBlbGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFiSW5kZXg8VCA9IGFueT4oZWxlbWVudDogRWxlbWVudFJlZjxUPiwgdGFiSW5kZXg6IG51bWJlcikge1xuICBpZiAoaXNJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBlbGVtZW50LnRhYmluZGV4ID0gdGFiSW5kZXg7XG4gIH0gZWxzZSBpZiAoZWxlbWVudCAmJiBpc0lucHV0RWxlbWVudChlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS53YXJuKCdUcnlpbmcgdG8gY2hhbmdlIHRhYmluZGV4IG9uIHRoaXMgZWxlbWVudDonLCBlbGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0RWxlbWVudCBleHRlbmRzIEZvY3VzYWJsZUVsZW1lbnQge1xuICB0YWJpbmRleD86IG51bWJlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICB2YWx1ZTogYW55O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRFbGVtZW50KG9iamVjdDogYW55KTogb2JqZWN0IGlzIElucHV0RWxlbWVudCB7XG4gIHJldHVybiAoXG4gICAgaXNGb2N1c2FibGVFbGVtZW50KG9iamVjdCkgJiZcbiAgICAoJ3ZhbHVlJyBpbiBvYmplY3QgfHxcbiAgICAgIC8vIGhhcyB2YWx1ZSBpcyBub3QgYWx3YXlzIHNldCAobmVpdGhlciB0YWJpbmRleCkgY2hlY2sgb24gMiBwcm9wZXJ0aWVzIHdpdGggYSBsb2dpY2FsIE9SXG4gICAgICAndGFiaW5kZXgnIGluIG9iamVjdCB8fFxuICAgICAgJ3RhYkluZGV4JyBpbiBvYmplY3QpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc0lucHV0RWxlbWVudDxUID0gYW55PihvYmplY3Q6IEVsZW1lbnRSZWY8VD4pOiBJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICBpZiAob2JqZWN0KSB7XG4gICAgaWYgKGlzSW5wdXRFbGVtZW50KG9iamVjdCkpIHJldHVybiBvYmplY3Q7XG4gICAgaWYgKG9iamVjdC5uYXRpdmVFbGVtZW50ICYmIGlzSW5wdXRFbGVtZW50KG9iamVjdC5uYXRpdmVFbGVtZW50KSkgcmV0dXJuIG9iamVjdC5uYXRpdmVFbGVtZW50O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJpbmRleENvbXBhcmF0b3IoYTogSW5wdXRFbGVtZW50LCBiOiBJbnB1dEVsZW1lbnQpIHtcbiAgY29uc3QgdmFsdWVBID0gYS50YWJpbmRleCB8fCBhLnRhYkluZGV4O1xuICBjb25zdCB2YWx1ZUIgPSBiLnRhYmluZGV4IHx8IGIudGFiSW5kZXg7XG4gIHJldHVybiB2YWx1ZUEgPT09IHZhbHVlQiA/IDAgOiB2YWx1ZUEgPiB2YWx1ZUIgPyAxIDogLTE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuR2FpbkZvY3VzT3B0aW9ucyB7XG4gIG1pblRhYmluZGV4PzogbnVtYmVyO1xuICBtYXhUYWJpbmRleD86IG51bWJlcjtcbiAgaXNFbXB0eT86IGJvb2xlYW47XG4gIGlzTm90RW1wdHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyBleHRlbmRzIENhbkdhaW5Gb2N1c09wdGlvbnMge1xuICBzb3J0QnlUYWJJbmRleD86IGJvb2xlYW47XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkhhdmVGb2N1cyhpbnB1dDogSW5wdXRFbGVtZW50LCBvcHRzPzogQ2FuR2FpbkZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAoIWlucHV0KSByZXR1cm4gZmFsc2U7XG4gIGlmIChvcHRzPy5pc0VtcHR5ICYmIG9wdHMuaXNOb3RFbXB0eSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgYm90aCBvcHRpb25zIG9ubHlFbXB0eUlucHV0IGFuZCBvbmx5Tm90RW1wdHlJbnB1dCBhdCB0aGUgc2FtZSB0aW1lLiBQbGVhc2UgdXNlIG9ubHkgb25lIG9mIHRoZW0uJyk7XG4gIHJldHVybiAoXG4gICAgLy8gRXhjbHVkZSBkaXNhYmxlZCBlbGVtZW50XG4gICAgIXRvQm9vbGVhbihpbnB1dC5kaXNhYmxlZCwgZmFsc2UpICYmXG4gICAgLy8gRXhjbHVkZSByZWFkb25seSBlbGVtZW50XG4gICAgIXRvQm9vbGVhbihpbnB1dC5yZWFkb25seSwgZmFsc2UpICYmXG4gICAgLy8gRXhjbHVkZSBoaWRkZW4gZWxlbWVudFxuICAgICF0b0Jvb2xlYW4oaW5wdXQuaGlkZGVuLCBmYWxzZSkgJiZcbiAgICAvLyBFeGNsdWRlIG1pblRhYkluZGV4IDwgZWxlbWVudC50YWJJbmRleFxuICAgIChpc05pbChvcHRzPy5taW5UYWJpbmRleCkgfHwgdG9OdW1iZXIoaW5wdXQudGFiSW5kZXgsIGlucHV0LnRhYmluZGV4KSA+IG9wdHMubWluVGFiaW5kZXgpICYmXG4gICAgLy8gRXhjbHVkZSBtYXhUYWJJbmRleCA+IGVsZW1lbnQudGFiSW5kZXhcbiAgICAoaXNOaWwob3B0cz8ubWF4VGFiaW5kZXgpIHx8IHRvTnVtYmVyKGlucHV0LnRhYkluZGV4LCBpbnB1dC50YWJpbmRleCkgPCBvcHRzLm1heFRhYmluZGV4KSAmJlxuICAgIC8vIEV4Y2x1ZGUgbm90IG5pbCBpbnB1dCB2YWx1ZVxuICAgICghb3B0cz8uaXNFbXB0eSB8fCBpc05pbE9yQmxhbmsoaW5wdXQudmFsdWUpKSAmJlxuICAgIC8vIEV4Y2x1ZGUgbmlsIGlucHV0IHZhbHVlXG4gICAgKCFvcHRzPy5pc05vdEVtcHR5IHx8IGlzTm90TmlsT3JCbGFuayhpbnB1dC52YWx1ZSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4sIG9wdHM/OiBHZXRGb2N1c2FibGVJbnB1dE9wdGlvbnMpOiBJbnB1dEVsZW1lbnRbXSB7XG4gIG9wdHMgPSB7IHNvcnRCeVRhYkluZGV4OiBmYWxzZSwgLi4ub3B0cyB9O1xuXG4gIC8vIEZvY3VzIHRvIGZpcnN0IGlucHV0XG4gIGNvbnN0IGZpbHRlcmVkRWxlbWVudHM6IElucHV0RWxlbWVudFtdID0gZWxlbWVudHNcblxuICAgIC8vIFRyYW5zZm9ybSB0byBpbnB1dFxuICAgIC5tYXAoYXNJbnB1dEVsZW1lbnQpXG5cbiAgICAuZmlsdGVyKChpbnB1dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZWQgPSBjYW5IYXZlRm9jdXMoaW5wdXQsIG9wdHMpO1xuICAgICAgLy8gREVCVUdcbiAgICAgIGlmIChpbnB1dCAmJiBvcHRzLmRlYnVnKVxuICAgICAgICBjb25zb2xlLmRlYnVnKGBbaW5wdXRzXSBGb2N1c2FibGUgaW5wdXQge2NhbkZvY3VzOiAke2luY2x1ZGVkfSwgdGFiSW5kZXg6ICR7aW5wdXQudGFiSW5kZXggfHwgaW5wdXQudGFiaW5kZXh9fWAsIGlucHV0KTtcbiAgICAgIHJldHVybiBpbmNsdWRlZDtcbiAgICB9KTtcblxuICAvLyBTb3J0IGJ5IHRhYkluZGV4XG4gIGlmIChvcHRzLnNvcnRCeVRhYkluZGV4KSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHMuc29ydCh0YWJpbmRleENvbXBhcmF0b3IpO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c05leHRJbnB1dDxUID0gYW55PihldmVudDogRXZlbnQgfCB1bmRlZmluZWQsIGVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxUPj4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cz86IEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1pblRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IChldmVudC50YXJnZXQudGFiSW5kZXggPz8gZXZlbnQudGFyZ2V0LnRhYmluZGV4KSA6IHVuZGVmaW5lZDtcblxuICAvLyBHZXQgZm9jdXNhYmxlIGlucHV0IGVsZW1lbnRzXG4gIGNvbnN0IGZvY3VzYWJsZUlucHV0czogSW5wdXRFbGVtZW50W10gPSBnZXRGb2N1c2FibGVJbnB1dEVsZW1lbnRzKGVsZW1lbnRzLCB7IG1pblRhYmluZGV4LCAuLi5vcHRzIH0pO1xuXG4gIGlmIChpc05vdEVtcHR5QXJyYXkoZm9jdXNhYmxlSW5wdXRzKSkge1xuICAgIC8vIEZvY3VzIG9uIGZpcnN0IGlucHV0c1xuICAgIGZvY3VzYWJsZUlucHV0c1swXS5mb2N1cygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNQcmV2aW91c0lucHV0PFQgPSBhbnk+KGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgZWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPFQ+Piwgb3B0cz86IEdldEZvY3VzYWJsZUlucHV0T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAvLyBDYW5jZWxsaW5nIGV2ZW50IChlLmcuIHdoZW4gZW1pdHRlZCBieSAoa2V5ZG93bi50YWIpIClcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGluZGV4XG4gIGNvbnN0IG1heFRhYmluZGV4ID0gZXZlbnQgJiYgaXNJbnB1dEVsZW1lbnQoZXZlbnQudGFyZ2V0KSA/IGV2ZW50LnRhcmdldC50YWJJbmRleCB8fCBldmVudC50YXJnZXQudGFiaW5kZXggOiB1bmRlZmluZWQ7XG5cbiAgLy8gR2V0IGZvY3VzYWJsZSBpbnB1dCBlbGVtZW50c1xuICBjb25zdCBmb2N1c2FibGVJbnB1dHM6IElucHV0RWxlbWVudFtdID0gZ2V0Rm9jdXNhYmxlSW5wdXRFbGVtZW50cyhlbGVtZW50cywgeyBtYXhUYWJpbmRleCwgLi4ub3B0cyB9KTtcblxuICBpZiAoaXNOb3RFbXB0eUFycmF5KGZvY3VzYWJsZUlucHV0cykpIHtcbiAgICAvLyBGb2N1cyBvbiBsYXN0IGlucHV0c1xuICAgIGZvY3VzYWJsZUlucHV0c1tmb2N1c2FibGVJbnB1dHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sobWFzazogKHN0cmluZyB8IFJlZ0V4cClbXSk6IG51bWJlcltdW10ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgbGV0IGZpcnN0X2luZGV4OiBudW1iZXI7XG4gIGxldCBsYXN0X2luZGV4OiBudW1iZXI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSAwICYmIG1hc2tbaV0udG9TdHJpbmcoKSA9PT0gJy9bKy1dLycpIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoJ1RPRE8gcHVzaCBzdGFydCBtYXNrJywgeyBpLCBtYXNrOiBtYXNrW2ldLnRvU3RyaW5nKCkgfSk7XG5cbiAgICAgIHJlc3VsdC5wdXNoKFswLCAwXSk7XG4gICAgfSBlbHNlIGlmIChtYXNrW2ldIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBpZiAoaXNOaWwoZmlyc3RfaW5kZXgpKSB7XG4gICAgICAgIGZpcnN0X2luZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzTm90TmlsKGZpcnN0X2luZGV4KSkge1xuICAgICAgICBsYXN0X2luZGV4ID0gaSAtIDE7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtmaXJzdF9pbmRleCwgbGFzdF9pbmRleF0pO1xuICAgICAgICBmaXJzdF9pbmRleCA9IG51bGw7XG4gICAgICAgIGxhc3RfaW5kZXggPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobWFza1ttYXNrLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgbGFzdF9pbmRleCA9IG1hc2subGVuZ3RoIC0gMTtcbiAgICByZXN1bHQucHVzaChbZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXhdKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRSYW5nZUZyb21DYXJldEluZGV4KGNhcmV0SW5kZXg6IG51bWJlciwgaW5wdXRSYW5nZXM6IG51bWJlcltdW10pOiBudW1iZXJbXSB7XG4gIGZvciAoY29uc3QgaW5wdXRSYW5nZSBvZiBpbnB1dFJhbmdlcykge1xuICAgIGlmIChjYXJldEluZGV4ID49IGlucHV0UmFuZ2VbMF0gJiYgY2FyZXRJbmRleCA8PSBpbnB1dFJhbmdlWzFdICsgMSkge1xuICAgICAgcmV0dXJuIGlucHV0UmFuZ2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
|