@rivet-health/design-system 40.30.0 → 40.32.0

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.
Files changed (26) hide show
  1. package/esm2020/lib/format/truncate/truncate.component.mjs +3 -2
  2. package/esm2020/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -2
  3. package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +2 -2
  4. package/esm2020/lib/table/table/state-helpers/collapse-helpers.mjs +53 -0
  5. package/esm2020/lib/table/table/state-helpers/column-helpers.mjs +19 -1
  6. package/esm2020/lib/table/table/state-helpers/display-helpers.mjs +5 -3
  7. package/esm2020/lib/table/table/state-helpers/nesting-helpers.mjs +115 -0
  8. package/esm2020/lib/table/table/state-helpers/order-helpers.mjs +22 -1
  9. package/esm2020/lib/table/table/state-helpers/pagination-helpers.mjs +3 -45
  10. package/esm2020/lib/table/table/state-helpers/result-helpers.mjs +5 -12
  11. package/esm2020/lib/table/table/state.mjs +520 -247
  12. package/esm2020/lib/table/table/table/table.component.mjs +46 -3
  13. package/fesm2015/rivet-health-design-system.mjs +664 -197
  14. package/fesm2015/rivet-health-design-system.mjs.map +1 -1
  15. package/fesm2020/rivet-health-design-system.mjs +782 -308
  16. package/fesm2020/rivet-health-design-system.mjs.map +1 -1
  17. package/lib/overlay/callout/tooltip/tooltip.component.d.ts +2 -0
  18. package/lib/table/table/state-helpers/collapse-helpers.d.ts +7 -0
  19. package/lib/table/table/state-helpers/column-helpers.d.ts +1 -0
  20. package/lib/table/table/state-helpers/nesting-helpers.d.ts +12 -0
  21. package/lib/table/table/state-helpers/order-helpers.d.ts +1 -0
  22. package/lib/table/table/state-helpers/pagination-helpers.d.ts +1 -2
  23. package/lib/table/table/state-helpers/result-helpers.d.ts +5 -6
  24. package/lib/table/table/state.d.ts +37 -25
  25. package/lib/table/table/table/table.component.d.ts +10 -1
  26. package/package.json +1 -1
@@ -139,5 +139,26 @@ export var TableOrderHelpers;
139
139
  return sortedHeaderRows;
140
140
  }
141
141
  TableOrderHelpers.sortNestedRowsWithHeadersBasedOnSearchMatches = sortNestedRowsWithHeadersBasedOnSearchMatches;
