@plait/core 0.0.58 → 0.1.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 (59) hide show
  1. package/board/board.component.d.ts +7 -8
  2. package/board/board.component.interface.d.ts +4 -1
  3. package/constants/index.d.ts +1 -0
  4. package/core/element/context.d.ts +0 -1
  5. package/core/element/element.component.d.ts +1 -2
  6. package/core/element/plugin-element.d.ts +0 -1
  7. package/core/toolbar/toolbar.component.d.ts +1 -1
  8. package/esm2020/board/board.component.interface.mjs +1 -1
  9. package/esm2020/board/board.component.mjs +58 -42
  10. package/esm2020/constants/index.mjs +2 -1
  11. package/esm2020/core/element/context.mjs +1 -1
  12. package/esm2020/core/element/element.component.mjs +4 -6
  13. package/esm2020/core/element/plugin-element.mjs +10 -4
  14. package/esm2020/core/toolbar/toolbar.component.mjs +6 -6
  15. package/esm2020/interfaces/board.mjs +26 -2
  16. package/esm2020/interfaces/element.mjs +7 -2
  17. package/esm2020/interfaces/index.mjs +2 -2
  18. package/esm2020/interfaces/point.mjs +1 -1
  19. package/esm2020/interfaces/rectangle-client.mjs +25 -0
  20. package/esm2020/interfaces/selection.mjs +13 -2
  21. package/esm2020/plugins/create-board.mjs +9 -6
  22. package/esm2020/plugins/with-hand.mjs +9 -14
  23. package/esm2020/plugins/with-selection.mjs +59 -24
  24. package/esm2020/transforms/board.mjs +3 -3
  25. package/esm2020/transforms/general.mjs +2 -3
  26. package/esm2020/utils/board.mjs +4 -3
  27. package/esm2020/utils/draw/arrow.mjs +23 -0
  28. package/esm2020/utils/draw/rectangle.mjs +31 -0
  29. package/esm2020/utils/element.mjs +36 -0
  30. package/esm2020/utils/index.mjs +6 -2
  31. package/esm2020/utils/math.mjs +7 -1
  32. package/esm2020/utils/matrix.mjs +9 -9
  33. package/esm2020/utils/selected-element.mjs +35 -0
  34. package/esm2020/utils/tree.mjs +7 -0
  35. package/esm2020/utils/weak-maps.mjs +7 -3
  36. package/fesm2015/plait-core.mjs +362 -121
  37. package/fesm2015/plait-core.mjs.map +1 -1
  38. package/fesm2020/plait-core.mjs +361 -119
  39. package/fesm2020/plait-core.mjs.map +1 -1
  40. package/interfaces/board.d.ts +21 -5
  41. package/interfaces/element.d.ts +4 -0
  42. package/interfaces/index.d.ts +1 -1
  43. package/interfaces/point.d.ts +4 -0
  44. package/interfaces/rectangle-client.d.ts +16 -0
  45. package/interfaces/selection.d.ts +9 -1
  46. package/package.json +1 -1
  47. package/plugins/create-board.d.ts +1 -1
  48. package/utils/draw/arrow.d.ts +8 -0
  49. package/utils/draw/rectangle.d.ts +14 -0
  50. package/utils/element.d.ts +3 -0
  51. package/utils/index.d.ts +5 -1
  52. package/utils/math.d.ts +2 -0
  53. package/utils/selected-element.d.ts +8 -0
  54. package/utils/tree.d.ts +4 -0
  55. package/utils/weak-maps.d.ts +8 -2
  56. package/esm2020/interfaces/graph.mjs +0 -2
  57. package/esm2020/utils/graph.mjs +0 -11
  58. package/interfaces/graph.d.ts +0 -6
  59. package/utils/graph.d.ts +0 -3
@@ -1,4 +1,5 @@
1
1
  import { SCROLL_BAR_WIDTH } from '../constants';
2
+ import { PlaitBoard } from '../interfaces';
2
3
  /**
3
4
  * 逆矩阵
4
5
  * [a c e]
@@ -85,8 +86,8 @@ export function convertToViewportCoordinates(point, matrix) {
85
86
  export function getViewportContainerBox(board) {
86
87
  const { hideScrollbar } = board.options;
87
88
  const scrollBarWidth = hideScrollbar ? SCROLL_BAR_WIDTH : 0;
88
- const container = board.host?.parentElement;
89
- const containerRect = container?.getBoundingClientRect();
89
+ const container = PlaitBoard.getViewportContainer(board);
90
+ const containerRect = container.getBoundingClientRect();
90
91
  const x = containerRect.x || containerRect.left;
91
92
  const y = containerRect.y || containerRect.top;
92
93
  const width = containerRect.width - scrollBarWidth;
@@ -110,19 +111,18 @@ export function getViewportContainerBox(board) {
110
111
  export function getBoardClientBox(board) {
111
112
  const { hideScrollbar } = board.options;
112
113
  const scrollBarWidth = hideScrollbar ? SCROLL_BAR_WIDTH : 0;
113
- const boardEl = board.host?.parentElement?.parentElement;
114
- const elRect = boardEl?.getBoundingClientRect();
114
+ const viewportRect = PlaitBoard.getViewportContainer(board).getBoundingClientRect();
115
115
  return {
116
- width: elRect.width + scrollBarWidth,
117
- height: elRect.height + scrollBarWidth
116
+ width: viewportRect.width + scrollBarWidth,
117
+ height: viewportRect.height + scrollBarWidth
118
118
  };
119
119
  }
120
120
  /**
121
121
  * 获取 rootGroup 相对于当前 svg 空间的最小矩阵坐标
122
122
  */
