@datagrok-libraries/ml
Advanced tools
Comparing version 2.0.9 to 2.0.10
@@ -7,3 +7,3 @@ { | ||
"friendlyName": "Datagrok ML library", | ||
"version": "2.0.9", | ||
"version": "2.0.10", | ||
"description": "Machine learning supporting utilities", | ||
@@ -10,0 +10,0 @@ "dependencies": { |
@@ -181,9 +181,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
setTimeout(() => { | ||
const x1 = sp.dataFrame.get(axesNames[0], currentLine.mols[0]); | ||
const y1 = sp.dataFrame.get(axesNames[1], currentLine.mols[0]); | ||
const x2 = sp.dataFrame.get(axesNames[0], currentLine.mols[1]); | ||
const y2 = sp.dataFrame.get(axesNames[1], currentLine.mols[1]); | ||
const xDiff = Math.abs(x1 - x2) * 5; | ||
const yDiff = Math.abs(y1 - y2) * 5; | ||
sp.zoom(x1 < x2 ? x1 - xDiff : x2 - xDiff, y1 > y2 ? y1 + yDiff : y2 + yDiff, x1 > x2 ? x1 + xDiff : x2 + xDiff, y1 < y2 ? y1 - yDiff : y2 - yDiff); | ||
const { zoomLeft, zoomRight, zoomTop, zoomBottom } = getZoomCoordinates(sp.viewport.width, sp.viewport.height, sp.dataFrame.get(axesNames[0], currentLine.mols[0]), sp.dataFrame.get(axesNames[1], currentLine.mols[0]), sp.dataFrame.get(axesNames[0], currentLine.mols[1]), sp.dataFrame.get(axesNames[1], currentLine.mols[1])); | ||
sp.zoom(zoomLeft, zoomTop, zoomRight, zoomBottom); | ||
}, 300); | ||
@@ -197,2 +192,18 @@ zoom = false; | ||
} | ||
function getZoomCoordinates(W0, H0, x1, y1, x2, y2) { | ||
const W1 = Math.abs(x1 - x2); | ||
const H1 = Math.abs(y1 - y2); | ||
const scaleW = W0 / W1; | ||
const scaleH = H0 / H1; | ||
const scale = Math.min(scaleW, scaleH); | ||
const W2 = (W0 / scale) * 5; | ||
const H2 = (H0 / scale) * 5; | ||
const left = x1 < x2 ? x1 : x2; | ||
const top = y1 > y2 ? y1 : y2; | ||
const zoomLeft = (left + W1 / 2) - W2 / 2; | ||
const zoomRight = zoomLeft + W2; | ||
const zoomTop = (top - H1 / 2) + H2 / 2; | ||
const zoomBottom = zoomTop - H2; | ||
return { zoomLeft: zoomLeft, zoomRight: zoomRight, zoomTop: zoomTop, zoomBottom: zoomBottom }; | ||
} | ||
function checkCursorOnLine(event, canvas, lines) { | ||
@@ -271,2 +282,2 @@ const rect = canvas.getBoundingClientRect(); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBc0M3RixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBZ0IsaUJBQWlCLENBQ25DLEVBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFVBQXFCLEVBQ3JCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUN4QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFlBQTZFLEVBQzdFLE9BQW1FLEVBQ25FLGVBQXFELEVBQ3JELE9BQWE7O1FBQ2YsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUU1RixNQUFNLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sWUFBWSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLFVBQVU7WUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksV0FBVztZQUMzQixFQUFFLENBQUMsT0FBTyxDQUFDLEdB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QyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7S0FDeEU7SUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7U0FDcEMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN4QyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQWdCLG9CQUFvQixDQUN0QyxHQUFXLEVBQ1gsTUFBaUIsRUFDakIsS0FBbUIsRUFDbkIsTUFBbUIsRUFDbkIsT0FBbUU7O1FBR3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxFQUFFLEdBQUcsQ0FBQyxDQUFFLENBQUM7U0FDdEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQUE7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsR0FBVyxFQUFFLFNBQWlCLEVBQUUsTUFBbUI7SUFFbkcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDaEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM5QixhQUFhLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUN4RjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgTWF0cml4IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmUge1xuICBpZDogbnVtYmVyO1xuICBtb2xzOiBudW1iZXJbXTtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGE6IG51bWJlcltdOyAvLyBbeCwgeV1cbiAgYjogbnVtYmVyW107IC8vIFt4LCB5XVxufVxuXG5pbnRlcmZhY2UgSVJlbmRlcmVkTGluZXMge1xuICBsaW5lczogSUxpbmVbXTtcbiAgbGluZXNEZjogREcuRGF0YUZyYW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXF1ZW5jZVNwYWNlUGFyYW1zIHtcbiAgICBzZXFDb2w6IERHLkNvbHVtbixcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLFxuICAgIGVtYmVkQXhlc05hbWVzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcXVlbmNlU3BhY2VSZXN1bHQge1xuICAgIGRpc3RhbmNlOiBNYXRyaXg7XG4gICAgY29vcmRpbmF0ZXM6IERHLkNvbHVtbkxpc3Q7XG4gIH1cblxuZXhwb3J0IGludGVyZmFjZSBJRHJhd1Rvb2x0aXBQYXJhbXMge1xuICB0b29sdGlwczogYW55LFxuICBsaW5lOiBJTGluZSxcbiAgZGY6IERHLkRhdGFGcmFtZSxcbiAgc2VxQ29sOiBERy5Db2x1bW4sXG4gIGFjdGl2aXR5OiBERy5Db2x1bW4sXG4gIHg6IG51bWJlcixcbiAgeTogbnVtYmVyXG59XG5cbmxldCB6b29tID0gZmFsc2U7XG5cbi8vIFNlYXJjaGVzIGZvciBhY3Rpdml0eSBjbGlmZnMgaW4gYSBjaGVtaWNhbCBkYXRhc2V0IGJ5IHNlbGVjdGVkIGN1dG9mZlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2aXR5Q2xpZmZzKFxuICAgIGRmOiBERy5EYXRhRnJhbWUsIFxuICAgIHNlcUNvbDogREcuQ29sdW1uLCBcbiAgICBheGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIHNjYXR0ZXJUaXRsZTogc3RyaW5nLFxuICAgIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gICAgc2ltaWxhcml0eTogbnVtYmVyLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHN0cmluZywgXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLCBcbiAgICBzZW1UeXBlOiBzdHJpbmcsXG4gICAgdW5pdHM6IHN0cmluZyxcbiAgICBzZXFTcGFjZUZ1bmM6IChwYXJhbXM6IElTZXF1ZW5jZVNwYWNlUGFyYW1zKSA9PiBQcm9taXNlPElTZXF1ZW5jZVNwYWNlUmVzdWx0PixcbiAgICBzaW1GdW5jOiAoY29sOiBERy5Db2x1bW4sIG1vbDogc3RyaW5nKSA9PiBQcm9taXNlPERHLkNvbHVtbiB8IG51bGw+LFxuICAgIHRvb2x0aXBEcmF3RnVuYzogKHBhcmFtczogSURyYXdUb29sdGlwUGFyYW1zKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBhbnkpIDogUHJvbWlzZTxERy5WaWV3ZXI+IHtcbiAgY29uc3QgYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID0gZmFsc2U7XG4gIGNvbnN0IE1JTl9TSU1JTEFSSVRZID0gODA7XG5cbiAgY29uc3QgaW5pdGlhbFNpbWlsYXJpdHlMaW1pdCA9IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA/IE1JTl9TSU1JTEFSSVRZIDogc2ltaWxhcml0eSAvIDEwMDtcblxuICBjb25zdCB7ZGlzdGFuY2UsIGNvb3JkaW5hdGVzfSA9IGF3YWl0IHNlcVNwYWNlRnVuYyh7XG4gICAgc2VxQ29sOiBzZXFDb2wsXG4gICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICBzaW1pbGFyaXR5TWV0cmljOiBzaW1pbGFyaXR5TWV0cmljLFxuICAgIGVtYmVkQXhlc05hbWVzOiBheGVzTmFtZXMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9KTtcblxuICBmb3IgKGNvbnN0IGNvbCBvZiBjb29yZGluYXRlcylcbiAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuXG4gIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBzZXFDb2wudG9MaXN0KCkpXSk7XG4gIGNvbnN0IGRpbSA9IHNlcUNvbC5sZW5ndGg7XG4gIGNvbnN0IHNpbUFycjogREcuQ29sdW1uW10gPSBBcnJheShkaW0gLSAxKTtcblxuICBpZiAoIWRpc3RhbmNlKVxuICAgIGF3YWl0IGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgZWxzZVxuICAgIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlLCBzaW1BcnIpO1xuXG4gIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG5cbiAgY29uc3Qgc2ltVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3Qgc2FsaVZhbHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4xOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBuMjogbnVtYmVyW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICBjb25zdCBzaW06IG51bWJlciA9IHNpbUFycltpXS5nZXQoaik7XG5cbiAgICAgIGlmIChzaW0gPj0gb3B0U2ltaWxhcml0eUxpbWl0KSB7XG4gICAgICAgIG4xLnB1c2goaSk7XG4gICAgICAgIG4yLnB1c2goaSArIGogKyAxKTtcbiAgICAgICAgc2ltVmFscy5wdXNoKHNpbSk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChpKSAtIGFjdGl2aXRpZXMuZ2V0KGkgKyBqICsgMSkpO1xuICAgICAgICBpZiAoc2ltICE9IDEpXG4gICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNhbGlWYWxzLnB1c2goSW5maW5pdHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOC8oc2FsaU1heCAtIHNhbGlNaW4pO1xuXG5cbiAgY29uc3QgbmVpZ2hib3Vyc0NvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgY29uc3Qgc2ltaWxhcml0eUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgY29uc3Qgc2FsaUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBuMS5sZW5ndGg7ICsraSkge1xuICAgIG5laWdoYm91cnNDb3VudFtuMVtpXV0gKz0gMTtcbiAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgc2ltaWxhcml0eUNvdW50W24xW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgIHNpbWlsYXJpdHlDb3VudFtuMltpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgIGlmIChhY3Rpdml0aWVzLmdldChuMVtpXSkgPiBhY3Rpdml0aWVzLmdldChuMltpXSkpXG4gICAgICAgIHNhbGlDb3VudFtuMVtpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgICBlbHNlXG4gICAgICAgIHNhbGlDb3VudFtuMltpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2FsaTogREcuQ29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG5cbiAgZGYuY29sdW1ucy5hZGQoc2FsaSk7XG5cbiAgY29uc3QgdmlldyA9IGdyb2suc2hlbGwuZ2V0VGFibGVWaWV3KGRmLm5hbWUpO1xuICBjb25zdCBzcCA9IHZpZXcuYWRkVmlld2VyKERHLlZpZXdlci5zY2F0dGVyUGxvdChkZiwge1xuICAgIHhDb2x1bW5OYW1lOiBheGVzTmFtZXNbMF0sXG4gICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICBzaXplOiBzYWxpLm5hbWUsXG4gICAgY29sb3I6IGFjdGl2aXRpZXMubmFtZSxcbiAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93WVNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93U2l6ZVNlbGVjdG9yOiBmYWxzZSxcbiAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgbWFya2VyTWluU2l6ZTogNSxcbiAgICBtYXJrZXJNYXhTaXplOiAyNSxcbiAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gIH0pKSBhcyBERy5TY2F0dGVyUGxvdFZpZXdlcjtcblxuICBjb25zdCBjYW52YXMgPSAoc3AuZ2V0SW5mbygpIGFzIGFueSlbJ2NhbnZhcyddO1xuICBjb25zdCBsaW5lc1JlcyA9IGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxQ29sLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpO1xuICBjb25zdCB0b29sdGlwczogYW55ID0ge307XG5cbiAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNb2xJZHggPSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wgJiYgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sLm5hbWUgPT09ICcyX3NlcScgPyAxIDogMDtcbiAgICBzcC5kYXRhRnJhbWUuY3VycmVudFJvd0lkeCA9XG4gICAgICBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IC0xID8gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XS5tb2xzW2N1cnJlbnRNb2xJZHhdIDogLTE7XG4gICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICB9KTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICBpZiAobGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHggIT09IC0xKSB7XG4gICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICB9XG4gICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICB9KTtcbiAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gIH0pO1xuXG4gIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG5cbiAgbGluZXNEZkdyaWQub25DZWxsQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICB6b29tID0gdHJ1ZTtcbiAgfSk7XG5cbiAgY29uc3QgbGlzdENsaWZmc0xpbmsgPSB1aS5idXR0b24oYCR7bGluZXNSZXMubGluZXNEZi5yb3dDb3VudH0gY2xpZmZzYCwgKCkgPT4ge1xuICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7dGl0bGU6ICdBY3Rpdml0eSBjbGlmZnMnfSlcbiAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgIC5zaG93KCk7XG4gICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gIH0pO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcblxuICBsZXQgdGltZXI6IE5vZGVKUy5UaW1lb3V0O1xuICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB0aW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICBjb25zdCBkcmF3VG9vbHRpcFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgIGxpbmU6IGxpbmUsXG4gICAgICAgICAgICBkZjogZGYsXG4gICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9vbHRpcERyYXdGdW5jKGRyYXdUb29sdGlwUGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICB1aS50b29sdGlwLnNob3codG9vbHRpcHNbbGluZS5pZF0sIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9KTtcblxuICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcblxuICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gbGluZS5pZCkge1xuICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgZGYuY3VycmVudFJvd0lkeCA9IGxpbmUubW9sc1swXTtcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLFxuICAgICAgICBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgY29uc3QgY3VycmVudExpbmUgPSBsaW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdO1xuICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICAgIGNvbnN0IHgxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgIGNvbnN0IHkxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgIGNvbnN0IHgyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgIGNvbnN0IHkyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgIGNvbnN0IHhEaWZmID0gTWF0aC5hYnMoeDEgLSB4MikqNTtcbiAgICAgICAgICBjb25zdCB5RGlmZiA9IE1hdGguYWJzKHkxIC0geTIpKjU7XG4gICAgICAgICAgc3Auem9vbSh4MSA8IHgyID8geDEgLSB4RGlmZiA6IHgyIC0geERpZmYsXG4gICAgICAgICAgICB5MSA+IHkyID8geTEgKyB5RGlmZiA6IHkyICArIHlEaWZmLFxuICAgICAgICAgICAgeDEgPiB4MiA/IHgxICsgeERpZmYgOiB4MiArIHhEaWZmLFxuICAgICAgICAgICAgeTEgPCB5MiA/IHkxIC0geURpZmYgOiB5MiAtIHlEaWZmKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgem9vbSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHNwLmFkZFByb3BlcnR5KCdzaW1pbGFyaXR5TGltaXQnLCAnZG91YmxlJywgb3B0U2ltaWxhcml0eUxpbWl0KTtcbiAgcmV0dXJuIHNwO1xufVxuXG5mdW5jdGlvbiBjaGVja0N1cnNvck9uTGluZShldmVudDogYW55LCBjYW52YXM6IGFueSwgbGluZXM6IElMaW5lW10pOiBJTGluZSB8IG51bGwge1xuICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgZGlzdCA9XG4gICAgICBNYXRoLmFicyhNYXRoLmh5cG90KGxpbmUuYVswXSAtIHgsIGxpbmUuYVsxXSAtIHkpICtcbiAgICAgIE1hdGguaHlwb3QobGluZS5iWzBdIC0geCwgbGluZS5iWzFdIC0geSkgLSBNYXRoLmh5cG90KGxpbmUuYVswXSAtIGxpbmUuYlswXSwgbGluZS5hWzFdIC0gbGluZS5iWzFdKSk7XG4gICAgaWYgKGRpc3QgPCAyKVxuICAgICAgcmV0dXJuIGxpbmU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckxpbmVzKHNwOiBERy5TY2F0dGVyUGxvdFZpZXdlcixcbiAgeEF4aXM6IHN0cmluZywgeUF4aXM6IHN0cmluZywgbGluZXNSZXM6IElSZW5kZXJlZExpbmVzLCBzYWxpVmFsczogbnVtYmVyW10sIHNhbGlPcGFjaXR5Q29lZjogbnVtYmVyLCBzYWxpTWluOiBudW1iZXIpOiBJTGluZSBbXSB7XG4gIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gIGNvbnN0IGNhbnZhcyA9IChzcC5nZXRJbmZvKCkgYXMge1tpbmRleDogc3RyaW5nXSA6IGFueX0pWydjYW52YXMnXTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh4QXhpcyk7XG4gIGNvbnN0IHkgPSBzcC5kYXRhRnJhbWUhLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICBjb25zdCBwb2ludFRvID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzFdKSwgeS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgIGxpbmVzW2ldLmEgPSBbcG9pbnRGcm9tLngsIHBvaW50RnJvbS55XTtcbiAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgIGxpbmUubW92ZVRvKGxpbmVzW2ldLmFbMF0sIGxpbmVzW2ldLmFbMV0pO1xuICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICBjb25zdCBvcGFjaXR5ID0gc2FsaVZhbHNbaV0gPT09IEluZmluaXR5ID8gMSA6IDAuMiArIChzYWxpVmFsc1tpXSAtIHNhbGlNaW4pKnNhbGlPcGFjaXR5Q29lZjtcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke2NvbG9yfSwke29wYWNpdHl9KWA7XG4gICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVzW2ldLmlkID09PSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPyAzIDogMTtcbiAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICB9XG4gIHJldHVybiBsaW5lcztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGluZXMoXG4gIG4xOiBudW1iZXJbXSwgXG4gIG4yOiBudW1iZXJbXSwgXG4gIHNlcTogREcuQ29sdW1uLCBcbiAgYWN0aXZpdGllczogREcuQ29sdW1uLCBcbiAgc2FsaVZhbHM6IG51bWJlcltdLFxuICBzZW1UeXBlOiBzdHJpbmcsXG4gIHVuaXRzOiBzdHJpbmcpIDogSVJlbmRlcmVkTGluZXMge1xuICBjb25zdCBsaW5lczogSUxpbmVbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbnVtMSA9IG4xW2ldO1xuICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICBsaW5lcy5wdXNoKHtpZDogaSwgbW9sczogW251bTEsIG51bTJdLCBzZWxlY3RlZDogZmFsc2UsIGE6IFtdLCBiOiBbXX0pO1xuICB9XG4gIGNvbnN0IGxpbmVzRGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKGxpbmVzLmxlbmd0aCk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpOiBudW1iZXIpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAuaW5pdCgoaTogbnVtYmVyKSA9PiBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzBdKSAtIGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdJbnQoJ2xpbmVfaW5kZXgnKS5pbml0KChpOiBudW1iZXIpID0+IGkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NhbGknKS5pbml0KChpOiBudW1iZXIpID0+IHNhbGlWYWxzW2ldKTtcbiAgbGluZXNEZi5jb2woJzFfc2VxJykhLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgbGluZXNEZi5jb2woJzJfc2VxJykhLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgbGluZXNEZi5jb2woJzFfc2VxJykhLnNlbVR5cGUgPSBzZW1UeXBlO1xuICBsaW5lc0RmLmNvbCgnMl9zZXEnKSEuc2VtVHlwZSA9IHNlbVR5cGU7XG4gIHJldHVybiB7bGluZXMsIGxpbmVzRGZ9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXgoXG4gICAgZGltOiBudW1iZXIsIFxuICAgIHNlcUNvbDogREcuQ29sdW1uLCBcbiAgICBkZlNlcTogREcuRGF0YUZyYW1lLCBcbiAgICBzaW1BcnI6IERHLkNvbHVtbltdLFxuICAgIHNpbUZ1bmM6IChjb2w6IERHLkNvbHVtbiwgbW9sOiBzdHJpbmcpID0+IFByb21pc2U8REcuQ29sdW1uIHwgbnVsbD5cbiAgICApXG4gIDogUHJvbWlzZTxERy5Db2x1bW5bXT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBtb2wgPSBzZXFDb2wuZ2V0KGkpO1xuICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgIHNpbUFycltpXSA9IChhd2FpdCBzaW1GdW5jKGRmU2VxLmNvbCgnc2VxJykhLCBtb2wpKSE7XG4gIH1cbiAgcmV0dXJuIHNpbUFycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW06IG51bWJlciwgZGlzdGFuY2VzOiBNYXRyaXgsIHNpbUFycjogREcuQ29sdW1uW10pXG4gIDogREcuQ29sdW1uW10ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbSAtIDE7ICsraSkge1xuICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBkaW07ICsrailcbiAgICAgIHNpbWlsYXJpdHlBcnIucHVzaChnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlc1tpXVtqXSkpO1xuICAgIHNpbUFycltpXSA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdzaW1pbGFyaXR5JywgRmxvYXQzMkFycmF5LmZyb20oc2ltaWxhcml0eUFycikpO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59Il19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBc0M3RixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBZ0IsaUJBQWlCLENBQ25DLEVBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFNBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFVBQXFCLEVBQ3JCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUN4QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFlBQTZFLEVBQzdFLE9BQW1FLEVBQ25FLGVBQXFELEVBQ3JELE9BQWE7O1FBQ2YsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUU1RixNQUFNLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sWUFBWSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLFVBQVU7WUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLElBQUksV0FBVztZQUMzQixFQUFFLENBQUMsT0FBTyxDQUFDLEdB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QUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFDLGVBQWUsQ0FBQztRQUM3RixHQUFHLENBQUMsV0FBVyxHQUFHLFFBQVEsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLEVBQVksRUFDWixFQUFZLEVBQ1osR0FBYyxFQUNkLFVBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLE9BQWUsRUFDZixLQUFhO0lBQ2IsTUFBTSxLQUFLLEdBQVksRUFBRSxDQUFDO0lBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztLQUN4RTtJQUNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBZ0Isb0JBQW9CLENBQ3RDLEdBQVcsRUFDWCxNQUFpQixFQUNqQixLQUFtQixFQUNuQixNQUFtQixFQUNuQixPQUFtRTs7UUFHckUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFFLEVBQUUsR0FBRyxDQUFDLENBQUUsQ0FBQztTQUN0RDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FBQTtBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRSxNQUFtQjtJQUVuRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNoQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBNYXRyaXggfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBJTGluZSB7XG4gIGlkOiBudW1iZXI7XG4gIG1vbHM6IG51bWJlcltdO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgYTogbnVtYmVyW107IC8vIFt4LCB5XVxuICBiOiBudW1iZXJbXTsgLy8gW3gsIHldXG59XG5cbmludGVyZmFjZSBJUmVuZGVyZWRMaW5lcyB7XG4gIGxpbmVzOiBJTGluZVtdO1xuICBsaW5lc0RmOiBERy5EYXRhRnJhbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcXVlbmNlU3BhY2VQYXJhbXMge1xuICAgIHNlcUNvbDogREcuQ29sdW1uLFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBzaW1pbGFyaXR5TWV0cmljOiBzdHJpbmcsXG4gICAgZW1iZWRBeGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VxdWVuY2VTcGFjZVJlc3VsdCB7XG4gICAgZGlzdGFuY2U6IE1hdHJpeDtcbiAgICBjb29yZGluYXRlczogREcuQ29sdW1uTGlzdDtcbiAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElEcmF3VG9vbHRpcFBhcmFtcyB7XG4gIHRvb2x0aXBzOiBhbnksXG4gIGxpbmU6IElMaW5lLFxuICBkZjogREcuRGF0YUZyYW1lLFxuICBzZXFDb2w6IERHLkNvbHVtbixcbiAgYWN0aXZpdHk6IERHLkNvbHVtbixcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXJcbn1cblxubGV0IHpvb20gPSBmYWxzZTtcblxuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoXG4gICAgZGY6IERHLkRhdGFGcmFtZSwgXG4gICAgc2VxQ29sOiBERy5Db2x1bW4sIFxuICAgIGF4ZXNOYW1lczogc3RyaW5nW10sXG4gICAgc2NhdHRlclRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aXZpdGllczogREcuQ29sdW1uLCBcbiAgICBzaW1pbGFyaXR5OiBudW1iZXIsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLCBcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsIFxuICAgIHNlbVR5cGU6IHN0cmluZyxcbiAgICB1bml0czogc3RyaW5nLFxuICAgIHNlcVNwYWNlRnVuYzogKHBhcmFtczogSVNlcXVlbmNlU3BhY2VQYXJhbXMpID0+IFByb21pc2U8SVNlcXVlbmNlU3BhY2VSZXN1bHQ+LFxuICAgIHNpbUZ1bmM6IChjb2w6IERHLkNvbHVtbiwgbW9sOiBzdHJpbmcpID0+IFByb21pc2U8REcuQ29sdW1uIHwgbnVsbD4sXG4gICAgdG9vbHRpcERyYXdGdW5jOiAocGFyYW1zOiBJRHJhd1Rvb2x0aXBQYXJhbXMpID0+IHZvaWQsXG4gICAgb3B0aW9ucz86IGFueSkgOiBQcm9taXNlPERHLlZpZXdlcj4ge1xuICBjb25zdCBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPSBmYWxzZTtcbiAgY29uc3QgTUlOX1NJTUlMQVJJVFkgPSA4MDtcblxuICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuXG4gIGNvbnN0IHtkaXN0YW5jZSwgY29vcmRpbmF0ZXN9ID0gYXdhaXQgc2VxU3BhY2VGdW5jKHtcbiAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgZW1iZWRBeGVzTmFtZXM6IGF4ZXNOYW1lcyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgY29sIG9mIGNvb3JkaW5hdGVzKVxuICAgIGRmLmNvbHVtbnMuYWRkKGNvbCk7XG5cbiAgY29uc3QgZGZTZXEgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW0RHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgJ3NlcScsIHNlcUNvbC50b0xpc3QoKSldKTtcbiAgY29uc3QgZGltID0gc2VxQ29sLmxlbmd0aDtcbiAgY29uc3Qgc2ltQXJyOiBERy5Db2x1bW5bXSA9IEFycmF5KGRpbSAtIDEpO1xuXG4gIGlmICghZGlzdGFuY2UpXG4gICAgYXdhaXQgZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpO1xuICBlbHNlXG4gICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG5cbiAgY29uc3Qgb3B0U2ltaWxhcml0eUxpbWl0ID0gaW5pdGlhbFNpbWlsYXJpdHlMaW1pdDtcblxuICBjb25zdCBzaW1WYWxzOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBzYWxpVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgbjE6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4yOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqICE9IGRpbSAtIDEgLSBpOyArK2opIHtcbiAgICAgIGNvbnN0IHNpbTogbnVtYmVyID0gc2ltQXJyW2ldLmdldChqKTtcblxuICAgICAgaWYgKHNpbSA+PSBvcHRTaW1pbGFyaXR5TGltaXQpIHtcbiAgICAgICAgbjEucHVzaChpKTtcbiAgICAgICAgbjIucHVzaChpICsgaiArIDEpO1xuICAgICAgICBzaW1WYWxzLnB1c2goc2ltKTtcbiAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGkpIC0gYWN0aXZpdGllcy5nZXQoaSArIGogKyAxKSk7XG4gICAgICAgIGlmIChzaW0gIT0gMSlcbiAgICAgICAgICBzYWxpVmFscy5wdXNoKGRpZmYgLyAoMSAtIHNpbSkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2FsaVZhbHNXaXRob3V0SW5maW5pdHkgPSBzYWxpVmFscy5maWx0ZXIoaXQgPT4gaXQgIT09IEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU1pbiA9IE1hdGgubWluKC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU1heCA9IE1hdGgubWF4KC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgY29uc3Qgc2FsaU9wYWNpdHlDb2VmID0gMC44LyhzYWxpTWF4IC0gc2FsaU1pbik7XG5cblxuICBjb25zdCBuZWlnaGJvdXJzQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICBjb25zdCBzaW1pbGFyaXR5Q291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICBjb25zdCBzYWxpQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgbmVpZ2hib3Vyc0NvdW50W24xW2ldXSArPSAxO1xuICAgIG5laWdoYm91cnNDb3VudFtuMltpXV0gKz0gMTtcbiAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgc2ltaWxhcml0eUNvdW50W24yW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgIGlmIChzYWxpVmFsc1tpXSAhPSBJbmZpbml0eSkge1xuICAgICAgaWYgKGFjdGl2aXRpZXMuZ2V0KG4xW2ldKSA+IGFjdGl2aXRpZXMuZ2V0KG4yW2ldKSlcbiAgICAgICAgc2FsaUNvdW50W24xW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzYWxpOiBERy5Db2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIGBzYWxpXyR7YXhlc05hbWVzWzBdLnN1YnN0cmluZyhheGVzTmFtZXNbMF0ubGFzdEluZGV4T2YoJ18nKSl9YCwgc2FsaUNvdW50KTtcblxuICBkZi5jb2x1bW5zLmFkZChzYWxpKTtcblxuICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgeENvbHVtbk5hbWU6IGF4ZXNOYW1lc1swXSxcbiAgICB5Q29sdW1uTmFtZTogYXhlc05hbWVzWzFdLFxuICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICBjb2xvcjogYWN0aXZpdGllcy5uYW1lLFxuICAgIHNob3dYU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dTaXplU2VsZWN0b3I6IGZhbHNlLFxuICAgIHNob3dDb2xvclNlbGVjdG9yOiBmYWxzZSxcbiAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgIG1hcmtlck1heFNpemU6IDI1LFxuICAgIHRpdGxlOiBzY2F0dGVyVGl0bGVcbiAgfSkpIGFzIERHLlNjYXR0ZXJQbG90Vmlld2VyO1xuXG4gIGNvbnN0IGNhbnZhcyA9IChzcC5nZXRJbmZvKCkgYXMgYW55KVsnY2FudmFzJ107XG4gIGNvbnN0IGxpbmVzUmVzID0gY3JlYXRlTGluZXMobjEsIG4yLCBzZXFDb2wsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cyk7XG4gIGNvbnN0IHRvb2x0aXBzOiBhbnkgPSB7fTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uQ3VycmVudENlbGxDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgIHNwLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID1cbiAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gIH0pO1xuXG4gIGxpbmVzUmVzLmxpbmVzRGYub25TZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgIH1cbiAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgIH0pO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgfSk7XG5cbiAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydhY3RfZGlmZiddLCBbZmFsc2VdKTtcblxuICBsaW5lc0RmR3JpZC5vbkNlbGxDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIHpvb20gPSB0cnVlO1xuICB9KTtcblxuICBjb25zdCBsaXN0Q2xpZmZzTGluayA9IHVpLmJ1dHRvbihgJHtsaW5lc1Jlcy5saW5lc0RmLnJvd0NvdW50fSBjbGlmZnNgLCAoKSA9PiB7XG4gICAgY29uc3QgY2xpZmZzRGlhbG9nID0gdWkuZGlhbG9nKHt0aXRsZTogJ0FjdGl2aXR5IGNsaWZmcyd9KVxuICAgICAgLmFkZChsaW5lc0RmR3JpZC5yb290KVxuICAgICAgLnNob3coKTtcbiAgICBjbGlmZnNEaWFsb2cucm9vdC5pZCA9ICdjbGlmZnNfZGlhbG9nJztcbiAgfSk7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUudG9wID0gJzEwcHgnO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgc3Aucm9vdC5hcHBlbmQobGlzdENsaWZmc0xpbmspO1xuXG4gIGxldCB0aW1lcjogTm9kZUpTLlRpbWVvdXQ7XG4gIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgaWYgKCF0b29sdGlwc1tsaW5lLmlkXSkge1xuICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgdG9vbHRpcHM6IHRvb2x0aXBzLFxuICAgICAgICAgICAgbGluZTogbGluZSxcbiAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgYWN0aXZpdHk6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgIH1cbiAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH0pO1xuXG4gIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbihldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLnNlbGVjdGlvbi5zZXQobGluZS5pZCwgbGluZS5zZWxlY3RlZCk7XG5cbiAgICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuXG4gICAgICAgIGxpbmVzUmVzLmxpbmVzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSBsaW5lLmlkKSB7XG4gICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID0gbGluZS5pZDtcbiAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgc3Aub25FdmVudCgnZDQtYmVmb3JlLWRyYXctc2NlbmUnKVxuICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gcmVuZGVyTGluZXMoc3AsXG4gICAgICAgIGF4ZXNOYW1lc1swXSwgYXhlc05hbWVzWzFdLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbik7XG4gICAgICBpZiAoem9vbSkge1xuICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgY29uc3Qge3pvb21MZWZ0LCB6b29tUmlnaHQsIHpvb21Ub3AsIHpvb21Cb3R0b219ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgc3Audmlld3BvcnQud2lkdGgsXG4gICAgICAgICAgICBzcC52aWV3cG9ydC5oZWlnaHQsXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1sxXSlcbiAgICAgICAgICApICAgICAgICBcbiAgICAgICAgICBzcC56b29tKHpvb21MZWZ0LFxuICAgICAgICAgICAgem9vbVRvcCxcbiAgICAgICAgICAgIHpvb21SaWdodCxcbiAgICAgICAgICAgIHpvb21Cb3R0b20pO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgc3AuYWRkUHJvcGVydHkoJ3NpbWlsYXJpdHlMaW1pdCcsICdkb3VibGUnLCBvcHRTaW1pbGFyaXR5TGltaXQpO1xuICByZXR1cm4gc3A7XG59XG5cbmZ1bmN0aW9uIGdldFpvb21Db29yZGluYXRlcyhXMDogbnVtYmVyLCBIMDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gIGNvbnN0IFcxID0gTWF0aC5hYnMoeDEgLSB4Mik7XG4gIGNvbnN0IEgxID0gTWF0aC5hYnMoeTEgLSB5Mik7XG4gIGNvbnN0IHNjYWxlVyA9IFcwIC8gVzE7XG4gIGNvbnN0IHNjYWxlSCA9IEgwIC8gSDE7XG4gIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oc2NhbGVXLCBzY2FsZUgpO1xuICBjb25zdCBXMiA9IChXMCAvIHNjYWxlKSAqIDU7XG4gIGNvbnN0IEgyID0gKEgwIC8gc2NhbGUpICogNTtcbiAgY29uc3QgbGVmdCA9IHgxIDwgeDIgPyB4MSA6IHgyO1xuICBjb25zdCB0b3AgPSB5MSA+IHkyID8geTEgOiB5MjtcbiAgY29uc3Qgem9vbUxlZnQgPSAobGVmdCArIFcxIC8gMikgLSBXMiAvIDI7XG4gIGNvbnN0IHpvb21SaWdodCA9IHpvb21MZWZ0ICsgVzI7XG4gIGNvbnN0IHpvb21Ub3AgPSAodG9wIC0gSDEgLyAyKSArIEgyIC8gMjtcbiAgY29uc3Qgem9vbUJvdHRvbSA9IHpvb21Ub3AgLSBIMjtcbiAgcmV0dXJuIHt6b29tTGVmdDogem9vbUxlZnQsIHpvb21SaWdodDogem9vbVJpZ2h0LCB6b29tVG9wOiB6b29tVG9wLCB6b29tQm90dG9tOiB6b29tQm90dG9tfTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQ6IGFueSwgY2FudmFzOiBhbnksIGxpbmVzOiBJTGluZVtdKTogSUxpbmUgfCBudWxsIHtcbiAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IGRpc3QgPVxuICAgICAgTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgIGlmIChkaXN0IDwgMilcbiAgICAgIHJldHVybiBsaW5lO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcDogREcuU2NhdHRlclBsb3RWaWV3ZXIsXG4gIHhBeGlzOiBzdHJpbmcsIHlBeGlzOiBzdHJpbmcsIGxpbmVzUmVzOiBJUmVuZGVyZWRMaW5lcywgc2FsaVZhbHM6IG51bWJlcltdLCBzYWxpT3BhY2l0eUNvZWY6IG51bWJlciwgc2FsaU1pbjogbnVtYmVyKTogSUxpbmUgW10ge1xuICBjb25zdCBsaW5lcyA9IGxpbmVzUmVzLmxpbmVzO1xuICBjb25zdCBjYW52YXMgPSAoc3AuZ2V0SW5mbygpIGFzIHtbaW5kZXg6IHN0cmluZ10gOiBhbnl9KVsnY2FudmFzJ107XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgY29uc3QgeCA9IHNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh5QXhpcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb2ludEZyb20gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMF0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc1tpXS5hID0gW3BvaW50RnJvbS54LCBwb2ludEZyb20ueV07XG4gICAgbGluZXNbaV0uYiA9IFtwb2ludFRvLngsIHBvaW50VG8ueV07XG4gICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICBsaW5lLm1vdmVUbyhsaW5lc1tpXS5hWzBdLCBsaW5lc1tpXS5hWzFdKTtcbiAgICBjb25zdCBjb2xvciA9IGxpbmVzW2ldLnNlbGVjdGVkID8gJzI1NSwyNTUsMCcgOiAnMCwxMjgsMCc7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSpzYWxpT3BhY2l0eUNvZWY7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgIGN0eC5saW5lV2lkdGggPSBsaW5lc1tpXS5pZCA9PT0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID8gMyA6IDE7XG4gICAgbGluZS5saW5lVG8obGluZXNbaV0uYlswXSwgbGluZXNbaV0uYlsxXSk7XG4gICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgfVxuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVzKFxuICBuMTogbnVtYmVyW10sIFxuICBuMjogbnVtYmVyW10sIFxuICBzZXE6IERHLkNvbHVtbiwgXG4gIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gIHNhbGlWYWxzOiBudW1iZXJbXSxcbiAgc2VtVHlwZTogc3RyaW5nLFxuICB1bml0czogc3RyaW5nKSA6IElSZW5kZXJlZExpbmVzIHtcbiAgY29uc3QgbGluZXM6IElMaW5lW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG51bTEgPSBuMVtpXTtcbiAgICBjb25zdCBudW0yID0gbjJbaV07XG4gICAgbGluZXMucHVzaCh7aWQ6IGksIG1vbHM6IFtudW0xLCBudW0yXSwgc2VsZWN0ZWQ6IGZhbHNlLCBhOiBbXSwgYjogW119KTtcbiAgfVxuICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcxX3NlcScpLmluaXQoKGk6IG51bWJlcikgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzJfc2VxJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdhY3RfZGlmZicpXG4gICAgLmluaXQoKGk6IG51bWJlcikgPT4gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1swXSkgLSBhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzFdKSkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaTogbnVtYmVyKSA9PiBpKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaTogbnVtYmVyKSA9PiBzYWxpVmFsc1tpXSk7XG4gIGxpbmVzRGYuY29sKCcxX3NlcScpIS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gIGxpbmVzRGYuY29sKCcyX3NlcScpIS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gIGxpbmVzRGYuY29sKCcxX3NlcScpIS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgbGluZXNEZi5jb2woJzJfc2VxJykhLnNlbVR5cGUgPSBzZW1UeXBlO1xuICByZXR1cm4ge2xpbmVzLCBsaW5lc0RmfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4KFxuICAgIGRpbTogbnVtYmVyLCBcbiAgICBzZXFDb2w6IERHLkNvbHVtbiwgXG4gICAgZGZTZXE6IERHLkRhdGFGcmFtZSwgXG4gICAgc2ltQXJyOiBERy5Db2x1bW5bXSxcbiAgICBzaW1GdW5jOiAoY29sOiBERy5Db2x1bW4sIG1vbDogc3RyaW5nKSA9PiBQcm9taXNlPERHLkNvbHVtbiB8IG51bGw+XG4gICAgKVxuICA6IFByb21pc2U8REcuQ29sdW1uW10+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICBkZlNlcS5yb3dzLnJlbW92ZUF0KDAsIDEsIGZhbHNlKTtcbiAgICBzaW1BcnJbaV0gPSAoYXdhaXQgc2ltRnVuYyhkZlNlcS5jb2woJ3NlcScpISwgbW9sKSkhO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltOiBudW1iZXIsIGRpc3RhbmNlczogTWF0cml4LCBzaW1BcnI6IERHLkNvbHVtbltdKVxuICA6IERHLkNvbHVtbltdIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBzaW1pbGFyaXR5QXJyID0gW107XG4gICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICBzaW1BcnJbaV0gPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnc2ltaWxhcml0eScsIEZsb2F0MzJBcnJheS5mcm9tKHNpbWlsYXJpdHlBcnIpKTtcbiAgfVxuICByZXR1cm4gc2ltQXJyO1xufSJdfQ== |
Sorry, the diff of this file is not supported yet
190487
1407