142
+ /*
143
+ When a defaultSort is specified, seed the initial query.order so the
144
+ table header shows the sort indicator from the start.
145
+ */
146
+ function seedDefaultSortOption(options) {
147
+ if (options?.defaultSort && !options?.initialState?.query?.order) {
148
+ const order = options.defaultSort;
149
+ return {
150
+ ...options,
151
+ initialState: {
152
+ ...options.initialState,
153
+ query: {
154
+ ...options.initialState?.query,
155
+ order,
156
+ },
157
+ },
158
+ };
159
+ }
160
+ return options;
161
+ }
162
+ TableOrderHelpers.seedDefaultSortOption = seedDefaultSortOption;
142
163
  })(TableOrderHelpers || (TableOrderHelpers = {}));
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvb3JkZXItaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR2pDLE1BQU0sS0FBVyxpQkFBaUIsQ0FnTmpDO0FBaE5ELFdBQWlCLGlCQUFpQjtJQUNoQyxTQUFnQixjQUFjLENBQzVCLElBQVMsRUFDVCxHQUFZLEVBQ1osU0FBa0M7UUFFbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQU5lLGdDQUFjLGlCQU03QixDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLElBQTZCLEVBQzdCLEdBQVksRUFDWixTQUFrQztRQUVsQyxPQUFPLE9BQU8sQ0FDWixJQUFJLEVBQ0osQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFWZSwwQ0FBd0IsMkJBVXZDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsSUFBNkIsRUFDN0Isa0JBQWdEO1FBRWhELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcs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T0FBTyxDQUFDLENBQUM7d0JBQzNELFVBQVUsQ0FBQyxJQUFJLENBQUM7NEJBQ2QsR0FBRyxnQkFBZ0I7NEJBQ25CLE9BQU8sRUFBRSxhQUFhO3lCQUN2QixDQUFDLENBQUM7cUJBQ0o7eUJBQU07d0JBQ0wsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuQztpQkFDRjtnQkFFRCxPQUFPLFVBQVUsQ0FBQzthQUNuQjtRQUNILENBQUM7UUFFRCxPQUFPLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFuQ2Usb0RBQWtDLHFDQW1DakQsQ0FBQTtJQUVELGlEQUFpRDtJQUNqRCxTQUFnQiw2Q0FBNkMsQ0FHM0QsVUFBeUMsRUFDekMsa0JBQWdEO1FBRWhELE1BQU0sZ0JBQWdCLEdBQWtDLEVBQUUsQ0FBQztRQUMzRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxNQUFNLGFBQWEsR0FDakIsa0NBQWtDLENBQ2hDLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLGtCQUFrQixDQUNuQixDQUFDO1lBQ0osZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNwQixHQUFHLFNBQVM7Z0JBQ1osT0FBTyxFQUFFLGFBQWE7YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFwQmUsK0RBQTZDLGdEQW9CNUQsQ0FBQTtBQUNILENBQUMsRUFoTmdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFnTmpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU9yZGVySGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlckVtcHR5TGFzdDxSPihcbiAgICByb3dzOiBSW10sXG4gICAga2V5OiBrZXlvZiBSLFxuICAgIGRpcmVjdGlvbjogUml2VGFibGUuT3JkZXJEaXJlY3Rpb24sXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIG9yZGVyQnkocm93cywgW3JvdyA9PiByb3dba2V5XSA9PSBudWxsLCBrZXldLCBbJ2FzYycsIGRpcmVjdGlvbl0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTmVzdGVkUm93c0VtcHR5TGFzdDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgICBrZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgcm93cyxcbiAgICAgIFtyb3cgPT4gcm93LmRhdGFba2V5XSA9PSBudWxsLCByb3cgPT4gcm93LmRhdGFba2V5XV0sXG4gICAgICBbJ2FzYycsIGRpcmVjdGlvbl0sXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KHJvd3MsIFtyb3cgPT4gaWRUb1NlYXJjaEluZGV4TWFwLmdldChyb3cuZGF0YS5pZCldLCBbJ2FzYyddKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uOiBDLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIFdlIG9ubHkgc29ydCB0aGUgbG93ZXN0IGxldmVsIHJvd3MgaWYgcm93cyBhcmUgbmVzdGVkLlxuXG4gICAgSW4gb3RoZXIgd29yZHMsIHdlIHNvcnQgd2l0aGluIGVhY2ggbmVzdGVkIGdyb3VwLCBidXQgZG9cbiAgICAgIE5PVCBzb3J0IGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBncm91cHMuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHNvcnRLZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gb3JkZXJOZXN0ZWRSb3dzRW1wdHlMYXN0KFxuICAgICAgICAgIG5lc3RlZFJvd3MsXG4gICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgICAgICAgICBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzKGFsbFJvd3MpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgZGF0YSBpbnNpZGUgdGhlIGhlYWRlcnMsIG5vdCB0aGUgaGVhZGVycyB0aGVtc2VsdmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzV2l0aEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgc29ydEtleToga2V5b2YgUixcbiAgICBkaXJlY3Rpb246IFJpdlRhYmxlLk9yZGVyRGlyZWN0aW9uLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc29ydGVkSGVhZGVyUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHNvcnRMb3dMZXZlbE5lc3RlZFJvd3MoXG4gICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICBzb3J0S2V5LFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICApO1xuICAgICAgc29ydGVkSGVhZGVyUm93cy5wdXNoKHtcbiAgICAgICAgLi4uaGVhZGVyUm93LFxuICAgICAgICBzdWJSb3dzOiBzb3J0ZWRTdWJSb3dzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZEhlYWRlclJvd3M7XG4gIH1cblxuICAvLyBDcmVhdGUgbWFwIHRvIGhlbHAgdXMgc29ydCBvbiBGdXNlIHJlbGV2YW5jZSBvcmRlclxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSWRUb1NlYXJjaEluZGV4TWFwPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3NNYXRjaGluZ1NlYXJjaDogUltdLFxuICApOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+IHtcbiAgICBjb25zdCBpZFRvU2VhcmNoSW5kZXhNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NNYXRjaGluZ1NlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm93TWF0Y2hpbmdJbmRleDogUiA9IHJvd3NNYXRjaGluZ1NlYXJjaFtpXTtcbiAgICAgIGlkVG9TZWFyY2hJbmRleE1hcC5zZXQocm93TWF0Y2hpbmdJbmRleC5pZCwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkVG9TZWFyY2hJbmRleE1hcDtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzQmFzZWRPblNlYXJjaE1hdGNoZXM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgaWRUb1NlYXJjaEluZGV4TWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+LFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydFJvd3NCeVNlYXJjaE1hdGNoKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID1cbiAgICAgICAgICBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoKG5lc3RlZFJvd3MsIGlkVG9TZWFyY2hJbmRleE1hcCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9XG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChhbGxSb3dzKTtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzV2l0aEhlYWRlcnNCYXNlZE9uU2VhcmNoTWF0Y2hlczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICA+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IHNvcnRlZEhlYWRlclJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3Qgc29ydGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPVxuICAgICAgICBzb3J0TmVzdGVkUm93c0Jhc2VkT25TZWFyY2hNYXRjaGVzKFxuICAgICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICAgIGlkVG9TZWFyY2hJbmRleE1hcCxcbiAgICAgICAgKTtcbiAgICAgIHNvcnRlZEhlYWRlclJvd3MucHVzaCh7XG4gICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzb3J0ZWRIZWFkZXJSb3dzO1xuICB9XG59XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvb3JkZXItaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSWpDLE1BQU0sS0FBVyxpQkFBaUIsQ0E0T2pDO0FBNU9ELFdBQWlCLGlCQUFpQjtJQUNoQyxTQUFnQixjQUFjLENBQzVCLElBQVMsRUFDVCxHQUFZLEVBQ1osU0FBa0M7UUFFbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQU5lLGdDQUFjLGlCQU03QixDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLElBQTZCLEVBQzdCLEdBQVksRUFDWixTQUFrQztRQUVsQyxPQUFPLE9BQU8sQ0FDWixJQUFJLEVBQ0osQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFWZSwwQ0FBd0IsMkJBVXZDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsSUFBNkIsRUFDN0Isa0JBQWdEO1FBRWhELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcs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S0FBSzt3QkFDOUIsS0FBSztxQkFDK0I7aUJBQ3ZDO2FBQ0YsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQXRCZSx1Q0FBcUIsd0JBc0JwQyxDQUFBO0FBQ0gsQ0FBQyxFQTVPZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQTRPakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndXRpbGl0eS10eXBlcyc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU9yZGVySGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlckVtcHR5TGFzdDxSPihcbiAgICByb3dzOiBSW10sXG4gICAga2V5OiBrZXlvZiBSLFxuICAgIGRpcmVjdGlvbjogUml2VGFibGUuT3JkZXJEaXJlY3Rpb24sXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIG9yZGVyQnkocm93cywgW3JvdyA9PiByb3dba2V5XSA9PSBudWxsLCBrZXldLCBbJ2FzYycsIGRpcmVjdGlvbl0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTmVzdGVkUm93c0VtcHR5TGFzdDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgICBrZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgcm93cyxcbiAgICAgIFtyb3cgPT4gcm93LmRhdGFba2V5XSA9PSBudWxsLCByb3cgPT4gcm93LmRhdGFba2V5XV0sXG4gICAgICBbJ2FzYycsIGRpcmVjdGlvbl0sXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KHJvd3MsIFtyb3cgPT4gaWRUb1NlYXJjaEluZGV4TWFwLmdldChyb3cuZGF0YS5pZCldLCBbJ2FzYyddKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uOiBDLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIFdlIG9ubHkgc29ydCB0aGUgbG93ZXN0IGxldmVsIHJvd3MgaWYgcm93cyBhcmUgbmVzdGVkLlxuXG4gICAgSW4gb3RoZXIgd29yZHMsIHdlIHNvcnQgd2l0aGluIGVhY2ggbmVzdGVkIGdyb3VwLCBidXQgZG9cbiAgICAgIE5PVCBzb3J0IGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBncm91cHMuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHNvcnRLZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gb3JkZXJOZXN0ZWRSb3dzRW1wdHlMYXN0KFxuICAgICAgICAgIG5lc3RlZFJvd3MsXG4gICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgICAgICAgICBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzKGFsbFJvd3MpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgZGF0YSBpbnNpZGUgdGhlIGhlYWRlcnMsIG5vdCB0aGUgaGVhZGVycyB0aGVtc2VsdmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzV2l0aEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgc29ydEtleToga2V5b2YgUixcbiAgICBkaXJlY3Rpb246IFJpdlRhYmxlLk9yZGVyRGlyZWN0aW9uLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc29ydGVkSGVhZGVyUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHNvcnRMb3dMZXZlbE5lc3RlZFJvd3MoXG4gICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICBzb3J0S2V5LFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICApO1xuICAgICAgc29ydGVkSGVhZGVyUm93cy5wdXNoKHtcbiAgICAgICAgLi4uaGVhZGVyUm93LFxuICAgICAgICBzdWJSb3dzOiBzb3J0ZWRTdWJSb3dzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZEhlYWRlclJvd3M7XG4gIH1cblxuICAvLyBDcmVhdGUgbWFwIHRvIGhlbHAgdXMgc29ydCBvbiBGdXNlIHJlbGV2YW5jZSBvcmRlclxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSWRUb1NlYXJjaEluZGV4TWFwPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3NNYXRjaGluZ1NlYXJjaDogUltdLFxuICApOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+IHtcbiAgICBjb25zdCBpZFRvU2VhcmNoSW5kZXhNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NNYXRjaGluZ1NlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm93TWF0Y2hpbmdJbmRleDogUiA9IHJvd3NNYXRjaGluZ1NlYXJjaFtpXTtcbiAgICAgIGlkVG9TZWFyY2hJbmRleE1hcC5zZXQocm93TWF0Y2hpbmdJbmRleC5pZCwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkVG9TZWFyY2hJbmRleE1hcDtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzQmFzZWRPblNlYXJjaE1hdGNoZXM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgaWRUb1NlYXJjaEluZGV4TWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+LFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydFJvd3NCeVNlYXJjaE1hdGNoKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID1cbiAgICAgICAgICBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoKG5lc3RlZFJvd3MsIGlkVG9TZWFyY2hJbmRleE1hcCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9XG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChhbGxSb3dzKTtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzV2l0aEhlYWRlcnNCYXNlZE9uU2VhcmNoTWF0Y2hlczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICA+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IHNvcnRlZEhlYWRlclJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3Qgc29ydGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPVxuICAgICAgICBzb3J0TmVzdGVkUm93c0Jhc2VkT25TZWFyY2hNYXRjaGVzKFxuICAgICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICAgIGlkVG9TZWFyY2hJbmRleE1hcCxcbiAgICAgICAgKTtcbiAgICAgIHNvcnRlZEhlYWRlclJvd3MucHVzaCh7XG4gICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzb3J0ZWRIZWFkZXJSb3dzO1xuICB9XG5cbiAgLypcbiAgICBXaGVuIGEgZGVmYXVsdFNvcnQgaXMgc3BlY2lmaWVkLCBzZWVkIHRoZSBpbml0aWFsIHF1ZXJ5Lm9yZGVyIHNvIHRoZVxuICAgIHRhYmxlIGhlYWRlciBzaG93cyB0aGUgc29ydCBpbmRpY2F0b3IgZnJvbSB0aGUgc3RhcnQuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzZWVkRGVmYXVsdFNvcnRPcHRpb248XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICA+KFxuICAgIG9wdGlvbnM/OiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+LFxuICApOiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAob3B0aW9ucz8uZGVmYXVsdFNvcnQgJiYgIW9wdGlvbnM/LmluaXRpYWxTdGF0ZT8ucXVlcnk/Lm9yZGVyKSB7XG4gICAgICBjb25zdCBvcmRlcjogUml2VGFibGUuUXVlcnk8QywgRj5bJ29yZGVyJ10gPSBvcHRpb25zLmRlZmF1bHRTb3J0O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5pbml0aWFsU3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuaW5pdGlhbFN0YXRlPy5xdWVyeSxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgIH0gYXMgRGVlcFBhcnRpYWw8Uml2VGFibGUuUXVlcnk8QywgRj4+LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxufVxuIl19
@@ -71,56 +71,14 @@ export var TablePaginationHelpers;
71
71
  }
72
72
  TablePaginationHelpers.isPageOutOfBounds = isPageOutOfBounds;
73
73
  // Paginate based on bottom level rows, splitting as necessary to fit within the page
74
- function paginateNestedRows(allNestedRows, pageNumber, pageSize) {
74
+ function paginateNestedHeaderRows(allHeaders, pageNumber, pageSize) {
75
75
  const startIdx = pageSize * pageNumber;
76
76
  const endIdx = startIdx + pageSize;
77
77
  let bottomLevelRowCount = 0;
78
78
  function recursivePaginateRows(currentNestedRow) {
79
- // If there are no subrows, stop recursing
80
- if (!currentNestedRow.subRows) {
81
- bottomLevelRowCount++;
82
- // Since we add 1 first, the bounds should be (startIdx, endIdx]
83
- if (bottomLevelRowCount > startIdx && bottomLevelRowCount <= endIdx) {
84
- return currentNestedRow;
85
- }
79
+ if (bottomLevelRowCount > endIdx) {
86
80
  return null;
87
81
  }
88
- else {
89
- const subRowsToKeep = [];
90
- for (const subRow of currentNestedRow.subRows) {
91
- const countedRow = recursivePaginateRows(subRow);
92
- if (countedRow != null) {
93
- subRowsToKeep.push(countedRow);
94
- }
95
- }
96
- if (subRowsToKeep.length == 0) {
97
- return null;
98
- }
99
- else {
100
- // Keep any top level row that has at least one subrow
101
- return {
102
- ...currentNestedRow,
103
- subRows: subRowsToKeep,
104
- };
105
- }
106
- }
107
- }
108
- const paginatedRows = [];
109
- for (const nestedRow of allNestedRows) {
110
- const recursedRow = recursivePaginateRows(nestedRow);
111
- if (recursedRow != null) {
112
- paginatedRows.push(recursedRow);
113
- }
114
- }
115
- return paginatedRows;
116
- }
117
- TablePaginationHelpers.paginateNestedRows = paginateNestedRows;
118
- // Paginate based on bottom level rows, splitting as necessary to fit within the page
119
- function paginateNestedHeaderRows(allHeaders, pageNumber, pageSize) {
120
- const startIdx = pageSize * pageNumber;
121
- const endIdx = startIdx + pageSize;
122
- let bottomLevelRowCount = 0;
123
- function recursivePaginateRows(currentNestedRow) {
124
82
  // If there are no subrows, stop recursing
125
83
  if (!currentNestedRow.subRows) {
126
84
  bottomLevelRowCount++;
@@ -171,4 +129,4 @@ export var TablePaginationHelpers;
171
129
  }
172
130
  TablePaginationHelpers.paginateNestedHeaderRows = paginateNestedHeaderRows;
173
131
  })(TablePaginationHelpers || (TablePaginationHelpers = {}));
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9wYWdpbmF0aW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE1BQU0sS0FBVyxzQkFBc0IsQ0E2UHRDO0FBN1BELFdBQWlCLHNCQUFzQjtJQUNyQyxTQUFnQixZQUFZLENBSzFCLEtBQXFDO1FBQ3JDLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQ2IsSUFBSSxDQUFDLElBQUksQ0FDUCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQ2xFLEVBQ0QsQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FDYixJQUFJLENBQUMsSUFBSSxDQUNQLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUNyRSxFQUNELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQXBCZSxtQ0FBWSxlQW9CM0IsQ0FBQTtJQUVELFNBQWdCLGVBQWUsQ0FLN0IsS0FBcUM7UUFDckMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxLQUFLLENB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QzFCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDdkM7YUFDRjtZQUVELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsbUVBQW1FO2dCQUNuRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEdBQUcsU0FBUztvQkFDWixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQixDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBbkVlLCtDQUF3QiwyQkFtRXZDLENBQUE7QUFDSCxDQUFDLEVBN1BnQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBNlB0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgVGFibGVSZXN1bHRIZWxwZXJzIH0gZnJvbSAnLi9yZXN1bHQtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVQYWdpbmF0aW9uSGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHtcbiAgICBpZiAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgc3RhdGUucmVzdWx0LnRvdGFsR3JvdXBDb3VudCAvIHN0YXRlLnF1ZXJ5Lmdyb3VwaW5nLmdyb3Vwc1BlclBhZ2UsXG4gICAgICAgICksXG4gICAgICAgIDEsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICBNYXRoLmNlaWwoXG4gICAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgKSxcbiAgICAgIDEsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2aW91c1BhZ2U8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSA9PT0gMFxuICAgICAgPyBudWxsXG4gICAgICA6IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAtIDE7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGFnZXM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZGRpbmcgPSA0O1xuICAgIGNvbnN0IG1pbiA9IDA7XG4gICAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gICAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgICBjb25zdCBjbGFtcGVkU3RhcnQgPSBNYXRoLm1heChtaW4sIGRlc2lyZWRTdGFydCk7XG4gICAgY29uc3QgZGVzaXJlZEVuZCA9IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIHBhZGRpbmc7XG4gICAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChtaW4sIGNsYW1wZWRTdGFydCAtIChkZXNpcmVkRW5kIC0gY2xhbXBlZEVuZCkpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKG1heCwgY2xhbXBlZEVuZCArIChjbGFtcGVkU3RhcnQgLSBkZXNpcmVkU3RhcnQpKTtcbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRQYWdlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IG1heCA9IGdldFBhZ2VDb3VudChzdGF0ZSkgLSAxO1xuICAgIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICAgIHJldHVybiBuZXh0IDw9IG1heCA/IG5leHQgOiBudWxsO1xuICB9XG5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFRhYmxlUmVzdWx0SGVscGVycy5pc0dyb3VwUmVzdWx0KHN0YXRlLnJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHQudG90YWxHcm91cENvdW50ID4gc3RhdGUucXVlcnkuZ3JvdXBpbmcuZ3JvdXBzUGVyUGFnZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBNYXRoLm1pbiguLi5bLi4uUml2VGFibGUucGFnZVNpemVzXSlcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VSb3dTdGFydDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4pOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlUm93RW5kPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgKHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIDEpICogc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BhZ2VPdXRPZkJvdW5kczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgcmVzdWx0OiBSaXZUYWJsZS5SZXN1bHQ8Uj4gfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPixcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKFRhYmxlUmVzdWx0SGVscGVycy5pc0dyb3VwUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIGNvbnN0IG1pbkdyb3VwVmFsVG9TaG93T25DdXJyZW50UGFnZSA9XG4gICAgICAgIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAqIHN0YXRlLnF1ZXJ5Lmdyb3VwaW5nLmdyb3Vwc1BlclBhZ2UgKyAxO1xuICAgICAgaWYgKHJlc3VsdC50b3RhbEdyb3VwQ291bnQgPCBtaW5Hcm91cFZhbFRvU2hvd09uQ3VycmVudFBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1pblJvd1RvU2hvd09uQ3VycmVudFBhZ2UgPVxuICAgICAgICBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgICAgIGlmIChyZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50IDwgbWluUm93VG9TaG93T25DdXJyZW50UGFnZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gUGFnaW5hdGUgYmFzZWQgb24gYm90dG9tIGxldmVsIHJvd3MsIHNwbGl0dGluZyBhcyBuZWNlc3NhcnkgdG8gZml0IHdpdGhpbiB0aGUgcGFnZVxuICBleHBvcnQgZnVuY3Rpb24gcGFnaW5hdGVOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbE5lc3RlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlcixcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc3RhcnRJZHg6IG51bWJlciA9IHBhZ2VTaXplICogcGFnZU51bWJlcjtcbiAgICBjb25zdCBlbmRJZHg6IG51bWJlciA9IHN0YXJ0SWR4ICsgcGFnZVNpemU7XG5cbiAgICBsZXQgYm90dG9tTGV2ZWxSb3dDb3VudDogbnVtYmVyID0gMDtcblxuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhZ2luYXRlUm93cyhcbiAgICAgIGN1cnJlbnROZXN0ZWRSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPixcbiAgICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4gfCBudWxsIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBzdWJyb3dzLCBzdG9wIHJlY3Vyc2luZ1xuICAgICAgaWYgKCFjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgYm90dG9tTGV2ZWxSb3dDb3VudCsrO1xuXG4gICAgICAgIC8vIFNpbmNlIHdlIGFkZCAxIGZpcnN0LCB0aGUgYm91bmRzIHNob3VsZCBiZSAoc3RhcnRJZHgsIGVuZElkeF1cbiAgICAgICAgaWYgKGJvdHRvbUxldmVsUm93Q291bnQgPiBzdGFydElkeCAmJiBib3R0b21MZXZlbFJvd0NvdW50IDw9IGVuZElkeCkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50TmVzdGVkUm93O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViUm93c1RvS2VlcDogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzKSB7XG4gICAgICAgICAgY29uc3QgY291bnRlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCA9XG4gICAgICAgICAgICByZWN1cnNpdmVQYWdpbmF0ZVJvd3Moc3ViUm93KTtcbiAgICAgICAgICBpZiAoY291bnRlZFJvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdWJSb3dzVG9LZWVwLnB1c2goY291bnRlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YlJvd3NUb0tlZXAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBLZWVwIGFueSB0b3AgbGV2ZWwgcm93IHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBzdWJyb3dcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgIHN1YlJvd3M6IHN1YlJvd3NUb0tlZXAsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhZ2luYXRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBuZXN0ZWRSb3cgb2YgYWxsTmVzdGVkUm93cykge1xuICAgICAgY29uc3QgcmVjdXJzZWRSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwgPVxuICAgICAgICByZWN1cnNpdmVQYWdpbmF0ZVJvd3MobmVzdGVkUm93KTtcbiAgICAgIGlmIChyZWN1cnNlZFJvdyAhPSBudWxsKSB7XG4gICAgICAgIHBhZ2luYXRlZFJvd3MucHVzaChyZWN1cnNlZFJvdyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2luYXRlZFJvd3M7XG4gIH1cblxuICAvLyBQYWdpbmF0ZSBiYXNlZCBvbiBib3R0b20gbGV2ZWwgcm93cywgc3BsaXR0aW5nIGFzIG5lY2Vzc2FyeSB0byBmaXQgd2l0aGluIHRoZSBwYWdlXG4gIGV4cG9ydCBmdW5jdGlvbiBwYWdpbmF0ZU5lc3RlZEhlYWRlclJvd3M8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgcGFnZU51bWJlcjogbnVtYmVyLFxuICAgIHBhZ2VTaXplOiBudW1iZXIsXG4gICk6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdIHtcbiAgICBjb25zdCBzdGFydElkeDogbnVtYmVyID0gcGFnZVNpemUgKiBwYWdlTnVtYmVyO1xuICAgIGNvbnN0IGVuZElkeDogbnVtYmVyID0gc3RhcnRJZHggKyBwYWdlU2l6ZTtcblxuICAgIGxldCBib3R0b21MZXZlbFJvd0NvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlUGFnaW5hdGVSb3dzKFxuICAgICAgY3VycmVudE5lc3RlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+LFxuICAgICk6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHN1YnJvd3MsIHN0b3AgcmVjdXJzaW5nXG4gICAgICBpZiAoIWN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cykge1xuICAgICAgICBib3R0b21MZXZlbFJvd0NvdW50Kys7XG5cbiAgICAgICAgLy8gU2luY2Ugd2UgYWRkIDEgZmlyc3QsIHRoZSBib3VuZHMgc2hvdWxkIGJlIChzdGFydElkeCwgZW5kSWR4XVxuICAgICAgICBpZiAoYm90dG9tTGV2ZWxSb3dDb3VudCA+IHN0YXJ0SWR4ICYmIGJvdHRvbUxldmVsUm93Q291bnQgPD0gZW5kSWR4KSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnROZXN0ZWRSb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdWJSb3dzVG9LZWVwOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgICBjb25zdCBjb3VudGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4gfCBudWxsID1cbiAgICAgICAgICAgIHJlY3Vyc2l2ZVBhZ2luYXRlUm93cyhzdWJSb3cpO1xuICAgICAgICAgIGlmIChjb3VudGVkUm93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHN1YlJvd3NUb0tlZXAucHVzaChjb3VudGVkUm93KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3ViUm93c1RvS2VlcC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEtlZXAgYW55IHRvcCBsZXZlbCByb3cgdGhhdCBoYXMgYXQgbGVhc3Qgb25lIHN1YnJvd1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50TmVzdGVkUm93LFxuICAgICAgICAgICAgc3ViUm93czogc3ViUm93c1RvS2VlcCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFnaW5hdGVkSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBwYWdpbmF0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBoZWFkZXJSb3cuc3ViUm93cykge1xuICAgICAgICBjb25zdCByZWN1cnNlZFN1YlJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCA9XG4gICAgICAgICAgcmVjdXJzaXZlUGFnaW5hdGVSb3dzKHN1YlJvdyk7XG5cbiAgICAgICAgaWYgKHJlY3Vyc2VkU3ViUm93ICE9IG51bGwpIHtcbiAgICAgICAgICBwYWdpbmF0ZWRTdWJSb3dzLnB1c2gocmVjdXJzZWRTdWJSb3cpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwYWdpbmF0ZWRTdWJSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gS2VlcCBhbnkgaGVhZGVyIHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBzdWJyb3cgaW4gdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICBwYWdpbmF0ZWRIZWFkZXJzLnB1c2goe1xuICAgICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgICBzdWJSb3dzOiBwYWdpbmF0ZWRTdWJSb3dzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGFnaW5hdGVkSGVhZGVycztcbiAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9wYWdpbmF0aW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE1BQU0sS0FBVyxzQkFBc0IsQ0EyTXRDO0FBM01ELFdBQWlCLHNCQUFzQjtJQUNyQyxTQUFnQixZQUFZLENBSzFCLEtBQXFDO1FBQ3JDLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQ2IsSUFBSSxDQUFDLElBQUksQ0FDUCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQ2xFLEVBQ0QsQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FDYixJQUFJLENBQUMsSUFBSSxDQUNQLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUNyRSxFQUNELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQXBCZSxtQ0FBWSxlQW9CM0IsQ0FBQTtJQUVELFNBQWdCLGVBQWUsQ0FLN0IsS0FBcUM7UUFDckMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxLQUFLLENB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O2dCQUNuRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEdBQUcsU0FBUztvQkFDWixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQixDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBdkVlLCtDQUF3QiwyQkF1RXZDLENBQUE7QUFDSCxDQUFDLEVBM01nQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBMk10QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgVGFibGVSZXN1bHRIZWxwZXJzIH0gZnJvbSAnLi9yZXN1bHQtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVQYWdpbmF0aW9uSGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHtcbiAgICBpZiAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgc3RhdGUucmVzdWx0LnRvdGFsR3JvdXBDb3VudCAvIHN0YXRlLnF1ZXJ5Lmdyb3VwaW5nLmdyb3Vwc1BlclBhZ2UsXG4gICAgICAgICksXG4gICAgICAgIDEsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICBNYXRoLmNlaWwoXG4gICAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgKSxcbiAgICAgIDEsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2aW91c1BhZ2U8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSA9PT0gMFxuICAgICAgPyBudWxsXG4gICAgICA6IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAtIDE7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGFnZXM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZGRpbmcgPSA0O1xuICAgIGNvbnN0IG1pbiA9IDA7XG4gICAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gICAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgICBjb25zdCBjbGFtcGVkU3RhcnQgPSBNYXRoLm1heChtaW4sIGRlc2lyZWRTdGFydCk7XG4gICAgY29uc3QgZGVzaXJlZEVuZCA9IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIHBhZGRpbmc7XG4gICAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChtaW4sIGNsYW1wZWRTdGFydCAtIChkZXNpcmVkRW5kIC0gY2xhbXBlZEVuZCkpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKG1heCwgY2xhbXBlZEVuZCArIChjbGFtcGVkU3RhcnQgLSBkZXNpcmVkU3RhcnQpKTtcbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRQYWdlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IG1heCA9IGdldFBhZ2VDb3VudChzdGF0ZSkgLSAxO1xuICAgIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICAgIHJldHVybiBuZXh0IDw9IG1heCA/IG5leHQgOiBudWxsO1xuICB9XG5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFRhYmxlUmVzdWx0SGVscGVycy5pc0dyb3VwUmVzdWx0KHN0YXRlLnJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHQudG90YWxHcm91cENvdW50ID4gc3RhdGUucXVlcnkuZ3JvdXBpbmcuZ3JvdXBzUGVyUGFnZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBNYXRoLm1pbiguLi5bLi4uUml2VGFibGUucGFnZVNpemVzXSlcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VSb3dTdGFydDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4pOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlUm93RW5kPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgKHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIDEpICogc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BhZ2VPdXRPZkJvdW5kczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQocmVzdWx0KSkge1xuICAgICAgY29uc3QgbWluR3JvdXBWYWxUb1Nob3dPbkN1cnJlbnRQYWdlID1cbiAgICAgICAgc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICogc3RhdGUucXVlcnkuZ3JvdXBpbmcuZ3JvdXBzUGVyUGFnZSArIDE7XG4gICAgICBpZiAocmVzdWx0LnRvdGFsR3JvdXBDb3VudCA8IG1pbkdyb3VwVmFsVG9TaG93T25DdXJyZW50UGFnZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWluUm93VG9TaG93T25DdXJyZW50UGFnZSA9XG4gICAgICAgIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAqIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUgKyAxO1xuICAgICAgaWYgKHJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPCBtaW5Sb3dUb1Nob3dPbkN1cnJlbnRQYWdlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBQYWdpbmF0ZSBiYXNlZCBvbiBib3R0b20gbGV2ZWwgcm93cywgc3BsaXR0aW5nIGFzIG5lY2Vzc2FyeSB0byBmaXQgd2l0aGluIHRoZSBwYWdlXG4gIGV4cG9ydCBmdW5jdGlvbiBwYWdpbmF0ZU5lc3RlZEhlYWRlclJvd3M8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgcGFnZU51bWJlcjogbnVtYmVyLFxuICAgIHBhZ2VTaXplOiBudW1iZXIsXG4gICk6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdIHtcbiAgICBjb25zdCBzdGFydElkeDogbnVtYmVyID0gcGFnZVNpemUgKiBwYWdlTnVtYmVyO1xuICAgIGNvbnN0IGVuZElkeDogbnVtYmVyID0gc3RhcnRJZHggKyBwYWdlU2l6ZTtcblxuICAgIGxldCBib3R0b21MZXZlbFJvd0NvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlUGFnaW5hdGVSb3dzKFxuICAgICAgY3VycmVudE5lc3RlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+LFxuICAgICk6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwge1xuICAgICAgaWYgKGJvdHRvbUxldmVsUm93Q291bnQgPiBlbmRJZHgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBzdWJyb3dzLCBzdG9wIHJlY3Vyc2luZ1xuICAgICAgaWYgKCFjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgYm90dG9tTGV2ZWxSb3dDb3VudCsrO1xuXG4gICAgICAgIC8vIFNpbmNlIHdlIGFkZCAxIGZpcnN0LCB0aGUgYm91bmRzIHNob3VsZCBiZSAoc3RhcnRJZHgsIGVuZElkeF1cbiAgICAgICAgaWYgKGJvdHRvbUxldmVsUm93Q291bnQgPiBzdGFydElkeCAmJiBib3R0b21MZXZlbFJvd0NvdW50IDw9IGVuZElkeCkge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50TmVzdGVkUm93O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViUm93c1RvS2VlcDogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzKSB7XG4gICAgICAgICAgY29uc3QgY291bnRlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCA9XG4gICAgICAgICAgICByZWN1cnNpdmVQYWdpbmF0ZVJvd3Moc3ViUm93KTtcbiAgICAgICAgICBpZiAoY291bnRlZFJvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdWJSb3dzVG9LZWVwLnB1c2goY291bnRlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YlJvd3NUb0tlZXAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBLZWVwIGFueSB0b3AgbGV2ZWwgcm93IHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBzdWJyb3dcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgIHN1YlJvd3M6IHN1YlJvd3NUb0tlZXAsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhZ2luYXRlZEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3QgcGFnaW5hdGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgaGVhZGVyUm93LnN1YlJvd3MpIHtcbiAgICAgICAgY29uc3QgcmVjdXJzZWRTdWJSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwgPVxuICAgICAgICAgIHJlY3Vyc2l2ZVBhZ2luYXRlUm93cyhzdWJSb3cpO1xuXG4gICAgICAgIGlmIChyZWN1cnNlZFN1YlJvdyAhPSBudWxsKSB7XG4gICAgICAgICAgcGFnaW5hdGVkU3ViUm93cy5wdXNoKHJlY3Vyc2VkU3ViUm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFnaW5hdGVkU3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIEtlZXAgYW55IGhlYWRlciB0aGF0IGhhcyBhdCBsZWFzdCBvbmUgc3Vicm93IGluIHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgcGFnaW5hdGVkSGVhZGVycy5wdXNoKHtcbiAgICAgICAgICAuLi5oZWFkZXJSb3csXG4gICAgICAgICAgc3ViUm93czogcGFnaW5hdGVkU3ViUm93cyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2luYXRlZEhlYWRlcnM7XG4gIH1cbn1cbiJdfQ==
@@ -15,27 +15,21 @@ export var TableResultHelpers;
15
15
  }
16
16
  TableResultHelpers.isGroupResult = isGroupResult;
17
17
  function isNestedResult(result) {
18
- if ('currentPageNestedRows' in result) {
18
+ if ('currentPageNestedHeaders' in result) {
19
19
  return true;
20
20
  }
21
21
  return false;
22
22
  }
23
23
  TableResultHelpers.isNestedResult = isNestedResult;
24
- function isNestedWithHeaderResult(result) {
25
- if ('currentPageNestedHeaders' in result) {
26
- return true;
27
- }
28
- return false;
24
+ function hasHeaderRows(result) {
25
+ return result.currentPageNestedHeaders.some(header => header.headerText != null);
29
26
  }
30
- TableResultHelpers.isNestedWithHeaderResult = isNestedWithHeaderResult;
27
+ TableResultHelpers.hasHeaderRows = hasHeaderRows;
31
28
  function getAllRowsFromResult(result) {
32
29
  if (isGroupResult(result)) {
33
30
  return result.groupResults.flatMap(groups => groups.currentPageData);
34
31
  }
35
32
  else if (isNestedResult(result)) {
36
- return getAllRowsFromNestedRows(result.currentPageNestedRows);
37
- }
38
- else if (isNestedWithHeaderResult(result)) {
39
33
  return getAllRowsFromNestedHeaders(result.currentPageNestedHeaders);
40
34
  }
41
35
  else {
@@ -57,7 +51,6 @@ export var TableResultHelpers;
57
51
  }
58
52
  return allRows;
59
53
  }
60
- TableResultHelpers.getAllRowsFromNestedRows = getAllRowsFromNestedRows;
61
54
  function getAllRowsFromNestedHeaders(nestedHeaders) {
62
55
  const allRows = [];
63
56
  for (const outerNestedHeaderRow of nestedHeaders) {
@@ -74,4 +67,4 @@ export var TableResultHelpers;
74
67
  }
75
68
  TableResultHelpers.getCsvFilename = getCsvFilename;
76
69
  })(TableResultHelpers || (TableResultHelpers = {}));
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS90YWJsZS9zdGF0ZS1oZWxwZXJzL3Jlc3VsdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sS0FBVyxrQkFBa0IsQ0EwSWxDO0FBMUlELFdBQWlCLGtCQUFrQjtJQUNqQyxTQUFnQixlQUFlLENBSTdCLE1BSXNDO1FBRXRDLElBQUksaUJBQWlCLElBQUksTUFBTSxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFkZSxrQ0FBZSxrQkFjOUIsQ0FBQTtJQUVELFNBQWdCLGFBQWEsQ0FJM0IsTUFJc0M7UUFFdEMsSUFBSSxpQkFBaUIsSUFBSSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQWRlLGdDQUFhLGdCQWM1QixDQUFBO0lBRUQsU0FBZ0IsY0FBYyxDQUk1QixNQUlzQztRQUV0QyxJQUFJLHVCQUF1QixJQUFJLE1BQU0sRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBZGUsaUNBQWMsaUJBYzdCLENBQUE7SUFFRCxTQUFnQix3QkFBd0IsQ0FJdEMsTUFJc0M7UUFFdEMsSUFBSSwwQkFBMEIsSUFBSSxNQUFNLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQWRlLDJDQUF3QiwyQkFjdkMsQ0FBQTtJQUVELFNBQWdCLG9CQUFvQixDQUlsQyxNQUlzQztRQUV0QyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3RFO2FBQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsT0FBTyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUMvRDthQUFNLElBQUksd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0MsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUNyRTthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUMsZUFBZSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQW5CZSx1Q0FBb0IsdUJBbUJuQyxDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLFVBQW1DO1FBRW5DLE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUV4QixTQUFTLHNCQUFzQixDQUFDLGdCQUF1QztZQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXBDLE1BQU0sT0FBTyxHQUE0QixnQkFBZ0IsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ3hFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUM1QixzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUM7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFuQmUsMkNBQXdCLDJCQW1CdkMsQ0FBQTtJQUVELFNBQWdCLDJCQUEyQixDQUN6QyxhQUE0QztRQUU1QyxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFFeEIsS0FBSyxNQUFNLG9CQUFvQixJQUFJLGFBQWEsRUFBRTtZQUNoRCxNQUFNLFlBQVksR0FBUSx3QkFBd0IsQ0FDaEQsb0JBQW9CLENBQUMsT0FBTyxDQUM3QixDQUFDO1lBRUYsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0I7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFoQmUsOENBQTJCLDhCQWdCMUMsQ0FBQTtJQUVELFNBQWdCLGNBQWMsQ0FNNUIsZ0JBQXdCLEVBQ3hCLE9BQTZDO1FBRTdDLE9BQU8sQ0FDTCxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLE1BQU0sQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFaZSxpQ0FBYyxpQkFZN0IsQ0FBQTtBQUNILENBQUMsRUExSWdCLGtCQUFrQixLQUFsQixrQkFBa0IsUUEwSWxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUml2VGFibGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVSZXN1bHRIZWxwZXJzIHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUmVndWxhclJlc3VsdDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICByZXN1bHQ6XG4gICAgICB8IFJpdlRhYmxlLlJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkV2l0aEhlYWRlclJlc3VsdDxSPixcbiAgKTogcmVzdWx0IGlzIFJpdlRhYmxlLlJlc3VsdDxSPiB7XG4gICAgaWYgKCdjdXJyZW50UGFnZURhdGEnIGluIHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwUmVzdWx0PFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHJlc3VsdDpcbiAgICAgIHwgUml2VGFibGUuUmVzdWx0PFI+XG4gICAgICB8IFJpdlRhYmxlLkdyb3VwUmVzdWx0PFIsIEc+XG4gICAgICB8IFJpdlRhYmxlLk5lc3RlZFJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRXaXRoSGVhZGVyUmVzdWx0PFI+LFxuICApOiByZXN1bHQgaXMgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz4ge1xuICAgIGlmICgndG90YWxHcm91cENvdW50JyBpbiByZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNOZXN0ZWRSZXN1bHQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+XG4gICAgICB8IFJpdlRhYmxlLk5lc3RlZFdpdGhIZWFkZXJSZXN1bHQ8Uj4sXG4gICk6IHJlc3VsdCBpcyBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4ge1xuICAgIGlmICgnY3VycmVudFBhZ2VOZXN0ZWRSb3dzJyBpbiByZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNOZXN0ZWRXaXRoSGVhZGVyUmVzdWx0PFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHJlc3VsdDpcbiAgICAgIHwgUml2VGFibGUuUmVzdWx0PFI+XG4gICAgICB8IFJpdlRhYmxlLkdyb3VwUmVzdWx0PFIsIEc+XG4gICAgICB8IFJpdlRhYmxlLk5lc3RlZFJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRXaXRoSGVhZGVyUmVzdWx0PFI+LFxuICApOiByZXN1bHQgaXMgUml2VGFibGUuTmVzdGVkV2l0aEhlYWRlclJlc3VsdDxSPiB7XG4gICAgaWYgKCdjdXJyZW50UGFnZU5lc3RlZEhlYWRlcnMnIGluIHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRBbGxSb3dzRnJvbVJlc3VsdDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICByZXN1bHQ6XG4gICAgICB8IFJpdlRhYmxlLlJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkV2l0aEhlYWRlclJlc3VsdDxSPixcbiAgKTogUltdIHtcbiAgICBpZiAoaXNHcm91cFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Lmdyb3VwUmVzdWx0cy5mbGF0TWFwKGdyb3VwcyA9PiBncm91cHMuY3VycmVudFBhZ2VEYXRhKTtcbiAgICB9IGVsc2UgaWYgKGlzTmVzdGVkUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBnZXRBbGxSb3dzRnJvbU5lc3RlZFJvd3MocmVzdWx0LmN1cnJlbnRQYWdlTmVzdGVkUm93cyk7XG4gICAgfSBlbHNlIGlmIChpc05lc3RlZFdpdGhIZWFkZXJSZXN1bHQocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIGdldEFsbFJvd3NGcm9tTmVzdGVkSGVhZGVycyhyZXN1bHQuY3VycmVudFBhZ2VOZXN0ZWRIZWFkZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdC5jdXJyZW50UGFnZURhdGE7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFJvd3NGcm9tTmVzdGVkUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBuZXN0ZWRSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgKTogUltdIHtcbiAgICBjb25zdCBhbGxSb3dzOiBSW10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUdldE5lc3RlZFJvd3MoY3VycmVudE5lc3RlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+KSB7XG4gICAgICBhbGxSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdy5kYXRhKTtcblxuICAgICAgY29uc3Qgc3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBzdWJSb3dzKSB7XG4gICAgICAgIHJlY3Vyc2l2ZUdldE5lc3RlZFJvd3Moc3ViUm93KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5lc3RlZFJvdyBvZiBuZXN0ZWRSb3dzKSB7XG4gICAgICByZWN1cnNpdmVHZXROZXN0ZWRSb3dzKG5lc3RlZFJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJvd3M7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0QWxsUm93c0Zyb21OZXN0ZWRIZWFkZXJzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIG5lc3RlZEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICApOiBSW10ge1xuICAgIGNvbnN0IGFsbFJvd3M6IFJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBvdXRlck5lc3RlZEhlYWRlclJvdyBvZiBuZXN0ZWRIZWFkZXJzKSB7XG4gICAgICBjb25zdCByb3dzSW5IZWFkZXI6IFJbXSA9IGdldEFsbFJvd3NGcm9tTmVzdGVkUm93cyhcbiAgICAgICAgb3V0ZXJOZXN0ZWRIZWFkZXJSb3cuc3ViUm93cyxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3Qgcm93SW5IZWFkZXIgb2Ygcm93c0luSGVhZGVyKSB7XG4gICAgICAgIGFsbFJvd3MucHVzaChyb3dJbkhlYWRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJvd3M7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q3N2RmlsZW5hbWU8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBwbHVyYWxFbnRpdHlOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJpdlRhYmxlLk1hbmFnZXJPcHRpb25zPFIsIEMsIEYsIEc+LFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAob3B0aW9ucz8uY3N2RmlsZUJhc2VuYW1lPy5zbGljZSgwLCAyMDApID8/IHBsdXJhbEVudGl0eU5hbWUpICsgJy5jc3YnXG4gICAgKTtcbiAgfVxufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS90YWJsZS9zdGF0ZS1oZWxwZXJzL3Jlc3VsdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sS0FBVyxrQkFBa0IsQ0E0SGxDO0FBNUhELFdBQWlCLGtCQUFrQjtJQUNqQyxTQUFnQixlQUFlLENBSTdCLE1BRzRCO1FBRTVCLElBQUksaUJBQWlCLElBQUksTUFBTSxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFiZSxrQ0FBZSxrQkFhOUIsQ0FBQTtJQUVELFNBQWdCLGFBQWEsQ0FJM0IsTUFHNEI7UUFFNUIsSUFBSSxpQkFBaUIsSUFBSSxNQUFNLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQWJlLGdDQUFhLGdCQWE1QixDQUFBO0lBRUQsU0FBZ0IsY0FBYyxDQUk1QixNQUc0QjtRQUU1QixJQUFJLDBCQUEwQixJQUFJLE1BQU0sRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBYmUsaUNBQWMsaUJBYTdCLENBQUE7SUFFRCxTQUFnQixhQUFhLENBQzNCLE1BQWdDO1FBRWhDLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFOZSxnQ0FBYSxnQkFNNUIsQ0FBQTtJQUVELFNBQWdCLG9CQUFvQixDQUlsQyxNQUc0QjtRQUU1QixJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3RFO2FBQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUNyRTthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUMsZUFBZSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQWhCZSx1Q0FBb0IsdUJBZ0JuQyxDQUFBO0lBRUQsU0FBUyx3QkFBd0IsQ0FDL0IsVUFBbUM7UUFFbkMsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBRXhCLFNBQVMsc0JBQXNCLENBQUMsZ0JBQXVDO1lBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEMsTUFBTSxPQUFPLEdBQTRCLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDeEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVCLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQztRQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQWdCLDJCQUEyQixDQUN6QyxhQUE0QztRQUU1QyxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFFeEIsS0FBSyxNQUFNLG9CQUFvQixJQUFJLGFBQWEsRUFBRTtZQUNoRCxNQUFNLFlBQVksR0FBUSx3QkFBd0IsQ0FDaEQsb0JBQW9CLENBQUMsT0FBTyxDQUM3QixDQUFDO1lBRUYsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0I7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFoQmUsOENBQTJCLDhCQWdCMUMsQ0FBQTtJQUVELFNBQWdCLGNBQWMsQ0FNNUIsZ0JBQXdCLEVBQ3hCLE9BQTZDO1FBRTdDLE9BQU8sQ0FDTCxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLE1BQU0sQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFaZSxpQ0FBYyxpQkFZN0IsQ0FBQTtBQUNILENBQUMsRUE1SGdCLGtCQUFrQixLQUFsQixrQkFBa0IsUUE0SGxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUml2VGFibGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVSZXN1bHRIZWxwZXJzIHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUmVndWxhclJlc3VsdDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICByZXN1bHQ6XG4gICAgICB8IFJpdlRhYmxlLlJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4sXG4gICk6IHJlc3VsdCBpcyBSaXZUYWJsZS5SZXN1bHQ8Uj4ge1xuICAgIGlmICgnY3VycmVudFBhZ2VEYXRhJyBpbiByZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNHcm91cFJlc3VsdDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICByZXN1bHQ6XG4gICAgICB8IFJpdlRhYmxlLlJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4sXG4gICk6IHJlc3VsdCBpcyBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPiB7XG4gICAgaWYgKCd0b3RhbEdyb3VwQ291bnQnIGluIHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc05lc3RlZFJlc3VsdDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICByZXN1bHQ6XG4gICAgICB8IFJpdlRhYmxlLlJlc3VsdDxSPlxuICAgICAgfCBSaXZUYWJsZS5Hcm91cFJlc3VsdDxSLCBHPlxuICAgICAgfCBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4sXG4gICk6IHJlc3VsdCBpcyBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4ge1xuICAgIGlmICgnY3VycmVudFBhZ2VOZXN0ZWRIZWFkZXJzJyBpbiByZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaGFzSGVhZGVyUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByZXN1bHQ6IFJpdlRhYmxlLk5lc3RlZFJlc3VsdDxSPixcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc3VsdC5jdXJyZW50UGFnZU5lc3RlZEhlYWRlcnMuc29tZShcbiAgICAgIGhlYWRlciA9PiBoZWFkZXIuaGVhZGVyVGV4dCAhPSBudWxsLFxuICAgICk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0QWxsUm93c0Zyb21SZXN1bHQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiBSW10ge1xuICAgIGlmIChpc0dyb3VwUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQuZ3JvdXBSZXN1bHRzLmZsYXRNYXAoZ3JvdXBzID0+IGdyb3Vwcy5jdXJyZW50UGFnZURhdGEpO1xuICAgIH0gZWxzZSBpZiAoaXNOZXN0ZWRSZXN1bHQocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIGdldEFsbFJvd3NGcm9tTmVzdGVkSGVhZGVycyhyZXN1bHQuY3VycmVudFBhZ2VOZXN0ZWRIZWFkZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdC5jdXJyZW50UGFnZURhdGE7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0QWxsUm93c0Zyb21OZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIG5lc3RlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICApOiBSW10ge1xuICAgIGNvbnN0IGFsbFJvd3M6IFJbXSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlR2V0TmVzdGVkUm93cyhjdXJyZW50TmVzdGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4pIHtcbiAgICAgIGFsbFJvd3MucHVzaChjdXJyZW50TmVzdGVkUm93LmRhdGEpO1xuXG4gICAgICBjb25zdCBzdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cyA/PyBbXTtcbiAgICAgIGZvciAoY29uc3Qgc3ViUm93IG9mIHN1YlJvd3MpIHtcbiAgICAgICAgcmVjdXJzaXZlR2V0TmVzdGVkUm93cyhzdWJSb3cpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgIHJlY3Vyc2l2ZUdldE5lc3RlZFJvd3MobmVzdGVkUm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUm93cztcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRBbGxSb3dzRnJvbU5lc3RlZEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgbmVzdGVkSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICk6IFJbXSB7XG4gICAgY29uc3QgYWxsUm93czogUltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG91dGVyTmVzdGVkSGVhZGVyUm93IG9mIG5lc3RlZEhlYWRlcnMpIHtcbiAgICAgIGNvbnN0IHJvd3NJbkhlYWRlcjogUltdID0gZ2V0QWxsUm93c0Zyb21OZXN0ZWRSb3dzKFxuICAgICAgICBvdXRlck5lc3RlZEhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCByb3dJbkhlYWRlciBvZiByb3dzSW5IZWFkZXIpIHtcbiAgICAgICAgYWxsUm93cy5wdXNoKHJvd0luSGVhZGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUm93cztcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDc3ZGaWxlbmFtZTxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHBsdXJhbEVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUml2VGFibGUuTWFuYWdlck9wdGlvbnM8UiwgQywgRiwgRz4sXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIChvcHRpb25zPy5jc3ZGaWxlQmFzZW5hbWU/LnNsaWNlKDAsIDIwMCkgPz8gcGx1cmFsRW50aXR5TmFtZSkgKyAnLmNzdidcbiAgICApO1xuICB9XG59XG4iXX0=