123
123
  export function getRootGroupBBox(board, zoom) {
124
- const rootGroup = board.host.firstChild;
125
- const rootGroupBox = rootGroup.getBBox();
124
+ const elementHost = PlaitBoard.getElementHost(board);
125
+ const rootGroupBox = elementHost.getBBox();
126
126
  const viewportContainerBox = getViewportContainerBox(board);
127
127
  const containerWidth = viewportContainerBox.width / zoom;
128
128
  const containerHeight = viewportContainerBox.height / zoom;
@@ -167,4 +167,4 @@ export function getRootGroupBBox(board, zoom) {
167
167
  export function clampZoomLevel(zoom, minZoom = 0.2, maxZoom = 4) {
168
168
  return zoom < minZoom ? minZoom : zoom > maxZoom ? maxZoom : zoom;
169
169
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL21hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHaEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQW1CLEVBQUUsTUFBZ0I7SUFDOUQsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQy9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3hDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzdDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUM1QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUM5QixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDNUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDN0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDOUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDN0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBRTVDLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBYSxFQUFFLE1BQWdCLEVBQUUsTUFBZ0I7SUFDM0UsR0FBRyxHQUFHO1FBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMs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QUFDLEtBQUssQ0FBQztLQUMvQztJQUNELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUU7UUFDdkMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6RCxNQUFNLFVBQVUsR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzNCLE1BQU0sR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDO0tBQ2pDO1NBQU07UUFDSCxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQ2pEO0lBQ0QsT0FBTztRQUNILElBQUk7UUFDSixLQUFLO1FBQ0wsR0FBRztRQUNILE1BQU07S0FDVCxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUM7SUFDbkUsT0FBTyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTQ1JPTExfQkFSX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDpgIbnn6npmLVcbiAqIFthIGMgZV1cbiAqIFtiIGQgZl1cbiAqIFswIDAgMV1cbiAqIEBwYXJhbSBuZXdNYXRyaXgg6L6T5Ye66L+U5Zue55+p6Zi1XG4gKiBAcGFyYW0gbWF0cml4IOaWsOefqemYtVxuICogQHJldHVybnMg6YCG55+p6Zi1XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnRNYXRyaXgobmV3TWF0cml4OiBudW1iZXJbXSwgbWF0cml4OiBudW1iZXJbXSkge1xuICAgIGNvbnN0IFtuLCByLCBhLCBpLCBvLCBjLCBsLCBzLCB1XSA9IG1hdHJpeDtcbiAgICBjb25zdCBkZXRlcm1pbmFudCA9IHUgKiBvIC0gYyAqIHM7XG4gICAgY29uc3QgaCA9IC11ICogaSArIGMgKiBsO1xuICAgIGNvbnN0IGYgPSBzICogaSAtIG8gKiBsO1xuICAgIGNvbnN0IHByb2R1Y3QgPSBuICogZGV0ZXJtaW5hbnQgKyByICogaCArIGEgKiBmO1xuXG4gICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY2lwcm9jYWwgPSAxIC8gcHJvZHVjdDtcbiAgICBuZXdNYXRyaXhbMF0gPSBkZXRlcm1pbmFudCAqIHJlY2lwcm9jYWw7XG4gICAgbmV3TWF0cml4WzFdID0gKC11ICogciArIGEgKiBzKSAqIHJlY2lwcm9jYWw7XG4gICAgbmV3TWF0cml4WzJdID0gKGMgKiByIC0gYSAqIG8pICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbM10gPSBoICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbNF0gPSAodSAqIG4gLSBhICogbCkgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFs1XSA9ICgtYyAqIG4gKyBhICogaSkgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFs2XSA9IGYgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFs3XSA9ICgtcyAqIG4gKyByICogbCkgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFs4XSA9IChvICogbiAtIHIgKiBpKSAqIHJlY2lwcm9jYWw7XG5cbiAgICByZXR1cm4gbmV3TWF0cml4O1xufVxuXG4vKipcbiAqIOWwhuinhuWbvuWdkOagh+S4juWPjei9rOefqemYteebuOS5mO+8jOS7peW+l+WIsOWOn+Wni+WdkOagh1xuICog5L2/55So57uZ5a6a55qE55+p6Zi16L+b6KGM6L2s5o2iXG4gKiDnn6npmLXkuI7lkJHph4/kuZjms5XvvIwzIOe7tOWQkemHj+S4jjN4M+efqemYteeahOS5mOenr1xuICogW20xMSBtMTIgbTEzXVt2MV1cbiAqIFttMjEgbTIyIG0yM11bdjJdXG4gKiBbbTMxIG0zMiBtMzNdW3YzXVxuICogQHBhcmFtIG91dCDovpPlh7rnu5PmnpzlkJHph49cbiAqIEBwYXJhbSB0IOimgei9rOaNoueahOWQkemHj1xuICogQHBhcmFtIG4g55+p6Zi16L2s5o2iXG4gKiBAcmV0dXJucyBbdjEgKiBtMTEgKyB2MiAqIG0xMiArIHYzICogbTEzLCB2MSAqIG0yMSArIHYyICogbTIyICsgdjMgKiBtMjMsIHYxICogbTMxICsgdjIgKiBtMzIgKyB2MyAqIG0zM107XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQzKG91dDogbnVtYmVyW10sIHZlY3RvcjogbnVtYmVyW10sIG1hdHJpeDogbnVtYmVyW10pIHtcbiAgICBvdXQgPSBbXG4gICAgICAgIHZlY3RvclswXSAqIG1hdHJpeFswXSArIHZlY3RvclsxXSAqIG1hdHJpeFszXSArIHZlY3RvclsyXSAqIG1hdHJpeFs2XSxcbiAgICAgICAgdmVjdG9yWzBdICogbWF0cml4WzFdICsgdmVjdG9yWzFdICogbWF0cml4WzRdICsgdmVjdG9yWzJdICogbWF0cml4WzddLFxuICAgICAgICB2ZWN0b3JbMF0gKiBtYXRyaXhbMl0gKyB2ZWN0b3JbMV0gKiBtYXRyaXhbNV0gKyB2ZWN0b3JbMl0gKiBtYXRyaXhbOF1cbiAgICBdO1xuICAgIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICog6KeE6IyDIHBvaW50XG4gKiBAcGFyYW0gcG9pbnRcbiAqIEByZXR1cm5zIHBvaW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQb2ludChwb2ludDogbnVtYmVyW10pIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwb2ludClcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgICAgICAgICB5OiBwb2ludFsxXVxuICAgICAgICAgIH1cbiAgICAgICAgOiBwb2ludDtcbn1cblxuLyoqXG4gKiDlsIbkuIDkuKrngrnlnZDmoIflj43ovazlm57lroPnmoTljp/lp4vlnZDmoIdcbiAqIEBwYXJhbSBwb2ludCDooajnpLropoHlj43ovaznmoTngrnnmoTop4blm77lnZDmoIfvvIzlroPmmK/kuIDkuKrplb/luqbkuLogMiDnmoTmlbDnu4TvvIzlrZjlgqjngrnnmoQgeCDlkowgeSDlnZDmoIdcbiAqIEBwYXJhbSBtYXRyaXgg6KGo56S66KeG5Zu+55+p6Zi177yM5piv5Zyo6KeG5Zu+5Lit5a+55Zu+5b2i6L+b6KGM57yp5pS+5ZKM5bmz56e75pe25L2/55So55qE55+p6Zi1XG4gKiBAcmV0dXJucyDmnIDnu4jnu5PmnpzmmK/kuIDkuKrplb/luqbkuLogMyDnmoTmlbDnu4TvvIzlrZjlgqjngrnnmoQgeO+8jHkg5ZKMIHcg5Z2Q5qCH77yIdyDlnZDmoIfmmK/ngrnnmoTpvZDmrKHlnZDmoIcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnRWaWV3cG9ydENvb3JkaW5hdGVzKHBvaW50OiBudW1iZXJbXSwgbWF0cml4OiBudW1iZXJbXSkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gbm9ybWFsaXplUG9pbnQocG9pbnQpO1xuICAgIGNvbnN0IGludmVydGVkTWF0cml4ID0gaW52ZXJ0TWF0cml4KFtdLCBtYXRyaXgpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1NYXQzKFtdLCBbeCwgeSwgMV0sIGludmVydGVkTWF0cml4IGFzIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMocG9pbnQ6IG51bWJlcltdLCBtYXRyaXg6IG51bWJlcltdKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBub3JtYWxpemVQb2ludChwb2ludCk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybU1hdDMoW10sIFt4LCB5LCAxXSwgbWF0cml4KTtcbn1cblxuLyoqXG4gKiDojrflj5YgY29udGVudENvbnRhaW5lciDnmoQgY2xpZW50Qm94XG4gKiBAcGFyYW0gYm9hcmRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENvbnRhaW5lckJveChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgaGlkZVNjcm9sbGJhciB9ID0gYm9hcmQub3B0aW9ucztcbiAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IGhpZGVTY3JvbGxiYXIgPyBTQ1JPTExfQkFSX1dJRFRIIDogMDtcbiAgICBjb25zdCBjb250YWluZXIgPSBib2FyZC5ob3N0Py5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHggPSBjb250YWluZXJSZWN0LnggfHwgY29udGFpbmVyUmVjdC5sZWZ0O1xuICAgIGNvbnN0IHkgPSBjb250YWluZXJSZWN0LnkgfHwgY29udGFpbmVyUmVjdC50b3A7XG4gICAgY29uc3Qgd2lkdGggPSBjb250YWluZXJSZWN0LndpZHRoIC0gc2Nyb2xsQmFyV2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyUmVjdC5oZWlnaHQgLSBzY3JvbGxCYXJXaWR0aDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgIH07XG59XG5cbi8qKlxuICog6I635Y+WIGJvYXJkLnBsYWl0LWJvYXJkIOeahCBjbGllbnRCb3hcbiAqIEBwYXJhbSBib2FyZFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvYXJkQ2xpZW50Qm94KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBoaWRlU2Nyb2xsYmFyIH0gPSBib2FyZC5vcHRpb25zO1xuICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gaGlkZVNjcm9sbGJhciA/IFNDUk9MTF9CQVJfV0lEVEggOiAwO1xuICAgIGNvbnN0IGJvYXJkRWwgPSBib2FyZC5ob3N0Py5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGVsUmVjdCA9IGJvYXJkRWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IGVsUmVjdC53aWR0aCArIHNjcm9sbEJhcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IGVsUmVjdC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aFxuICAgIH07XG59XG5cbi8qKlxuICog6I635Y+WIHJvb3RHcm91cCDnm7jlr7nkuo7lvZPliY0gc3ZnIOepuumXtOeahOacgOWwj+efqemYteWdkOagh1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdEdyb3VwQkJveChib2FyZDogUGxhaXRCb2FyZCwgem9vbTogbnVtYmVyKSB7XG4gICAgY29uc3Qgcm9vdEdyb3VwID0gYm9hcmQuaG9zdC5maXJzdENoaWxkIGFzIFNWR0dyYXBoaWNzRWxlbWVudDtcbiAgICBjb25zdCByb290R3JvdXBCb3ggPSByb290R3JvdXAuZ2V0QkJveCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyQm94ID0gZ2V0Vmlld3BvcnRDb250YWluZXJCb3goYm9hcmQpO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdmlld3BvcnRDb250YWluZXJCb3gud2lkdGggLyB6b29tO1xuICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHZpZXdwb3J0Q29udGFpbmVyQm94LmhlaWdodCAvIHpvb207XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcbiAgICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gICAgaWYgKHJvb3RHcm91cEJveC53aWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSByb290R3JvdXBCb3gueCArIHJvb3RHcm91cEJveC53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclggPSBjb250YWluZXJXaWR0aCAvIDI7XG4gICAgICAgIGxlZnQgPSBvZmZzZXRYIC0gY29udGFpbmVyWDtcbiAgICAgICAgcmlnaHQgPSBvZmZzZXRYICsgY29udGFpbmVyWDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gcm9vdEdyb3VwQm94Lng7XG4gICAgICAgIHJpZ2h0ID0gcm9vdEdyb3VwQm94LnggKyByb290R3JvdXBCb3gud2lkdGg7XG4gICAgfVxuICAgIGlmIChyb290R3JvdXBCb3guaGVpZ2h0IDwgY29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IG9mZnNldFkgPSByb290R3JvdXBCb3gueSArIHJvb3RHcm91cEJveC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBjb250YWluZXJZID0gY29udGFpbmVySGVpZ2h0IC8gMjtcbiAgICAgICAgdG9wID0gb2Zmc2V0WSAtIGNvbnRhaW5lclk7XG4gICAgICAgIGJvdHRvbSA9IG9mZnNldFkgKyBjb250YWluZXJZO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IHJvb3RHcm91cEJveC55O1xuICAgICAgICBib3R0b20gPSByb290R3JvdXBCb3gueSArIHJvb3RHcm91cEJveC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0LFxuICAgICAgICB0b3AsXG4gICAgICAgIGJvdHRvbVxuICAgIH07XG59XG5cbi8qKlxuICog6aqM6K+B57yp5pS+5q+U5piv5ZCm56ym5ZCI6ZmQ5Yi277yM5aaC5p6c6LaF5Ye66ZmQ5Yi277yM5YiZ6L+U5Zue5ZCI6YCC55qE57yp5pS+5q+UXG4gKiBAcGFyYW0gem9vbSDnvKnmlL7mr5RcbiAqIEBwYXJhbSBtaW5ab29tIOacgOWwj+e8qeaUvuavlFxuICogQHBhcmFtIG1heFpvb20g5pyA5aSn57yp5pS+5q+UXG4gKiBAcmV0dXJucyDmraPnoa7nmoTnvKnmlL7mr5RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wWm9vbUxldmVsKHpvb206IG51bWJlciwgbWluWm9vbSA9IDAuMiwgbWF4Wm9vbSA9IDQpIHtcbiAgICByZXR1cm4gem9vbSA8IG1pblpvb20gPyBtaW5ab29tIDogem9vbSA+IG1heFpvb20gPyBtYXhab29tIDogem9vbTtcbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL21hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBbUIsRUFBRSxNQUFnQjtJQUM5RCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDM0MsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1YsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDL0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDeEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENB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Q0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7S0FDL0M7SUFDRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN2QyxHQUFHLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMzQixNQUFNLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztLQUNqQztTQUFNO1FBQ0gsR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztLQUNqRDtJQUNELE9BQU87UUFDSCxJQUFJO1FBQ0osS0FBSztRQUNMLEdBQUc7UUFDSCxNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVksRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ25FLE9BQU8sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog6YCG55+p6Zi1XG4gKiBbYSBjIGVdXG4gKiBbYiBkIGZdXG4gKiBbMCAwIDFdXG4gKiBAcGFyYW0gbmV3TWF0cml4IOi+k+WHuui/lOWbnuefqemYtVxuICogQHBhcmFtIG1hdHJpeCDmlrDnn6npmLVcbiAqIEByZXR1cm5zIOmAhuefqemYtVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0TWF0cml4KG5ld01hdHJpeDogbnVtYmVyW10sIG1hdHJpeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCBbbiwgciwgYSwgaSwgbywgYywgbCwgcywgdV0gPSBtYXRyaXg7XG4gICAgY29uc3QgZGV0ZXJtaW5hbnQgPSB1ICogbyAtIGMgKiBzO1xuICAgIGNvbnN0IGggPSAtdSAqIGkgKyBjICogbDtcbiAgICBjb25zdCBmID0gcyAqIGkgLSBvICogbDtcbiAgICBjb25zdCBwcm9kdWN0ID0gbiAqIGRldGVybWluYW50ICsgciAqIGggKyBhICogZjtcblxuICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcHJvY2FsID0gMSAvIHByb2R1Y3Q7XG4gICAgbmV3TWF0cml4WzBdID0gZGV0ZXJtaW5hbnQgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFsxXSA9ICgtdSAqIHIgKyBhICogcykgKiByZWNpcHJvY2FsO1xuICAgIG5ld01hdHJpeFsyXSA9IChjICogciAtIGEgKiBvKSAqIHJlY2lwcm9jYWw7XG4gICAgbmV3TWF0cml4WzNdID0gaCAqIHJlY2lwcm9jYWw7XG4gICAgbmV3TWF0cml4WzRdID0gKHUgKiBuIC0gYSAqIGwpICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbNV0gPSAoLWMgKiBuICsgYSAqIGkpICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbNl0gPSBmICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbN10gPSAoLXMgKiBuICsgciAqIGwpICogcmVjaXByb2NhbDtcbiAgICBuZXdNYXRyaXhbOF0gPSAobyAqIG4gLSByICogaSkgKiByZWNpcHJvY2FsO1xuXG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbn1cblxuLyoqXG4gKiDlsIbop4blm77lnZDmoIfkuI7lj43ovaznn6npmLXnm7jkuZjvvIzku6XlvpfliLDljp/lp4vlnZDmoIdcbiAqIOS9v+eUqOe7meWumueahOefqemYtei/m+ihjOi9rOaNolxuICog55+p6Zi15LiO5ZCR6YeP5LmY5rOV77yMMyDnu7TlkJHph4/kuI4zeDPnn6npmLXnmoTkuZjnp69cbiAqIFttMTEgbTEyIG0xM11bdjFdXG4gKiBbbTIxIG0yMiBtMjNdW3YyXVxuICogW20zMSBtMzIgbTMzXVt2M11cbiAqIEBwYXJhbSBvdXQg6L6T5Ye657uT5p6c5ZCR6YePXG4gKiBAcGFyYW0gdCDopoHovazmjaLnmoTlkJHph49cbiAqIEBwYXJhbSBuIOefqemYtei9rOaNolxuICogQHJldHVybnMgW3YxICogbTExICsgdjIgKiBtMTIgKyB2MyAqIG0xMywgdjEgKiBtMjEgKyB2MiAqIG0yMiArIHYzICogbTIzLCB2MSAqIG0zMSArIHYyICogbTMyICsgdjMgKiBtMzNdO1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWF0MyhvdXQ6IG51bWJlcltdLCB2ZWN0b3I6IG51bWJlcltdLCBtYXRyaXg6IG51bWJlcltdKSB7XG4gICAgb3V0ID0gW1xuICAgICAgICB2ZWN0b3JbMF0gKiBtYXRyaXhbMF0gKyB2ZWN0b3JbMV0gKiBtYXRyaXhbM10gKyB2ZWN0b3JbMl0gKiBtYXRyaXhbNl0sXG4gICAgICAgIHZlY3RvclswXSAqIG1hdHJpeFsxXSArIHZlY3RvclsxXSAqIG1hdHJpeFs0XSArIHZlY3RvclsyXSAqIG1hdHJpeFs3XSxcbiAgICAgICAgdmVjdG9yWzBdICogbWF0cml4WzJdICsgdmVjdG9yWzFdICogbWF0cml4WzVdICsgdmVjdG9yWzJdICogbWF0cml4WzhdXG4gICAgXTtcbiAgICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIOinhOiMgyBwb2ludFxuICogQHBhcmFtIHBvaW50XG4gKiBAcmV0dXJucyBwb2ludFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUG9pbnQocG9pbnQ6IG51bWJlcltdKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocG9pbnQpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICB4OiBwb2ludFswXSxcbiAgICAgICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgICB9XG4gICAgICAgIDogcG9pbnQ7XG59XG5cbi8qKlxuICog5bCG5LiA5Liq54K55Z2Q5qCH5Y+N6L2s5Zue5a6D55qE5Y6f5aeL5Z2Q5qCHXG4gKiBAcGFyYW0gcG9pbnQg6KGo56S66KaB5Y+N6L2s55qE54K555qE6KeG5Zu+5Z2Q5qCH77yM5a6D5piv5LiA5Liq6ZW/5bqm5Li6IDIg55qE5pWw57uE77yM5a2Y5YKo54K555qEIHgg5ZKMIHkg5Z2Q5qCHXG4gKiBAcGFyYW0gbWF0cml4IOihqOekuuinhuWbvuefqemYte+8jOaYr+WcqOinhuWbvuS4reWvueWbvuW9oui/m+ihjOe8qeaUvuWSjOW5s+enu+aXtuS9v+eUqOeahOefqemYtVxuICogQHJldHVybnMg5pyA57uI57uT5p6c5piv5LiA5Liq6ZW/5bqm5Li6IDMg55qE5pWw57uE77yM5a2Y5YKo54K555qEIHjvvIx5IOWSjCB3IOWdkOagh++8iHcg5Z2Q5qCH5piv54K555qE6b2Q5qyh5Z2Q5qCHKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0Vmlld3BvcnRDb29yZGluYXRlcyhwb2ludDogbnVtYmVyW10sIG1hdHJpeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCB7IHgsIHkgfSA9IG5vcm1hbGl6ZVBvaW50KHBvaW50KTtcbiAgICBjb25zdCBpbnZlcnRlZE1hdHJpeCA9IGludmVydE1hdHJpeChbXSwgbWF0cml4KTtcbiAgICByZXR1cm4gdHJhbnNmb3JtTWF0MyhbXSwgW3gsIHksIDFdLCBpbnZlcnRlZE1hdHJpeCBhcyBbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9WaWV3cG9ydENvb3JkaW5hdGVzKHBvaW50OiBudW1iZXJbXSwgbWF0cml4OiBudW1iZXJbXSkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gbm9ybWFsaXplUG9pbnQocG9pbnQpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1NYXQzKFtdLCBbeCwgeSwgMV0sIG1hdHJpeCk7XG59XG5cbi8qKlxuICog6I635Y+WIGNvbnRlbnRDb250YWluZXIg55qEIGNsaWVudEJveFxuICogQHBhcmFtIGJvYXJkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRDb250YWluZXJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IGhpZGVTY3JvbGxiYXIgfSA9IGJvYXJkLm9wdGlvbnM7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3QgY29udGFpbmVyID0gUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gY29udGFpbmVyUmVjdC54IHx8IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICBjb25zdCB5ID0gY29udGFpbmVyUmVjdC55IHx8IGNvbnRhaW5lclJlY3QudG9wO1xuICAgIGNvbnN0IHdpZHRoID0gY29udGFpbmVyUmVjdC53aWR0aCAtIHNjcm9sbEJhcldpZHRoO1xuICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lclJlY3QuaGVpZ2h0IC0gc2Nyb2xsQmFyV2lkdGg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiB4LFxuICAgICAgICBtaW5ZOiB5LFxuICAgICAgICBtYXhYOiB4ICsgd2lkdGgsXG4gICAgICAgIG1heFk6IHkgKyBoZWlnaHQsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xufVxuXG4vKipcbiAqIOiOt+WPliBib2FyZC5wbGFpdC1ib2FyZCDnmoQgY2xpZW50Qm94XG4gKiBAcGFyYW0gYm9hcmRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb2FyZENsaWVudEJveChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgaGlkZVNjcm9sbGJhciB9ID0gYm9hcmQub3B0aW9ucztcbiAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IGhpZGVTY3JvbGxiYXIgPyBTQ1JPTExfQkFSX1dJRFRIIDogMDtcbiAgICBjb25zdCB2aWV3cG9ydFJlY3QgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdmlld3BvcnRSZWN0LndpZHRoICsgc2Nyb2xsQmFyV2lkdGgsXG4gICAgICAgIGhlaWdodDogdmlld3BvcnRSZWN0LmhlaWdodCArIHNjcm9sbEJhcldpZHRoXG4gICAgfTtcbn1cblxuLyoqXG4gKiDojrflj5Ygcm9vdEdyb3VwIOebuOWvueS6juW9k+WJjSBzdmcg56m66Ze055qE5pyA5bCP55+p6Zi15Z2Q5qCHXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290R3JvdXBCQm94KGJvYXJkOiBQbGFpdEJvYXJkLCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCBlbGVtZW50SG9zdCA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEhvc3QoYm9hcmQpO1xuICAgIGNvbnN0IHJvb3RHcm91cEJveCA9IGVsZW1lbnRIb3N0LmdldEJCb3goKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lckJveCA9IGdldFZpZXdwb3J0Q29udGFpbmVyQm94KGJvYXJkKTtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHZpZXdwb3J0Q29udGFpbmVyQm94LndpZHRoIC8gem9vbTtcbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB2aWV3cG9ydENvbnRhaW5lckJveC5oZWlnaHQgLyB6b29tO1xuICAgIGxldCBsZWZ0OiBudW1iZXI7XG4gICAgbGV0IHJpZ2h0OiBudW1iZXI7XG4gICAgbGV0IHRvcDogbnVtYmVyO1xuICAgIGxldCBib3R0b206IG51bWJlcjtcblxuICAgIGlmIChyb290R3JvdXBCb3gud2lkdGggPCBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBjb25zdCBvZmZzZXRYID0gcm9vdEdyb3VwQm94LnggKyByb290R3JvdXBCb3gud2lkdGggLyAyO1xuICAgICAgICBjb25zdCBjb250YWluZXJYID0gY29udGFpbmVyV2lkdGggLyAyO1xuICAgICAgICBsZWZ0ID0gb2Zmc2V0WCAtIGNvbnRhaW5lclg7XG4gICAgICAgIHJpZ2h0ID0gb2Zmc2V0WCArIGNvbnRhaW5lclg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IHJvb3RHcm91cEJveC54O1xuICAgICAgICByaWdodCA9IHJvb3RHcm91cEJveC54ICsgcm9vdEdyb3VwQm94LndpZHRoO1xuICAgIH1cbiAgICBpZiAocm9vdEdyb3VwQm94LmhlaWdodCA8IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gcm9vdEdyb3VwQm94LnkgKyByb290R3JvdXBCb3guaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgY29udGFpbmVyWSA9IGNvbnRhaW5lckhlaWdodCAvIDI7XG4gICAgICAgIHRvcCA9IG9mZnNldFkgLSBjb250YWluZXJZO1xuICAgICAgICBib3R0b20gPSBvZmZzZXRZICsgY29udGFpbmVyWTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b3AgPSByb290R3JvdXBCb3gueTtcbiAgICAgICAgYm90dG9tID0gcm9vdEdyb3VwQm94LnkgKyByb290R3JvdXBCb3guaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodCxcbiAgICAgICAgdG9wLFxuICAgICAgICBib3R0b21cbiAgICB9O1xufVxuXG4vKipcbiAqIOmqjOivgee8qeaUvuavlOaYr+WQpuespuWQiOmZkOWItu+8jOWmguaenOi2heWHuumZkOWItu+8jOWImei/lOWbnuWQiOmAgueahOe8qeaUvuavlFxuICogQHBhcmFtIHpvb20g57yp5pS+5q+UXG4gKiBAcGFyYW0gbWluWm9vbSDmnIDlsI/nvKnmlL7mr5RcbiAqIEBwYXJhbSBtYXhab29tIOacgOWkp+e8qeaUvuavlFxuICogQHJldHVybnMg5q2j56Gu55qE57yp5pS+5q+UXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFpvb21MZXZlbCh6b29tOiBudW1iZXIsIG1pblpvb20gPSAwLjIsIG1heFpvb20gPSA0KSB7XG4gICAgcmV0dXJuIHpvb20gPCBtaW5ab29tID8gbWluWm9vbSA6IHpvb20gPiBtYXhab29tID8gbWF4Wm9vbSA6IHpvb207XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { PlaitElement } from '../interfaces/element';
2
+ import { depthFirstRecursion } from './tree';
3
+ import { BOARD_TO_SELECTED_ELEMENT } from './weak-maps';
4
+ export const calcElementIntersectionSelection = (board) => {
5
+ const selectedElements = [];
6
+ depthFirstRecursion(board, node => {
7
+ if (PlaitElement.isElement(node) &&
8
+ board.selection?.ranges.some(range => {
9
+ return board.isIntersectionSelection(node, range);
10
+ })) {
11
+ selectedElements.push(node);
12
+ }
13
+ });
14
+ return selectedElements;
15
+ };
16
+ export const cacheSelectedElements = (board, selectedElements) => {
17
+ BOARD_TO_SELECTED_ELEMENT.set(board, selectedElements);
18
+ };
19
+ export const getSelectedElements = (board) => {
20
+ return BOARD_TO_SELECTED_ELEMENT.get(board) || [];
21
+ };
22
+ export const addSelectedElement = (board, element) => {
23
+ const selectedElements = getSelectedElements(board);
24
+ cacheSelectedElements(board, [...selectedElements, element]);
25
+ };
26
+ export const removeSelectedElement = (board, element) => {
27
+ const selectedElements = getSelectedElements(board);
28
+ const newselectedElements = selectedElements.filter(value => value !== element);
29
+ cacheSelectedElements(board, newselectedElements);
30
+ };
31
+ export const isSelectedElement = (board, element) => {
32
+ const selectedElements = getSelectedElements(board);
33
+ return !!selectedElements.find(value => value === element);
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9zZWxlY3RlZC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUM1QyxtQkFBbUIsQ0FBWSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDekMsSUFDSSxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUM1QixLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsRUFDSjtZQUNFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsZ0JBQWdDLEVBQUUsRUFBRTtJQUN6Rix5QkFBeUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDckQsT0FBTyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDM0UsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUM5RSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLHFCQUFxQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDMUUsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uIH0gZnJvbSAnLi90cmVlJztcbmltcG9ydCB7IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgfSBmcm9tICcuL3dlYWstbWFwcyc7XG5cbmV4cG9ydCBjb25zdCBjYWxjRWxlbWVudEludGVyc2VjdGlvblNlbGVjdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxQbGFpdE5vZGU+KGJvYXJkLCBub2RlID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJlxuICAgICAgICAgICAgYm9hcmQuc2VsZWN0aW9uPy5yYW5nZXMuc29tZShyYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJvYXJkLmlzSW50ZXJzZWN0aW9uU2VsZWN0aW9uKG5vZGUsIHJhbmdlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FjaGVTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuc2V0KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuZ2V0KGJvYXJkKSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5zZWxlY3RlZEVsZW1lbnRzLCBlbGVtZW50XSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgbmV3c2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBlbGVtZW50KTtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld3NlbGVjdGVkRWxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuICEhc2VsZWN0ZWRFbGVtZW50cy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBlbGVtZW50KTtcbn07XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export function depthFirstRecursion(node, callback) {
2
+ node.children?.forEach(child => {
3
+ depthFirstRecursion(child, callback);
4
+ });
5
+ callback(node);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBZ0MsSUFBTyxFQUFFLFFBQTJCO0lBQ25HLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzNCLG1CQUFtQixDQUFDLEtBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlcHRoRmlyc3RSZWN1cnNpb248VCBleHRlbmRzIFRyZWVOb2RlID0gVHJlZU5vZGU+KG5vZGU6IFQsIGNhbGxiYWNrOiAobm9kZTogVCkgPT4gdm9pZCkge1xuICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKGNoaWxkIGFzIFQsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgICBjYWxsYmFjayhub2RlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmVlTm9kZSB7XG4gICAgY2hpbGRyZW4/OiBUcmVlTm9kZVtdO1xufVxuIl19
@@ -2,6 +2,10 @@
2
2
  export const FLUSHING = new WeakMap();
3
3
  export const IS_TEXT_EDITABLE = new WeakMap();
4
4
  export const BOARD_TO_ON_CHANGE = new WeakMap();
5
- export const HOST_TO_ROUGH_SVG = new WeakMap();
6
- export const PLAIT_BOARD_TO_COMPONENT = new WeakMap();
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL3dlYWstbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFpQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9ib2FyZC9ib2FyZC5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgRkxVU0hJTkc6IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4gPSBuZXcgV2Vha01hcCgpO1xuXG5leHBvcnQgY29uc3QgSVNfVEVYVF9FRElUQUJMRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19PTl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgSE9TVF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxTVkdFbGVtZW50LCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IFBMQUlUX0JPQVJEX1RPX0NPTVBPTkVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlPigpOyJdfQ==
5
+ export const BOARD_TO_COMPONENT = new WeakMap();
6
+ export const BOARD_TO_ROUGH_SVG = new WeakMap();
7
+ export const BOARD_TO_HOST = new WeakMap();
8
+ export const BOARD_TO_ELEMENT_HOST = new WeakMap();
9
+ export const BOARD_TO_SELECTED_ELEMENT = new WeakMap();
10
+ export const BOARD_TO_MOVING_POINT = new WeakMap();
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL3dlYWstbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFpQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vYm9hcmQvYm9hcmQuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgRkxVU0hJTkc6IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4gPSBuZXcgV2Vha01hcCgpO1xuXG5leHBvcnQgY29uc3QgSVNfVEVYVF9FRElUQUJMRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19PTl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fQ09NUE9ORU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdTVkdFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9IT1NUID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgU1ZHR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfUE9JTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcbiJdfQ==