@lumeer/pivot 0.0.7 → 0.0.8

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.
@@ -37,6 +37,9 @@ export function filterVisibleCells(cells, state, parentIndex = 0) {
37
37
  const originalRowIndex = parentIndex + index;
38
38
  if (firstCell.isAttributeHeader || firstCell.isSummary || firstCell.isValue) {
39
39
  currentRows.push(setOriginalRowIndexForHeaders(row, originalRowIndex));
40
+ for (let i = 1; i < firstCell.rowSpan; i++) {
41
+ currentRows.push(setOriginalRowIndexForHeaders(cells[index + i], originalRowIndex + i));
42
+ }
40
43
  return currentRows;
41
44
  }
42
45
  if (isRowVisible(index, cellsChildIndexesMap, 0, state)) {
@@ -147,4 +150,4 @@ export function collapseAllCells(table) {
147
150
  }
148
151
  return { cells };
149
152
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUF1QjtJQUN0RCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBdUI7SUFDN0QsT0FBTyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUF1QjtJQUMxRCxPQUFPLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUF1QixFQUFFLFdBQW1CLEVBQUUsS0FBeUI7SUFDcEcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFBO0tBQ3RFO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxFQUFxQixFQUFFLEVBQXFCO0lBQ3ZFLE9BQU8sRUFBRSxFQUFFLE9BQU8sS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQTtBQUMvRCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUF5QixFQUFFLFFBQWdCLEVBQUUsV0FBbUI7SUFDM0Ys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QUUsSUFBSSxFQUFDLENBQUM7YUFDakM7U0FDRjtLQUNGO0lBQ0QsT0FBTyxFQUFDLEtBQUssRUFBQyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xtclBpdm90VGFibGUsIExtclBpdm90VGFibGVDZWxsfSBmcm9tICcuL2xtci1waXZvdC10YWJsZSc7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tICdAbHVtZWVyL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBMbXJQaXZvdFRhYmxlU3RhdGUge1xuICBjZWxscz86IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZSB7XG4gIGNvbGxhcHNlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxFeHBhbmRhYmxlKGNlbGw6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0NlbGxDb2x1bW5zRXhwYW5kYWJsZShjZWxsKSB8fCBpc0NlbGxSb3dzRXhwYW5kYWJsZShjZWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbENvbHVtbnNFeHBhbmRhYmxlKGNlbGw6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjZWxsPy5jaGlsZEluZGV4ZXM/Lmxlbmd0aCA+IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxSb3dzRXhwYW5kYWJsZShjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2VsbD8ucm93SW5kZXhlcz8ubGVuZ3RoID4gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUV4cGFuZGVkKGNlbGw6IExtclBpdm90VGFibGVDZWxsLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGNlbGwub3JpZ2luYWxSb3dJbmRleCkge1xuICAgIHJldHVybiB0b2dnbGVFeHBhbmRlZFN0YXRlKHN0YXRlLCBjZWxsLm9yaWdpbmFsUm93SW5kZXgsIGNvbHVtbkluZGV4KVxuICB9XG4gIHJldHVybiBzdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2VsbHNTYW1lKGMxOiBMbXJQaXZvdFRhYmxlQ2VsbCwgYzI6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjMT8uc3VtbWFyeSA9PT0gYzI/LnN1bW1hcnkgJiYgYzE/LnZhbHVlID09PSBjMj8udmFsdWVcbn1cblxuZnVuY3Rpb24gdG9nZ2xlRXhwYW5kZWRTdGF0ZShzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlLCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0luZGV4KSB8fCBpc051bGxPclVuZGVmaW5lZChjb2x1bW5JbmRleCkgfHwgcm93SW5kZXggPCAwIHx8IGNvbHVtbkluZGV4IDwgMCkge1xuICAgIHJldHVybiBzdGF0ZVxuICB9XG5cbiAgY29uc3QgY2VsbHNDb3B5ID0gWy4uLihzdGF0ZT8uY2VsbHMgfHwgW10pXVxuICBjb25zdCByb3dDb3B5ID0gWy4uLihjZWxsc0NvcHlbcm93SW5kZXhdIHx8IFtdKV1cbiAgcm93Q29weVtjb2x1bW5JbmRleF0gPSB7Li4ucm93Q29weVtjb2x1bW5JbmRleF0sIGNvbGxhcHNlZDogIXJvd0NvcHlbY29sdW1uSW5kZXhdPy5jb2xsYXBzZWR9XG4gIGNlbGxzQ29weVtyb3dJbmRleF0gPSByb3dDb3B5XG4gIHJldHVybiB7Li4uc3RhdGUsIGNlbGxzOiBjZWxsc0NvcHl9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJWaXNpYmxlQ2VsbHMoY2VsbHM6IExtclBpdm90VGFibGVDZWxsW11bXSwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdLCBwYXJlbnRJbmRleDogbnVtYmVyID0gMCk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIGNvbnN0IGNlbGxzQ2hpbGRJbmRleGVzTWFwID0gY3JlYXRlQ2VsbHNDaGlsZEluZGV4ZXNNYXAoY2VsbHMpO1xuICByZXR1cm4gY2VsbHMucmVkdWNlPExtclBpdm90VGFibGVDZWxsW11bXT4oKGN1cnJlbnRSb3dzLCByb3csIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3RDZWxsID0gcm93WzBdXG4gICAgaWYgKCFmaXJzdENlbGwpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Um93c1xuICAgIH1cbiAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gcGFyZW50SW5kZXggKyBpbmRleFxuICAgIGlmIChmaXJzdENlbGwuaXNBdHRyaWJ1dGVIZWFkZXIgfHwgZmlyc3RDZWxsLmlzU3VtbWFyeSB8fCBmaXJzdENlbGwuaXNWYWx1ZSkge1xuICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhyb3csIG9yaWdpbmFsUm93SW5kZXgpKVxuICAgICAgcmV0dXJuIGN1cnJlbnRSb3dzXG4gICAgfVxuXG4gICAgaWYgKGlzUm93VmlzaWJsZShpbmRleCwgY2VsbHNDaGlsZEluZGV4ZXNNYXAsIDAsIHN0YXRlKSkge1xuICAgICAgaWYgKHJvdy5zb21lKGNlbGwgPT4gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbCkpKSB7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc3RhdGU/LltpbmRleF0/LlswXT8uY29sbGFwc2VkXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF0YUhlYWRlckluZGV4ID0gdGFrZUlmKHJvdy5maW5kSW5kZXgoY2VsbCA9PiBjZWxsLmlzVmFsdWUpLCByZXN1bHQgPT4gcmVzdWx0ID49IDApID8/IDFcbiAgICAgICAgICBjb25zdCByb3dDb3B5ID0gWy4uLnJvd11cbiAgICAgICAgICByb3dDb3B5WzBdID0ge1xuICAgICAgICAgICAgLi4ucm93WzBdLFxuICAgICAgICAgICAgY29sU3BhbjogZmlyc3REYXRhSGVhZGVySW5kZXgsXG4gICAgICAgICAgICByb3dTcGFuOiAxLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdERhdGFIZWFkZXJJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICByb3dDb3B5W2ldID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRSb3dzLnB1c2gocm93Q29weSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXN0ZWRDZWxscyA9IHNsaWNlTWF0cml4KGNlbGxzLCBpbmRleCwgaW5kZXggKyBmaXJzdENlbGwucm93U3BhbiAtIDEsIDEsIGNlbGxzWzBdLmxlbmd0aCAtIDEpXG4gICAgICAgICAgY29uc3QgbmVzdGVkU3RhdGUgPSBzbGljZU1hdHJpeChzdGF0ZSwgaW5kZXgsIGluZGV4ICsgZmlyc3RDZWxsLnJvd1NwYW4gLSAxLCAxLCBjZWxsc1swXS5sZW5ndGggLSAxKVxuICAgICAgICAgIGNvbnN0IG5lc3RlZEZpbHRlcmVkUm93cyA9IGZpbHRlclZpc2libGVDZWxscyhuZXN0ZWRDZWxscywgbmVzdGVkU3RhdGUsIG9yaWdpbmFsUm93SW5kZXgpXG4gICAgICAgICAgY29uc3QgY2hhbmdlZENlbGwgPSB7XG4gICAgICAgICAgICAuLi5yb3dbMF0sXG4gICAgICAgICAgICByb3dTcGFuOiBuZXN0ZWRGaWx0ZXJlZFJvd3MubGVuZ3RoLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IGFwcGVuZENlbGxUb01hdHJpeChjaGFuZ2VkQ2VsbCwgbmVzdGVkRmlsdGVyZWRSb3dzKTtcbiAgICAgICAgICBjdXJyZW50Um93cy5wdXNoKC4uLm5ld1Jvd3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMocm93LCBvcmlnaW5hbFJvd0luZGV4KSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhjZWxsc1tpbmRleCArIGldLCBvcmlnaW5hbFJvd0luZGV4ICsgaSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFJvd3NcbiAgfSwgW10pXG59XG5cbmZ1bmN0aW9uIHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKHJvdzogTG1yUGl2b3RUYWJsZUNlbGxbXSwgb3JpZ2luYWxSb3dJbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZUNlbGxbXSB7XG4gIGNvbnN0IG5ld1JvdyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNlbGwgPSByb3dbaV07XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICBuZXdSb3cucHVzaChjZWxsKTtcbiAgICB9IGVsc2UgaWYgKGNlbGwuaXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIFsuLi5uZXdSb3csIC4uLnJvdy5zbGljZShpKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHsuLi5jZWxsLCBvcmlnaW5hbFJvd0luZGV4fSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1Jvd1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDZWxsVG9NYXRyaXgoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwsIHJvd3M6IExtclBpdm90VGFibGVDZWxsW11bXSk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIHJldHVybiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4gaW5kZXggPiAwID8gW3VuZGVmaW5lZCwgLi4ucm93XSA6IFtjZWxsLCAuLi5yb3ddKVxufVxuXG5mdW5jdGlvbiB0YWtlSWY8VD4odmFsdWU6IFQsIHByZWRpY2F0ZTogKHY6IFQpID0+IGJvb2xlYW4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzbGljZU1hdHJpeDxUPihjZWxsczogVFtdW10sIGZyb21Sb3c6IG51bWJlciwgdG9Sb3c6IG51bWJlciwgZnJvbUNvbHVtbjogbnVtYmVyLCB0b0NvbHVtbjogbnVtYmVyKTogVFtdW10ge1xuICBjb25zdCBzbGljZWRNYXRyaXg6IFRbXVtdID0gW107XG4gIGZvciAobGV0IGkgPSBmcm9tUm93OyBpIDw9IHRvUm93OyBpKyspIHtcbiAgICBjb25zdCByb3c6IFRbXSA9IChjZWxscz8uW2ldIHx8IFtdKS5zbGljZShmcm9tQ29sdW1uLCB0b0NvbHVtbiArIDEpO1xuICAgIHNsaWNlZE1hdHJpeC5wdXNoKHJvdyk7XG4gIH1cblxuICByZXR1cm4gc2xpY2VkTWF0cml4O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDZWxsc0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXVtdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IGZpcnN0Q2VsbHMgPSByb3dDZWxscy5tYXAocm93Q2VsbHMgPT4gcm93Q2VsbHNbMF0pO1xuICByZXR1cm4gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChmaXJzdENlbGxzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXSk6IG51bWJlcltdW10ge1xuICByZXR1cm4gKHJvd0NlbGxzIHx8IFtdKS5yZWR1Y2UoKG1hcCwgY2VsbCwgaW5kZXgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkSW5kZXggb2YgKGNlbGw/LnJvd0luZGV4ZXMgfHwgW10pKSB7XG4gICAgICBpZiAoIW1hcFtjaGlsZEluZGV4XSlcbiAgICAgICAgbWFwW2NoaWxkSW5kZXhdID0gW11cbiAgICAgIG1hcFtjaGlsZEluZGV4XS5wdXNoKGluZGV4KVxuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gaXNSb3dWaXNpYmxlKGluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXhlc01hcDogbnVtYmVyW11bXSwgY29sdW1uSW5kZXg6IG51bWJlciwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkSW5kZXhlcyA9IGNoaWxkSW5kZXhlc01hcD8uW2luZGV4XSB8fCBbXVxuICByZXR1cm4gIWNoaWxkSW5kZXhlcy5sZW5ndGggfHwgY2hpbGRJbmRleGVzLnNvbWUoY2hpbGRJbmRleCA9PiAhc3RhdGU/LltjaGlsZEluZGV4XT8uW2NvbHVtbkluZGV4XT8uY29sbGFwc2VkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGFwc2VBbGxDZWxscyh0YWJsZTogTG1yUGl2b3RUYWJsZSk6IExtclBpdm90VGFibGVTdGF0ZSB7XG4gIGNvbnN0IGNlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlW11bXSA9IFtdO1xuICBjb25zdCB0YWJsZUNlbGxzID0gdGFibGU/LmNlbGxzIHx8IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlQ2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB0YWJsZUNlbGxzW2ldO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBjZWxsID0gcm93W2pdO1xuICAgICAgaWYgKGNlbGw/LmlzVmFsdWUgfHwgY2VsbD8uaXNBdHRyaWJ1dGVIZWFkZXIgfHwgY2VsbD8uaXNIZWFkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaXNDZWxsRXhwYW5kYWJsZShjZWxsKSkge1xuICAgICAgICBpZiAoIWNlbGxzW2ldKSB7XG4gICAgICAgICAgY2VsbHNbaV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsc1tpXVtqXSA9IHtjb2xsYXBzZWQ6IHRydWV9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4ge2NlbGxzfVxufVxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG1yLXBpdm90LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG1yLXBpdm90LXRhYmxlL3NyYy9saWIvdXRpbC9sbXItcGl2b3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBVWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUF1QjtJQUN0RCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBdUI7SUFDN0QsT0FBTyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUF1QjtJQUMxRCxPQUFPLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUF1QixFQUFFLFdBQW1CLEVBQUUsS0FBeUI7SUFDcEcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFBO0tBQ3RFO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxFQUFxQixFQUFFLEVBQXFCO0lBQ3ZFLE9BQU8sRUFBRSxFQUFFLE9BQU8sS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxLQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQTtBQUMvRCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUF5QixFQUFFLFFBQWdCLEVBQUUsV0FBbUI7SUFDM0Ys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QU07YUFDUDtZQUNELElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDZjtnQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUM7YUFDakM7U0FDRjtLQUNGO0lBQ0QsT0FBTyxFQUFDLEtBQUssRUFBQyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xtclBpdm90VGFibGUsIExtclBpdm90VGFibGVDZWxsfSBmcm9tICcuL2xtci1waXZvdC10YWJsZSc7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tICdAbHVtZWVyL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBMbXJQaXZvdFRhYmxlU3RhdGUge1xuICBjZWxscz86IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG1yUGl2b3RUYWJsZUNlbGxTdGF0ZSB7XG4gIGNvbGxhcHNlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxFeHBhbmRhYmxlKGNlbGw6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0NlbGxDb2x1bW5zRXhwYW5kYWJsZShjZWxsKSB8fCBpc0NlbGxSb3dzRXhwYW5kYWJsZShjZWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbENvbHVtbnNFeHBhbmRhYmxlKGNlbGw6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjZWxsPy5jaGlsZEluZGV4ZXM/Lmxlbmd0aCA+IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NlbGxSb3dzRXhwYW5kYWJsZShjZWxsOiBMbXJQaXZvdFRhYmxlQ2VsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2VsbD8ucm93SW5kZXhlcz8ubGVuZ3RoID4gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUV4cGFuZGVkKGNlbGw6IExtclBpdm90VGFibGVDZWxsLCBjb2x1bW5JbmRleDogbnVtYmVyLCBzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGNlbGwub3JpZ2luYWxSb3dJbmRleCkge1xuICAgIHJldHVybiB0b2dnbGVFeHBhbmRlZFN0YXRlKHN0YXRlLCBjZWxsLm9yaWdpbmFsUm93SW5kZXgsIGNvbHVtbkluZGV4KVxuICB9XG4gIHJldHVybiBzdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlQ2VsbHNTYW1lKGMxOiBMbXJQaXZvdFRhYmxlQ2VsbCwgYzI6IExtclBpdm90VGFibGVDZWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjMT8uc3VtbWFyeSA9PT0gYzI/LnN1bW1hcnkgJiYgYzE/LnZhbHVlID09PSBjMj8udmFsdWVcbn1cblxuZnVuY3Rpb24gdG9nZ2xlRXhwYW5kZWRTdGF0ZShzdGF0ZTogTG1yUGl2b3RUYWJsZVN0YXRlLCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZVN0YXRlIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0luZGV4KSB8fCBpc051bGxPclVuZGVmaW5lZChjb2x1bW5JbmRleCkgfHwgcm93SW5kZXggPCAwIHx8IGNvbHVtbkluZGV4IDwgMCkge1xuICAgIHJldHVybiBzdGF0ZVxuICB9XG5cbiAgY29uc3QgY2VsbHNDb3B5ID0gWy4uLihzdGF0ZT8uY2VsbHMgfHwgW10pXVxuICBjb25zdCByb3dDb3B5ID0gWy4uLihjZWxsc0NvcHlbcm93SW5kZXhdIHx8IFtdKV1cbiAgcm93Q29weVtjb2x1bW5JbmRleF0gPSB7Li4ucm93Q29weVtjb2x1bW5JbmRleF0sIGNvbGxhcHNlZDogIXJvd0NvcHlbY29sdW1uSW5kZXhdPy5jb2xsYXBzZWR9XG4gIGNlbGxzQ29weVtyb3dJbmRleF0gPSByb3dDb3B5XG4gIHJldHVybiB7Li4uc3RhdGUsIGNlbGxzOiBjZWxsc0NvcHl9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJWaXNpYmxlQ2VsbHMoY2VsbHM6IExtclBpdm90VGFibGVDZWxsW11bXSwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdLCBwYXJlbnRJbmRleDogbnVtYmVyID0gMCk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIGNvbnN0IGNlbGxzQ2hpbGRJbmRleGVzTWFwID0gY3JlYXRlQ2VsbHNDaGlsZEluZGV4ZXNNYXAoY2VsbHMpO1xuICByZXR1cm4gY2VsbHMucmVkdWNlPExtclBpdm90VGFibGVDZWxsW11bXT4oKGN1cnJlbnRSb3dzLCByb3csIGluZGV4KSA9PiB7XG4gICAgY29uc3QgZmlyc3RDZWxsID0gcm93WzBdXG4gICAgaWYgKCFmaXJzdENlbGwpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Um93c1xuICAgIH1cbiAgICBjb25zdCBvcmlnaW5hbFJvd0luZGV4ID0gcGFyZW50SW5kZXggKyBpbmRleFxuICAgIGlmIChmaXJzdENlbGwuaXNBdHRyaWJ1dGVIZWFkZXIgfHwgZmlyc3RDZWxsLmlzU3VtbWFyeSB8fCBmaXJzdENlbGwuaXNWYWx1ZSkge1xuICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhyb3csIG9yaWdpbmFsUm93SW5kZXgpKVxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMoY2VsbHNbaW5kZXggKyBpXSwgb3JpZ2luYWxSb3dJbmRleCArIGkpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRSb3dzXG4gICAgfVxuXG4gICAgaWYgKGlzUm93VmlzaWJsZShpbmRleCwgY2VsbHNDaGlsZEluZGV4ZXNNYXAsIDAsIHN0YXRlKSkge1xuICAgICAgaWYgKHJvdy5zb21lKGNlbGwgPT4gaXNDZWxsQ29sdW1uc0V4cGFuZGFibGUoY2VsbCkpKSB7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc3RhdGU/LltpbmRleF0/LlswXT8uY29sbGFwc2VkXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0RGF0YUhlYWRlckluZGV4ID0gdGFrZUlmKHJvdy5maW5kSW5kZXgoY2VsbCA9PiBjZWxsLmlzVmFsdWUpLCByZXN1bHQgPT4gcmVzdWx0ID49IDApID8/IDFcbiAgICAgICAgICBjb25zdCByb3dDb3B5ID0gWy4uLnJvd11cbiAgICAgICAgICByb3dDb3B5WzBdID0ge1xuICAgICAgICAgICAgLi4ucm93WzBdLFxuICAgICAgICAgICAgY29sU3BhbjogZmlyc3REYXRhSGVhZGVySW5kZXgsXG4gICAgICAgICAgICByb3dTcGFuOiAxLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdERhdGFIZWFkZXJJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICByb3dDb3B5W2ldID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRSb3dzLnB1c2gocm93Q29weSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXN0ZWRDZWxscyA9IHNsaWNlTWF0cml4KGNlbGxzLCBpbmRleCwgaW5kZXggKyBmaXJzdENlbGwucm93U3BhbiAtIDEsIDEsIGNlbGxzWzBdLmxlbmd0aCAtIDEpXG4gICAgICAgICAgY29uc3QgbmVzdGVkU3RhdGUgPSBzbGljZU1hdHJpeChzdGF0ZSwgaW5kZXgsIGluZGV4ICsgZmlyc3RDZWxsLnJvd1NwYW4gLSAxLCAxLCBjZWxsc1swXS5sZW5ndGggLSAxKVxuICAgICAgICAgIGNvbnN0IG5lc3RlZEZpbHRlcmVkUm93cyA9IGZpbHRlclZpc2libGVDZWxscyhuZXN0ZWRDZWxscywgbmVzdGVkU3RhdGUsIG9yaWdpbmFsUm93SW5kZXgpXG4gICAgICAgICAgY29uc3QgY2hhbmdlZENlbGwgPSB7XG4gICAgICAgICAgICAuLi5yb3dbMF0sXG4gICAgICAgICAgICByb3dTcGFuOiBuZXN0ZWRGaWx0ZXJlZFJvd3MubGVuZ3RoLFxuICAgICAgICAgICAgb3JpZ2luYWxSb3dJbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IGFwcGVuZENlbGxUb01hdHJpeChjaGFuZ2VkQ2VsbCwgbmVzdGVkRmlsdGVyZWRSb3dzKTtcbiAgICAgICAgICBjdXJyZW50Um93cy5wdXNoKC4uLm5ld1Jvd3MpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRSb3dzLnB1c2goc2V0T3JpZ2luYWxSb3dJbmRleEZvckhlYWRlcnMocm93LCBvcmlnaW5hbFJvd0luZGV4KSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdENlbGwucm93U3BhbjsgaSsrKSB7XG4gICAgICAgICAgY3VycmVudFJvd3MucHVzaChzZXRPcmlnaW5hbFJvd0luZGV4Rm9ySGVhZGVycyhjZWxsc1tpbmRleCArIGldLCBvcmlnaW5hbFJvd0luZGV4ICsgaSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFJvd3NcbiAgfSwgW10pXG59XG5cbmZ1bmN0aW9uIHNldE9yaWdpbmFsUm93SW5kZXhGb3JIZWFkZXJzKHJvdzogTG1yUGl2b3RUYWJsZUNlbGxbXSwgb3JpZ2luYWxSb3dJbmRleDogbnVtYmVyKTogTG1yUGl2b3RUYWJsZUNlbGxbXSB7XG4gIGNvbnN0IG5ld1JvdyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNlbGwgPSByb3dbaV07XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICBuZXdSb3cucHVzaChjZWxsKTtcbiAgICB9IGVsc2UgaWYgKGNlbGwuaXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIFsuLi5uZXdSb3csIC4uLnJvdy5zbGljZShpKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHsuLi5jZWxsLCBvcmlnaW5hbFJvd0luZGV4fSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1Jvd1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDZWxsVG9NYXRyaXgoY2VsbDogTG1yUGl2b3RUYWJsZUNlbGwsIHJvd3M6IExtclBpdm90VGFibGVDZWxsW11bXSk6IExtclBpdm90VGFibGVDZWxsW11bXSB7XG4gIHJldHVybiByb3dzLm1hcCgocm93LCBpbmRleCkgPT4gaW5kZXggPiAwID8gW3VuZGVmaW5lZCwgLi4ucm93XSA6IFtjZWxsLCAuLi5yb3ddKVxufVxuXG5mdW5jdGlvbiB0YWtlSWY8VD4odmFsdWU6IFQsIHByZWRpY2F0ZTogKHY6IFQpID0+IGJvb2xlYW4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBzbGljZU1hdHJpeDxUPihjZWxsczogVFtdW10sIGZyb21Sb3c6IG51bWJlciwgdG9Sb3c6IG51bWJlciwgZnJvbUNvbHVtbjogbnVtYmVyLCB0b0NvbHVtbjogbnVtYmVyKTogVFtdW10ge1xuICBjb25zdCBzbGljZWRNYXRyaXg6IFRbXVtdID0gW107XG4gIGZvciAobGV0IGkgPSBmcm9tUm93OyBpIDw9IHRvUm93OyBpKyspIHtcbiAgICBjb25zdCByb3c6IFRbXSA9IChjZWxscz8uW2ldIHx8IFtdKS5zbGljZShmcm9tQ29sdW1uLCB0b0NvbHVtbiArIDEpO1xuICAgIHNsaWNlZE1hdHJpeC5wdXNoKHJvdyk7XG4gIH1cblxuICByZXR1cm4gc2xpY2VkTWF0cml4O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDZWxsc0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXVtdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IGZpcnN0Q2VsbHMgPSByb3dDZWxscy5tYXAocm93Q2VsbHMgPT4gcm93Q2VsbHNbMF0pO1xuICByZXR1cm4gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChmaXJzdENlbGxzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm93c0NoaWxkSW5kZXhlc01hcChyb3dDZWxsczogTG1yUGl2b3RUYWJsZUNlbGxbXSk6IG51bWJlcltdW10ge1xuICByZXR1cm4gKHJvd0NlbGxzIHx8IFtdKS5yZWR1Y2UoKG1hcCwgY2VsbCwgaW5kZXgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkSW5kZXggb2YgKGNlbGw/LnJvd0luZGV4ZXMgfHwgW10pKSB7XG4gICAgICBpZiAoIW1hcFtjaGlsZEluZGV4XSlcbiAgICAgICAgbWFwW2NoaWxkSW5kZXhdID0gW11cbiAgICAgIG1hcFtjaGlsZEluZGV4XS5wdXNoKGluZGV4KVxuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH0sIFtdKTtcbn1cblxuZnVuY3Rpb24gaXNSb3dWaXNpYmxlKGluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXhlc01hcDogbnVtYmVyW11bXSwgY29sdW1uSW5kZXg6IG51bWJlciwgc3RhdGU6IExtclBpdm90VGFibGVDZWxsU3RhdGVbXVtdKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoaWxkSW5kZXhlcyA9IGNoaWxkSW5kZXhlc01hcD8uW2luZGV4XSB8fCBbXVxuICByZXR1cm4gIWNoaWxkSW5kZXhlcy5sZW5ndGggfHwgY2hpbGRJbmRleGVzLnNvbWUoY2hpbGRJbmRleCA9PiAhc3RhdGU/LltjaGlsZEluZGV4XT8uW2NvbHVtbkluZGV4XT8uY29sbGFwc2VkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGFwc2VBbGxDZWxscyh0YWJsZTogTG1yUGl2b3RUYWJsZSk6IExtclBpdm90VGFibGVTdGF0ZSB7XG4gIGNvbnN0IGNlbGxzOiBMbXJQaXZvdFRhYmxlQ2VsbFN0YXRlW11bXSA9IFtdO1xuICBjb25zdCB0YWJsZUNlbGxzID0gdGFibGU/LmNlbGxzIHx8IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlQ2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB0YWJsZUNlbGxzW2ldO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBjZWxsID0gcm93W2pdO1xuICAgICAgaWYgKGNlbGw/LmlzVmFsdWUgfHwgY2VsbD8uaXNBdHRyaWJ1dGVIZWFkZXIgfHwgY2VsbD8uaXNIZWFkZXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoaXNDZWxsRXhwYW5kYWJsZShjZWxsKSkge1xuICAgICAgICBpZiAoIWNlbGxzW2ldKSB7XG4gICAgICAgICAgY2VsbHNbaV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsc1tpXVtqXSA9IHtjb2xsYXBzZWQ6IHRydWV9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4ge2NlbGxzfVxufVxuIl19