@lumeer/pivot 0.0.11 → 0.0.12

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.
@@ -118,7 +118,7 @@ function createCellsChildIndexesMap(rowCells) {
118
118
  }
119
119
  function createRowsChildIndexesMap(rowCells) {
120
120
  return (rowCells || []).reduce((map, cell, index) => {
121
- if (!cell.expandable) {
121
+ if (!cell?.expandable) {
122
122
  return map;
123
123
  }
124
124
  for (const childIndex of (cell?.rowIndexes || [])) {
@@ -153,4 +153,4 @@ export function collapseAllCells(table) {
153
153
  }
154
154
  return { cells };
155
155
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUF1QjtJQUN0RCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBdUI7SUFDN0QsT0FBTyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXVCO0lBQzFELE9BQU8sSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBdUIsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQ3BHLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQTtLQUN0RTtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBcUIsRUFBRSxFQUFxQjtJQUN2RSxPQUFPLEVBQUUsRUFBRSxPQUFPLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUE7QUFDL0QsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBeUIsRUFBRSxRQUFnQixFQUFFLFdBQW1CO0lBQzNGLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1FBQ3BHLE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBQyxDQUFBO0lBQzdGLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUE7SUFDN0IsT0FBTyxFQUFDLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQTRCLEVBQUUsS0FBaUMsRUFBRSxjQUFzQixDQUFDO0lBQ3pILE1BQU0sb0JBQW9CLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUF3QixDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDckUsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxPQUFPLFdBQVcsQ0FBQTtTQUNuQjtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQTtRQUM1QyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDM0UsV0FBVyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO1lBQ3RFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxXQUFXLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUN4RjtZQUNELE9BQU8sV0FBVyxDQUFBO1NBQ25CO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQTtnQkFDbEQsSUFBSSxXQUFXLEVBQUU7b0JBQ2YsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3BHLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtvQkFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHO3dCQUNYLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDVCxPQUFPLEVBQUUsb0JBQW9CO3dCQUM3QixPQUFPLEVBQUUsQ0FBQzt3QkFDVixnQkFBZ0I7cUJBQ2pCLENBQUE7b0JBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUM3QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFBO3FCQUN2QjtvQkFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2lCQUMxQjtxQkFBTTtvQkFDTCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7b0JBQ3BHLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtvQkFDcEcsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUE7b0JBQ3pGLE1BQU0sV0FBVyxHQUFHO3dCQUNsQixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ1QsT0FBTyxFQUFFLGtCQUFrQixDQUFDLE1BQU07d0JBQ2xDLGdCQUFnQjtxQkFDakIsQ0FBQTtvQkFDRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztvQkFDcEUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFBO2lCQUM3QjthQUNGO2lCQUFNO2dCQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtnQkFDdEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO2lCQUN4RjthQUNGO1NBQ0Y7UUFFRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDUixDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBQyxHQUF3QixFQUFFLGdCQUF3QjtJQUN2RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsSUFBSSxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQTtTQUN6QztLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUF1QixFQUFFLElBQTJCO0lBQzlFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUNuRixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUksS0FBUSxFQUFFLFNBQTRCO0lBQ3ZELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBWSxFQUFFLE9BQWUsRUFBRSxLQUFhLEVBQUUsVUFBa0IsRUFBRSxRQUFnQjtJQUN4RyxNQUFNLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEdBQUcsR0FBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEI7SUFFRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxRQUErQjtJQUNqRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsT0FBTyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxRQUE2QjtJQUM5RCxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUVELEtBQUssTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUNsQixHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ3RCLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDNUI7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsZUFBMkIsRUFBRSxXQUFtQixFQUFFLEtBQWlDO0lBQ3RILE1BQU0sWUFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNuRCxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQ2hILENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBb0I7SUFDbkQsTUFBTSxLQUFLLEdBQStCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsaUJBQWlCLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDOUQsTUFBTTthQUNQO1lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDYixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNmO2dCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0Y7SUFDRCxPQUFPLEVBQUMsS0FBSyxFQUFDLENBQUE7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG1yUGl2b3RUYWJsZSwgTG1yUGl2b3RUYWJsZUNlbGx9IGZyb20gJy4vbG1yLXBpdm90LXRhYmxlJztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gJ0BsdW1lZXIvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExtclBpdm90VGFibGVTdGF0ZSB7XG4gIGNlbGxzPzogTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZVtdW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlIHtcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbEV4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQ2VsbENvbHVtbnNFeHBhbmRhYmxlKGNlbGwpIHx8IGlzQ2VsbFJvd3NFeHBhbmRhYmxlKGNlbGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNlbGw/LmV4cGFuZGFibGUgJiYgY2VsbD8uY2hpbGRJbmRleGVzPy5sZW5ndGggPiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDZWxsUm93c0V4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNlbGw/LmV4cGFuZGFibGUgJiYgY2VsbD8ucm93SW5kZXhlcz8ubGVuZ3RoID4gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUV4cGFuZGVkKGNlbGw6IExtclBpdm90VGFibGVDZWxsLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGNlbGwub3JpZ2luYWxSb3dJbmRleCkge1xuICAgIHJldHVybiB0b2dnbGVFeHBhbmRlZFN0YXRlKHN0YXRlLCBjZWxsLm9yaWdpbmFsUm93SW5kZXgsIGNvbHVtbkluZGV4KVxuICB9XG4gIHJldHVybiBzdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2VsbHNTYW1lKGMxOiBMbXJQaXZvdFRhYmxlQ2VsbCwgYzI6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjMT8uc3VtbWFyeSA9PT0gYzI/LnN1bW1hcnkgJiYgYzE/LnZhbHVlID09PSBjMj8udmFsdWVcbn1cblxuZnVuY3Rpb24gdG9nZ2xlRXhwYW5kZWRTdGF0ZShzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlLCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0luZGV4KSB8fCBpc051bGxPclVuZGVmaW5lZChjb2x1bW5JbmRleCkgfHwgcm93SW5kZXggPCAwIHx8IGNvbHVtbkluZGV4IDwgMCkge1xuICAgIHJldHVybiBzdGF0ZVxuICB9XG5cbiAgY29uc3QgY2VsbHNDb3B5ID0gWy4uLihzdGF0ZT8uY2VsbHMgfHwgW10pXVxuICBjb25zdCByb3dDb3B5ID0gWy4uLihjZWxsc0NvcHlbcm93SW5kZXhdIHx8IFtdKV1cbiAgcm93Q29weVtjb2x1bW5JbmRleF0gPSB7Li4ucm93Q29weVtjb2x1bW5JbmRleF0sIGNvbGxhcHNlZDogIXJvd0NvcHlbY29sdW1uSW5kZXhdPy5jb2xsYXBzZWR9XG4gIGNlbGxzQ29weVtyb3dJbmRleF0gPSByb3dDb3B5XG4gIHJldHVybiB7Li4uc3RhdGUsIGNlbGxzOiBjZWxsc0NvcHl9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJWaXNpYmxlQ2VsbHMoY2VsbHM6IExtclBpdm90VGFibGVDZWxsW11bXSwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdLCBwYXJlbnRJbmRleDogbnVtYmVyID0gMCk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIGNvbnN0IGNlbGxzQ2hpbGRJbmRleGVzTWFwID0gY3JlYXRlQ2VsbHNDaGlsZEluZGV4ZXNNYXAoY2VsbHMpO1xuICByZXR1cm4gY2VsbHMucmVkdWNlPExtclBpdm90VGFibGVDZWxsW11bXT4oKGN1cnJlbnRSb3dzLCByb3csIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3RDZWxsID0gcm93WzBdXG4gICAgaWYgKCFmaXJzdENlbGwpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Um93c1xuICAgIH1cbiAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gcGFyZW50SW5kZXggKyBpbmRleFxuICAgIGlmIChmaXJzdENlbGwuaXNBdHRyaWJ1dGVIZWFkZXIgfHwgZmlyc3RDZWxsLmlzU3VtbWFyeSB8fCBmaXJzdENlbGwuaXNWYWx1ZSkge1xuICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhyb3csIG9yaWdpbmFsUm93SW5kZXgpKVxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMoY2VsbHNbaW5kZXggKyBpXSwgb3JpZ2luYWxSb3dJbmRleCArIGkpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRSb3dzXG4gICAgfVxuXG4gICAgaWYgKGlzUm93VmlzaWJsZShpbmRleCwgY2VsbHNDaGlsZEluZGV4ZXNNYXAsIDAsIHN0YXRlKSkge1xuICAgICAgaWYgKHJvdy5zb21lKGNlbGwgPT4gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbCkpKSB7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc3RhdGU/LltpbmRleF0/LlswXT8uY29sbGFwc2VkXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF0YUhlYWRlckluZGV4ID0gdGFrZUlmKHJvdy5maW5kSW5kZXgoY2VsbCA9PiBjZWxsLmlzVmFsdWUpLCByZXN1bHQgPT4gcmVzdWx0ID49IDApID8/IDFcbiAgICAgICAgICBjb25zdCByb3dDb3B5ID0gWy4uLnJvd11cbiAgICAgICAgICByb3dDb3B5WzBdID0ge1xuICAgICAgICAgICAgLi4ucm93WzBdLFxuICAgICAgICAgICAgY29sU3BhbjogZmlyc3REYXRhSGVhZGVySW5kZXgsXG4gICAgICAgICAgICByb3dTcGFuOiAxLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdERhdGFIZWFkZXJJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICByb3dDb3B5W2ldID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRSb3dzLnB1c2gocm93Q29weSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXN0ZWRDZWxscyA9IHNsaWNlTWF0cml4KGNlbGxzLCBpbmRleCwgaW5kZXggKyBmaXJzdENlbGwucm93U3BhbiAtIDEsIDEsIGNlbGxzWzBdLmxlbmd0aCAtIDEpXG4gICAgICAgICAgY29uc3QgbmVzdGVkU3RhdGUgPSBzbGljZU1hdHJpeChzdGF0ZSwgaW5kZXgsIGluZGV4ICsgZmlyc3RDZWxsLnJvd1NwYW4gLSAxLCAxLCBjZWxsc1swXS5sZW5ndGggLSAxKVxuICAgICAgICAgIGNvbnN0IG5lc3RlZEZpbHRlcmVkUm93cyA9IGZpbHRlclZpc2libGVDZWxscyhuZXN0ZWRDZWxscywgbmVzdGVkU3RhdGUsIG9yaWdpbmFsUm93SW5kZXgpXG4gICAgICAgICAgY29uc3QgY2hhbmdlZENlbGwgPSB7XG4gICAgICAgICAgICAuLi5yb3dbMF0sXG4gICAgICAgICAgICByb3dTcGFuOiBuZXN0ZWRGaWx0ZXJlZFJvd3MubGVuZ3RoLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IGFwcGVuZENlbGxUb01hdHJpeChjaGFuZ2VkQ2VsbCwgbmVzdGVkRmlsdGVyZWRSb3dzKTtcbiAgICAgICAgICBjdXJyZW50Um93cy5wdXNoKC4uLm5ld1Jvd3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMocm93LCBvcmlnaW5hbFJvd0luZGV4KSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhjZWxsc1tpbmRleCArIGldLCBvcmlnaW5hbFJvd0luZGV4ICsgaSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFJvd3NcbiAgfSwgW10pXG59XG5cbmZ1bmN0aW9uIHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKHJvdzogTG1yUGl2b3RUYWJsZUNlbGxbXSwgb3JpZ2luYWxSb3dJbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZUNlbGxbXSB7XG4gIGNvbnN0IG5ld1JvdyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNlbGwgPSByb3dbaV07XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICBuZXdSb3cucHVzaChjZWxsKTtcbiAgICB9IGVsc2UgaWYgKGNlbGwuaXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIFsuLi5uZXdSb3csIC4uLnJvdy5zbGljZShpKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHsuLi5jZWxsLCBvcmlnaW5hbFJvd0luZGV4fSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1Jvd1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDZWxsVG9NYXRyaXgoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwsIHJvd3M6IExtclBpdm90VGFibGVDZWxsW11bXSk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIHJldHVybiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4gaW5kZXggPiAwID8gW3VuZGVmaW5lZCwgLi4ucm93XSA6IFtjZWxsLCAuLi5yb3ddKVxufVxuXG5mdW5jdGlvbiB0YWtlSWY8VD4odmFsdWU6IFQsIHByZWRpY2F0ZTogKHY6IFQpID0+IGJvb2xlYW4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzbGljZU1hdHJpeDxUPihjZWxsczogVFtdW10sIGZyb21Sb3c6IG51bWJlciwgdG9Sb3c6IG51bWJlciwgZnJvbUNvbHVtbjogbnVtYmVyLCB0b0NvbHVtbjogbnVtYmVyKTogVFtdW10ge1xuICBjb25zdCBzbGljZWRNYXRyaXg6IFRbXVtdID0gW107XG4gIGZvciAobGV0IGkgPSBmcm9tUm93OyBpIDw9IHRvUm93OyBpKyspIHtcbiAgICBjb25zdCByb3c6IFRbXSA9IChjZWxscz8uW2ldIHx8IFtdKS5zbGljZShmcm9tQ29sdW1uLCB0b0NvbHVtbiArIDEpO1xuICAgIHNsaWNlZE1hdHJpeC5wdXNoKHJvdyk7XG4gIH1cblxuICByZXR1cm4gc2xpY2VkTWF0cml4O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDZWxsc0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXVtdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IGZpcnN0Q2VsbHMgPSByb3dDZWxscy5tYXAocm93Q2VsbHMgPT4gcm93Q2VsbHNbMF0pO1xuICByZXR1cm4gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChmaXJzdENlbGxzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXSk6IG51bWJlcltdW10ge1xuICByZXR1cm4gKHJvd0NlbGxzIHx8IFtdKS5yZWR1Y2UoKG1hcCwgY2VsbCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIWNlbGwuZXhwYW5kYWJsZSkge1xuICAgICAgcmV0dXJuIG1hcFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRJbmRleCBvZiAoY2VsbD8ucm93SW5kZXhlcyB8fCBbXSkpIHtcbiAgICAgIGlmICghbWFwW2NoaWxkSW5kZXhdKVxuICAgICAgICBtYXBbY2hpbGRJbmRleF0gPSBbXVxuICAgICAgbWFwW2NoaWxkSW5kZXhdLnB1c2goaW5kZXgpXG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSwgW10pO1xufVxuXG5mdW5jdGlvbiBpc1Jvd1Zpc2libGUoaW5kZXg6IG51bWJlciwgY2hpbGRJbmRleGVzTWFwOiBudW1iZXJbXVtdLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZVtdW10pOiBib29sZWFuIHtcbiAgY29uc3QgY2hpbGRJbmRleGVzID0gY2hpbGRJbmRleGVzTWFwPy5baW5kZXhdIHx8IFtdXG4gIHJldHVybiAhY2hpbGRJbmRleGVzLmxlbmd0aCB8fCBjaGlsZEluZGV4ZXMuc29tZShjaGlsZEluZGV4ID0+ICFzdGF0ZT8uW2NoaWxkSW5kZXhdPy5bY29sdW1uSW5kZXhdPy5jb2xsYXBzZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2xsYXBzZUFsbENlbGxzKHRhYmxlOiBMbXJQaXZvdFRhYmxlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgY29uc3QgY2VsbHM6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdID0gW107XG4gIGNvbnN0IHRhYmxlQ2VsbHMgPSB0YWJsZT8uY2VsbHMgfHwgW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGVDZWxscy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHRhYmxlQ2VsbHNbaV07XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3cubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IGNlbGwgPSByb3dbal07XG4gICAgICBpZiAoY2VsbD8uaXNWYWx1ZSB8fCBjZWxsPy5pc0F0dHJpYnV0ZUhlYWRlciB8fCBjZWxsPy5pc0hlYWRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChpc0NlbGxFeHBhbmRhYmxlKGNlbGwpKSB7XG4gICAgICAgIGlmICghY2VsbHNbaV0pIHtcbiAgICAgICAgICBjZWxsc1tpXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGNlbGxzW2ldW2pdID0ge2NvbGxhcHNlZDogdHJ1ZX07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7Y2VsbHN9XG59XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUF1QjtJQUN0RCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBdUI7SUFDN0QsT0FBTyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQXVCO0lBQzFELE9BQU8sSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBdUIsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQ3BHLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQTtLQUN0RTtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBcUIsRUFBRSxFQUFxQjtJQUN2RSxPQUFPLEVBQUUsRUFBRSxPQUFPLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsS0FBSyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUE7QUFDL0QsQ0FBQztBQUVELFNBQVMsbUJBQW1C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QUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsaUJBQWlCLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDOUQsTUFBTTthQUNQO1lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDYixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNmO2dCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0Y7SUFDRCxPQUFPLEVBQUMsS0FBSyxFQUFDLENBQUE7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG1yUGl2b3RUYWJsZSwgTG1yUGl2b3RUYWJsZUNlbGx9IGZyb20gJy4vbG1yLXBpdm90LXRhYmxlJztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gJ0BsdW1lZXIvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExtclBpdm90VGFibGVTdGF0ZSB7XG4gIGNlbGxzPzogTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZVtdW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlIHtcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbEV4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQ2VsbENvbHVtbnNFeHBhbmRhYmxlKGNlbGwpIHx8IGlzQ2VsbFJvd3NFeHBhbmRhYmxlKGNlbGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNlbGw/LmV4cGFuZGFibGUgJiYgY2VsbD8uY2hpbGRJbmRleGVzPy5sZW5ndGggPiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDZWxsUm93c0V4cGFuZGFibGUoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNlbGw/LmV4cGFuZGFibGUgJiYgY2VsbD8ucm93SW5kZXhlcz8ubGVuZ3RoID4gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUV4cGFuZGVkKGNlbGw6IExtclBpdm90VGFibGVDZWxsLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGNlbGwub3JpZ2luYWxSb3dJbmRleCkge1xuICAgIHJldHVybiB0b2dnbGVFeHBhbmRlZFN0YXRlKHN0YXRlLCBjZWxsLm9yaWdpbmFsUm93SW5kZXgsIGNvbHVtbkluZGV4KVxuICB9XG4gIHJldHVybiBzdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2VsbHNTYW1lKGMxOiBMbXJQaXZvdFRhYmxlQ2VsbCwgYzI6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjMT8uc3VtbWFyeSA9PT0gYzI/LnN1bW1hcnkgJiYgYzE/LnZhbHVlID09PSBjMj8udmFsdWVcbn1cblxuZnVuY3Rpb24gdG9nZ2xlRXhwYW5kZWRTdGF0ZShzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlLCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0luZGV4KSB8fCBpc051bGxPclVuZGVmaW5lZChjb2x1bW5JbmRleCkgfHwgcm93SW5kZXggPCAwIHx8IGNvbHVtbkluZGV4IDwgMCkge1xuICAgIHJldHVybiBzdGF0ZVxuICB9XG5cbiAgY29uc3QgY2VsbHNDb3B5ID0gWy4uLihzdGF0ZT8uY2VsbHMgfHwgW10pXVxuICBjb25zdCByb3dDb3B5ID0gWy4uLihjZWxsc0NvcHlbcm93SW5kZXhdIHx8IFtdKV1cbiAgcm93Q29weVtjb2x1bW5JbmRleF0gPSB7Li4ucm93Q29weVtjb2x1bW5JbmRleF0sIGNvbGxhcHNlZDogIXJvd0NvcHlbY29sdW1uSW5kZXhdPy5jb2xsYXBzZWR9XG4gIGNlbGxzQ29weVtyb3dJbmRleF0gPSByb3dDb3B5XG4gIHJldHVybiB7Li4uc3RhdGUsIGNlbGxzOiBjZWxsc0NvcHl9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJWaXNpYmxlQ2VsbHMoY2VsbHM6IExtclBpdm90VGFibGVDZWxsW11bXSwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdLCBwYXJlbnRJbmRleDogbnVtYmVyID0gMCk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIGNvbnN0IGNlbGxzQ2hpbGRJbmRleGVzTWFwID0gY3JlYXRlQ2VsbHNDaGlsZEluZGV4ZXNNYXAoY2VsbHMpO1xuICByZXR1cm4gY2VsbHMucmVkdWNlPExtclBpdm90VGFibGVDZWxsW11bXT4oKGN1cnJlbnRSb3dzLCByb3csIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3RDZWxsID0gcm93WzBdXG4gICAgaWYgKCFmaXJzdENlbGwpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Um93c1xuICAgIH1cbiAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gcGFyZW50SW5kZXggKyBpbmRleFxuICAgIGlmIChmaXJzdENlbGwuaXNBdHRyaWJ1dGVIZWFkZXIgfHwgZmlyc3RDZWxsLmlzU3VtbWFyeSB8fCBmaXJzdENlbGwuaXNWYWx1ZSkge1xuICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhyb3csIG9yaWdpbmFsUm93SW5kZXgpKVxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMoY2VsbHNbaW5kZXggKyBpXSwgb3JpZ2luYWxSb3dJbmRleCArIGkpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRSb3dzXG4gICAgfVxuXG4gICAgaWYgKGlzUm93VmlzaWJsZShpbmRleCwgY2VsbHNDaGlsZEluZGV4ZXNNYXAsIDAsIHN0YXRlKSkge1xuICAgICAgaWYgKHJvdy5zb21lKGNlbGwgPT4gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbCkpKSB7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc3RhdGU/LltpbmRleF0/LlswXT8uY29sbGFwc2VkXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF0YUhlYWRlckluZGV4ID0gdGFrZUlmKHJvdy5maW5kSW5kZXgoY2VsbCA9PiBjZWxsLmlzVmFsdWUpLCByZXN1bHQgPT4gcmVzdWx0ID49IDApID8/IDFcbiAgICAgICAgICBjb25zdCByb3dDb3B5ID0gWy4uLnJvd11cbiAgICAgICAgICByb3dDb3B5WzBdID0ge1xuICAgICAgICAgICAgLi4ucm93WzBdLFxuICAgICAgICAgICAgY29sU3BhbjogZmlyc3REYXRhSGVhZGVySW5kZXgsXG4gICAgICAgICAgICByb3dTcGFuOiAxLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdERhdGFIZWFkZXJJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICByb3dDb3B5W2ldID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRSb3dzLnB1c2gocm93Q29weSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXN0ZWRDZWxscyA9IHNsaWNlTWF0cml4KGNlbGxzLCBpbmRleCwgaW5kZXggKyBmaXJzdENlbGwucm93U3BhbiAtIDEsIDEsIGNlbGxzWzBdLmxlbmd0aCAtIDEpXG4gICAgICAgICAgY29uc3QgbmVzdGVkU3RhdGUgPSBzbGljZU1hdHJpeChzdGF0ZSwgaW5kZXgsIGluZGV4ICsgZmlyc3RDZWxsLnJvd1NwYW4gLSAxLCAxLCBjZWxsc1swXS5sZW5ndGggLSAxKVxuICAgICAgICAgIGNvbnN0IG5lc3RlZEZpbHRlcmVkUm93cyA9IGZpbHRlclZpc2libGVDZWxscyhuZXN0ZWRDZWxscywgbmVzdGVkU3RhdGUsIG9yaWdpbmFsUm93SW5kZXgpXG4gICAgICAgICAgY29uc3QgY2hhbmdlZENlbGwgPSB7XG4gICAgICAgICAgICAuLi5yb3dbMF0sXG4gICAgICAgICAgICByb3dTcGFuOiBuZXN0ZWRGaWx0ZXJlZFJvd3MubGVuZ3RoLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IGFwcGVuZENlbGxUb01hdHJpeChjaGFuZ2VkQ2VsbCwgbmVzdGVkRmlsdGVyZWRSb3dzKTtcbiAgICAgICAgICBjdXJyZW50Um93cy5wdXNoKC4uLm5ld1Jvd3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMocm93LCBvcmlnaW5hbFJvd0luZGV4KSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhjZWxsc1tpbmRleCArIGldLCBvcmlnaW5hbFJvd0luZGV4ICsgaSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFJvd3NcbiAgfSwgW10pXG59XG5cbmZ1bmN0aW9uIHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKHJvdzogTG1yUGl2b3RUYWJsZUNlbGxbXSwgb3JpZ2luYWxSb3dJbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZUNlbGxbXSB7XG4gIGNvbnN0IG5ld1JvdyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNlbGwgPSByb3dbaV07XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICBuZXdSb3cucHVzaChjZWxsKTtcbiAgICB9IGVsc2UgaWYgKGNlbGwuaXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIFsuLi5uZXdSb3csIC4uLnJvdy5zbGljZShpKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHsuLi5jZWxsLCBvcmlnaW5hbFJvd0luZGV4fSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1Jvd1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDZWxsVG9NYXRyaXgoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwsIHJvd3M6IExtclBpdm90VGFibGVDZWxsW11bXSk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIHJldHVybiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4gaW5kZXggPiAwID8gW3VuZGVmaW5lZCwgLi4ucm93XSA6IFtjZWxsLCAuLi5yb3ddKVxufVxuXG5mdW5jdGlvbiB0YWtlSWY8VD4odmFsdWU6IFQsIHByZWRpY2F0ZTogKHY6IFQpID0+IGJvb2xlYW4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzbGljZU1hdHJpeDxUPihjZWxsczogVFtdW10sIGZyb21Sb3c6IG51bWJlciwgdG9Sb3c6IG51bWJlciwgZnJvbUNvbHVtbjogbnVtYmVyLCB0b0NvbHVtbjogbnVtYmVyKTogVFtdW10ge1xuICBjb25zdCBzbGljZWRNYXRyaXg6IFRbXVtdID0gW107XG4gIGZvciAobGV0IGkgPSBmcm9tUm93OyBpIDw9IHRvUm93OyBpKyspIHtcbiAgICBjb25zdCByb3c6IFRbXSA9IChjZWxscz8uW2ldIHx8IFtdKS5zbGljZShmcm9tQ29sdW1uLCB0b0NvbHVtbiArIDEpO1xuICAgIHNsaWNlZE1hdHJpeC5wdXNoKHJvdyk7XG4gIH1cblxuICByZXR1cm4gc2xpY2VkTWF0cml4O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDZWxsc0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXVtdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IGZpcnN0Q2VsbHMgPSByb3dDZWxscy5tYXAocm93Q2VsbHMgPT4gcm93Q2VsbHNbMF0pO1xuICByZXR1cm4gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChmaXJzdENlbGxzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXSk6IG51bWJlcltdW10ge1xuICByZXR1cm4gKHJvd0NlbGxzIHx8IFtdKS5yZWR1Y2UoKG1hcCwgY2VsbCwgaW5kZXgpID0+IHtcbiAgICBpZiAoIWNlbGw/LmV4cGFuZGFibGUpIHtcbiAgICAgIHJldHVybiBtYXBcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkSW5kZXggb2YgKGNlbGw/LnJvd0luZGV4ZXMgfHwgW10pKSB7XG4gICAgICBpZiAoIW1hcFtjaGlsZEluZGV4XSlcbiAgICAgICAgbWFwW2NoaWxkSW5kZXhdID0gW11cbiAgICAgIG1hcFtjaGlsZEluZGV4XS5wdXNoKGluZGV4KVxuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gaXNSb3dWaXNpYmxlKGluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXhlc01hcDogbnVtYmVyW11bXSwgY29sdW1uSW5kZXg6IG51bWJlciwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkSW5kZXhlcyA9IGNoaWxkSW5kZXhlc01hcD8uW2luZGV4XSB8fCBbXVxuICByZXR1cm4gIWNoaWxkSW5kZXhlcy5sZW5ndGggfHwgY2hpbGRJbmRleGVzLnNvbWUoY2hpbGRJbmRleCA9PiAhc3RhdGU/LltjaGlsZEluZGV4XT8uW2NvbHVtbkluZGV4XT8uY29sbGFwc2VkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGFwc2VBbGxDZWxscyh0YWJsZTogTG1yUGl2b3RUYWJsZSk6IExtclBpdm90VGFibGVTdGF0ZSB7XG4gIGNvbnN0IGNlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlW11bXSA9IFtdO1xuICBjb25zdCB0YWJsZUNlbGxzID0gdGFibGU/LmNlbGxzIHx8IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlQ2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB0YWJsZUNlbGxzW2ldO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBjZWxsID0gcm93W2pdO1xuICAgICAgaWYgKGNlbGw/LmlzVmFsdWUgfHwgY2VsbD8uaXNBdHRyaWJ1dGVIZWFkZXIgfHwgY2VsbD8uaXNIZWFkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaXNDZWxsRXhwYW5kYWJsZShjZWxsKSkge1xuICAgICAgICBpZiAoIWNlbGxzW2ldKSB7XG4gICAgICAgICAgY2VsbHNbaV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsc1tpXVtqXSA9IHtjb2xsYXBzZWQ6IHRydWV9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4ge2NlbGxzfVxufVxuIl19