@plait/mind 0.2.0-next.7 → 0.2.0-next.9

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 (98) hide show
  1. package/constants/abstract-node.d.ts +4 -0
  2. package/constants/default.d.ts +1 -2
  3. package/constants/index.d.ts +4 -1
  4. package/constants/node-rule.d.ts +1 -0
  5. package/constants/node-style.d.ts +17 -0
  6. package/constants/node-topic-style.d.ts +4 -0
  7. package/draw/richtext.d.ts +4 -3
  8. package/esm2020/constants/abstract-node.mjs +5 -0
  9. package/esm2020/constants/default.mjs +2 -3
  10. package/esm2020/constants/index.mjs +5 -2
  11. package/esm2020/constants/node-rule.mjs +2 -0
  12. package/esm2020/constants/node-style.mjs +19 -0
  13. package/esm2020/constants/node-topic-style.mjs +5 -0
  14. package/esm2020/draw/abstract.mjs +4 -3
  15. package/esm2020/draw/indented-link.mjs +14 -14
  16. package/esm2020/draw/link/abstract-link.mjs +6 -4
  17. package/esm2020/draw/link/logic-link.mjs +7 -7
  18. package/esm2020/draw/link.mjs +6 -5
  19. package/esm2020/draw/richtext.mjs +7 -7
  20. package/esm2020/draw/shape.mjs +4 -4
  21. package/esm2020/drawer/quick-insert.drawer.mjs +11 -12
  22. package/esm2020/interfaces/abstract.mjs +1 -1
  23. package/esm2020/interfaces/element.mjs +6 -1
  24. package/esm2020/interfaces/node.mjs +1 -1
  25. package/esm2020/interfaces/options.mjs +2 -0
  26. package/esm2020/layout-option.mjs +5 -5
  27. package/esm2020/mind.component.mjs +2 -2
  28. package/esm2020/node.component.mjs +15 -13
  29. package/esm2020/plugins/emoji/emoji.drawer.mjs +3 -4
  30. package/esm2020/plugins/emoji/emoji.mjs +7 -3
  31. package/esm2020/plugins/emoji/index.mjs +1 -2
  32. package/esm2020/plugins/with-abstract.mjs +2 -2
  33. package/esm2020/plugins/with-dnd.mjs +12 -117
  34. package/esm2020/plugins/with-extend-mind.mjs +11 -0
  35. package/esm2020/plugins/with-mind.mjs +9 -7
  36. package/esm2020/public-api.mjs +2 -1
  37. package/esm2020/queries/get-available-sublayouts-by-element.mjs +4 -9
  38. package/esm2020/queries/get-branch-layouts.mjs +4 -4
  39. package/esm2020/queries/get-correct-layout-by-element.mjs +28 -31
  40. package/esm2020/queries/get-layout-by-element.mjs +10 -8
  41. package/esm2020/queries/index.mjs +1 -3
  42. package/esm2020/transforms/abstract-node.mjs +68 -0
  43. package/esm2020/transforms/index.mjs +6 -2
  44. package/esm2020/transforms/layout.mjs +3 -3
  45. package/esm2020/transforms/node.mjs +2 -2
  46. package/esm2020/utils/abstract/common.mjs +90 -70
  47. package/esm2020/utils/abstract/resize.mjs +3 -3
  48. package/esm2020/utils/clipboard.mjs +54 -14
  49. package/esm2020/utils/direction-corrector.mjs +11 -11
  50. package/esm2020/utils/dnd.mjs +118 -0
  51. package/esm2020/utils/draw-placeholder.mjs +5 -5
  52. package/esm2020/utils/drop-target-corrector.mjs +11 -10
  53. package/esm2020/utils/layout.mjs +1 -1
  54. package/esm2020/utils/mind.mjs +23 -58
  55. package/esm2020/utils/node-space.mjs +5 -5
  56. package/esm2020/utils/node-style/branch.mjs +33 -6
  57. package/esm2020/utils/node-style/node.mjs +6 -5
  58. package/esm2020/utils/path.mjs +4 -3
  59. package/esm2020/utils/shape.mjs +3 -3
  60. package/fesm2015/plait-mind.mjs +724 -602
  61. package/fesm2015/plait-mind.mjs.map +1 -1
  62. package/fesm2020/plait-mind.mjs +726 -600
  63. package/fesm2020/plait-mind.mjs.map +1 -1
  64. package/interfaces/abstract.d.ts +3 -0
  65. package/interfaces/element.d.ts +5 -2
  66. package/interfaces/options.d.ts +4 -0
  67. package/layout-option.d.ts +2 -1
  68. package/mind.component.d.ts +2 -2
  69. package/node.component.d.ts +5 -4
  70. package/package.json +1 -1
  71. package/plugins/emoji/emoji.d.ts +2 -1
  72. package/plugins/emoji/emoji.drawer.d.ts +3 -3
  73. package/plugins/emoji/index.d.ts +0 -1
  74. package/plugins/with-dnd.d.ts +0 -9
  75. package/plugins/with-extend-mind.d.ts +10 -0
  76. package/plugins/with-mind.d.ts +1 -1
  77. package/public-api.d.ts +1 -0
  78. package/queries/get-available-sublayouts-by-element.d.ts +2 -6
  79. package/queries/get-branch-layouts.d.ts +2 -1
  80. package/queries/get-correct-layout-by-element.d.ts +2 -1
  81. package/queries/index.d.ts +3 -4
  82. package/styles/styles.scss +0 -3
  83. package/transforms/abstract-node.d.ts +6 -0
  84. package/transforms/index.d.ts +3 -0
  85. package/utils/abstract/common.d.ts +6 -8
  86. package/utils/direction-corrector.d.ts +2 -1
  87. package/utils/dnd.d.ts +16 -0
  88. package/utils/drop-target-corrector.d.ts +2 -1
  89. package/utils/mind.d.ts +3 -3
  90. package/utils/node-space.d.ts +3 -2
  91. package/utils/node-style/branch.d.ts +3 -0
  92. package/utils/shape.d.ts +2 -3
  93. package/constants/node.d.ts +0 -17
  94. package/esm2020/constants/node.mjs +0 -19
  95. package/esm2020/plugins/emoji/with-mind-emoji.mjs +0 -8
  96. package/esm2020/queries/get-layout-parent-by-element.mjs +0 -17
  97. package/plugins/emoji/with-mind-emoji.d.ts +0 -8
  98. package/queries/get-layout-parent-by-element.d.ts +0 -8
@@ -21,8 +21,8 @@ export const drawPlaceholderDropNodeG = (board, dropTarget, fakeDropNodeG) => {
21
21
  }
22
22
  };
23
23
  export const drawCurvePlaceholderDropNodeG = (board, targetRect, detectResult, targetIndex, targetComponent, parentComponent, fakeDropNodeG) => {
24
- const parentNodeLayout = MindQueries.getCorrectLayoutByElement(parentComponent.node.origin);
25
- const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.parent.origin);
24
+ const parentNodeLayout = MindQueries.getCorrectLayoutByElement(board, parentComponent.node.origin);
25
+ const layout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.parent.origin);
26
26
  const strokeWidth = targetComponent.node.origin.branchWidth ? targetComponent.node.origin.branchWidth : STROKE_WIDTH;
27
27
  let fakeX = targetComponent.node.x, fakeY = targetRect.y - 30, fakeRectangleStartX = targetRect.x, fakeRectangleEndX = targetRect.x + 30, fakeRectangleStartY = fakeY, fakeRectangleEndY = fakeRectangleStartY + 12, width = 30;
28
28
  if (isLeftLayout(layout)) {
@@ -153,8 +153,8 @@ export const drawStraightDropNodeG = (board, targetRect, detectResult, targetCom
153
153
  height,
154
154
  strokeWidth
155
155
  };
156
- const parentLayout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
157
- const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin);
156
+ const parentLayout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
157
+ const layout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin);
158
158
  if (!isMixedLayout(parentLayout, layout)) {
159
159
  // 构造一条直线
160
160
  let linePoints = [
@@ -308,4 +308,4 @@ export const drawIndentNodeG = (board, fakeDropNodeG, fakePoint, node) => {
308
308
  fakeDropNodeG?.appendChild(linkSVGG);
309
309
  fakeDropNodeG?.appendChild(fakeRectangleG);
310
310
  };
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUNILHNCQUFzQixFQUN0QixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLHFCQUFxQixFQUV4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUNwQyxLQUFpQixFQUNqQixVQUErRCxFQUMvRCxhQUFzQyxFQUN4QyxFQUFFO0lBQ0EsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFzQixDQUFDO0lBQzFGLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMs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QSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBYSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFL0UsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQzlCLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFDL0Isa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FDckMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0Isb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCO1FBQ0ksTUFBTSxFQUFFLGFBQWE7UUFDckIsV0FBVyxFQUFFLENBQUM7UUFDZCxJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsT0FBTztLQUNyQixDQUNKLENBQUM7SUFDRixhQUFhLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLGFBQWEsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFTRSwgUFJJTUFSWV9DT0xPUiwgU1RST0tFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyYXdMaW5rIH0gZnJvbSAnLi4vZHJhdy9saW5rJztcbmltcG9ydCB7IERldGVjdFJlc3VsdCwgTWluZEVsZW1lbnQsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vZ3JhcGgnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7XG4gICAgZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbixcbiAgICBpc0JvdHRvbUxheW91dCxcbiAgICBpc0hvcml6b250YWxMYXlvdXQsXG4gICAgaXNIb3Jpem9udGFsTG9naWNMYXlvdXQsXG4gICAgaXNJbmRlbnRlZExheW91dCxcbiAgICBpc1JpZ2h0TGF5b3V0LFxuICAgIGlzVmVydGljYWxMb2dpY0xheW91dCxcbiAgICBNaW5kTGF5b3V0VHlwZVxufSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBkcmF3SW5kZW50ZWRMaW5rIH0gZnJvbSAnLi4vZHJhdy9pbmRlbnRlZC1saW5rJztcbmltcG9ydCB7IGlzTGVmdExheW91dCwgaXNUb3BMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc1N0YW5kYXJkTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNNaXhlZExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcblxuZXhwb3J0IGNvbnN0IGRyYXdQbGFjZWhvbGRlckRyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0sXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZHJvcFRhcmdldC50YXJnZXQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUodGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3JpZ2h0JywgJ2xlZnQnXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHKGJvYXJkLCB0YXJnZXRSZWN0LCBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCwgdGFyZ2V0Q29tcG9uZW50LCBmYWtlRHJvcE5vZGVHKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Q29tcG9uZW50LnBhcmVudCAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuLmluZGV4T2YodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICAgICAgZHJhd0N1cnZlUGxhY2Vob2xkZXJEcm9wTm9kZUcoXG4gICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgIHRhcmdldFJlY3QsXG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCxcbiAgICAgICAgICAgIHRhcmdldEluZGV4LFxuICAgICAgICAgICAgdGFyZ2V0Q29tcG9uZW50LFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgZmFrZURyb3BOb2RlR1xuICAgICAgICApO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Q3VydmVQbGFjZWhvbGRlckRyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBwYXJlbnRDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgICBjb25zdCBwYXJlbnROb2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCxcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSB0YXJnZXRSZWN0LnggKyAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WSA9IGZha2VZLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMixcbiAgICAgICAgd2lkdGggPSAzMDtcblxuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHRhcmdldENvbXBvbmVudC5ub2RlLnggKyB0YXJnZXRDb21wb25lbnQubm9kZS53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGlmIChpc0hvcml6b250YWxMb2dpY0xheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICBmYWtlWSA9IGdldEhvcml6b250YWxGYWtlWShkZXRlY3RSZXN1bHQgYXMgJ3RvcCcgfCAnYm90dG9tJywgdGFyZ2V0SW5kZXgsIHBhcmVudENvbXBvbmVudC5ub2RlLCB0YXJnZXRSZWN0LCBsYXlvdXQsIGZha2VZKTtcbiAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50Tm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IHx8IDA7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwYXJlbnRDb21wb25lbnQubm9kZS5jaGlsZHJlbi5maW5kSW5kZXgoeCA9PiB4ID09PSB0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnQgPSBpZHggPj0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAvLyDmoIflh4bluIPlsYDnmoTlt6bvvIzpnIDopoHosIPmlbQgeFxuICAgICAgICAgICAgaWYgKGlzTGVmdCkge1xuICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgICAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0xlZnRGaXJzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0TGFzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQgLSAxO1xuICAgICAgICAgICAgLy8g5ouW5ou96Iez5bem56ys5LiA5Liq6IqC54K555qE5oOF5Ya1XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAndG9wJyAmJiBpc0xlZnRGaXJzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJyAmJiBpc1JpZ2h0TGFzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBwYXJlbnRDb21wb25lbnQgPSB0YXJnZXRDb21wb25lbnQ7XG4gICAgICAgIHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50LnBhcmVudC5vcmlnaW4pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICBmYWtlWCA9IHBhcmVudENvbXBvbmVudC5ub2RlLng7XG4gICAgICAgIHdpZHRoID0gcGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGg7XG4gICAgICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNiArIHN0cm9rZVdpZHRoO1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgLSB2R2FwICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgKyB2R2FwIC0gc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IGZha2VYICsgTWF0aC5jZWlsKHBhcmVudENvbXBvbmVudC5ub2RlLndpZHRoIC8gMikgLSBwYXJlbnRDb21wb25lbnQubm9kZS5oR2FwIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMjtcbiAgICB9XG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAvLyDlgY/np7vkuIDkuKogR2FwXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggLT0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUmlnaHRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggKz0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHRhcmdldFJlY3QuaGVpZ2h0IC0gQkFTRTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5leHRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gTWF0aC5hYnMoKG5leHRSZWN0LnkgKyBuZXh0UmVjdC5oZWlnaHQgLSB0YXJnZXRSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHBhcmVudENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwYXJlbnRSZWN0LnkgLSBwYXJlbnRSZWN0LmhlaWdodCAvIDIgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwcmV2aW91c1JlY3QueSAtIE1hdGguYWJzKCh0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCAtIHByZXZpb3VzUmVjdC55KSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVg7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIC8vIOaehOmAoOS4gOadoeabsue6v1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGgsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KVxuICAgICAgICA/IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgZmFsc2UpXG4gICAgICAgIDogZHJhd0xpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCksIGZhbHNlKTtcbiAgICAvLyDmnoTpgKDkuIDkuKrnn6nlvaLmoYblnZDmoIdcbiAgICBjb25zdCBmYWtlUmVjdGFuZ2xlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFgsXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuZXhwb3J0IGNvbnN0IGRyYXdTdHJhaWdodERyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdDtcbiAgICBjb25zdCBsaW5lTGVuZ3RoID0gNDA7XG4gICAgbGV0IHN0YXJ0TGluZVBvaW50ID0geCArIHdpZHRoO1xuICAgIGxldCBlbmRMaW5lUG9pbnQgPSB4ICsgd2lkdGggKyBsaW5lTGVuZ3RoO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WCA9IHggKyBsaW5lTGVuZ3RoICsgd2lkdGggKyAzMDtcbiAgICBsZXQgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSB5ICsgaGVpZ2h0IC8gMiAtIDY7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNiArIDEyO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHN0YXJ0TGluZVBvaW50ID0geCAtIGxpbmVMZW5ndGg7XG4gICAgICAgIGVuZExpbmVQb2ludCA9IHg7XG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGggLSAzMDtcbiAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGg7XG4gICAgfVxuICAgIGxldCBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0UmVjdC54O1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoIDogU1RST0tFX1dJRFRIO1xuICAgIGNvbnN0IHBvaW50T3B0aW9ucyA9IHtcbiAgICAgICAgZmFrZVgsXG4gICAgICAgIGZha2VZLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzdHJva2VXaWR0aFxuICAgIH07XG4gICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChcbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCA/IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbiA6IHRhcmdldENvbXBvbmVudC5ub2RlLnBhcmVudC5vcmlnaW5cbiAgICApO1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICBpZiAoIWlzTWl4ZWRMYXlvdXQocGFyZW50TGF5b3V0LCBsYXlvdXQpKSB7XG4gICAgICAgIC8vIOaehOmAoOS4gOadoeebtOe6v1xuICAgICAgICBsZXQgbGluZVBvaW50cyA9IFtcbiAgICAgICAgICAgIFtzdGFydExpbmVQb2ludCwgeSArIGhlaWdodCAvIDJdLFxuICAgICAgICAgICAgW2VuZExpbmVQb2ludCwgeSArIGhlaWdodCAvIDJdXG4gICAgICAgIF0gYXMgUG9pbnRbXTtcbiAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgZmFrZVBvaW50ID0gZ2V0SW5kZW50ZWRGYWtlUG9pbnQocGFyZW50TGF5b3V0LCBwb2ludE9wdGlvbnMpO1xuICAgICAgICAgICAgZHJhd0luZGVudE5vZGVHKGJvYXJkLCBmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCBmYWtlUG9pbnQsIHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICog6K6h566X6YC76L6R77yaXG4gICAgICAgICAgICAgICAgICogIDEuIOenu+WKqOWIsOW3puS+p++8muW9k+WJjeiKgueCuSBzdGFydFggLSDlgY/np7vlgLzvvIzlgY/np7vlgLzorqHnrpflpoLkuIvvvJpcbiAgICAgICAgICAgICAgICAgKiAgICAgIGEuIOesrOS4gOS4quiKgueCue+8miDlm7rlrprlgLzvvIjmnaXmupDkuo4gZ2V0TWFpbkF4bGXvvIznrKzkuoznuqfoioLngrnvvJpCQVNFICogOO+8jOWFtuS7liBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMu+8ie+8m1xuICAgICAgICAgICAgICAgICAqICAgICAgYi4g56ys5LqM5Liq6IqC54K55Yiw5pyA5ZCO5LiA5Liq6IqC54K55LmL6Ze077ya5LiK5LiA5Liq6IqC54K55Yiw5b2T5YmN6IqC54K56Ze06Led55qE5LiA5Y2K77yIKOW9k+WJjeiKgueCuSBzdGFydFggLSDkuIrkuIDkuKroioLngrnnmoQgZW5kWCkgLyAyKe+8jGVuZFggPSDlvZPliY3oioLngrnnmoQgc3RhcnRYICsgd2lkdGg7XG4gICAgICAgICAgICAgICAgICogIDIuIOenu+WKqOWIsOWPs+S+p++8muW9k+WJjeiKgueCuSB4ICsgd2lkdGggKyDlgY/np7vlgLzvvIzlgY/np7vlgLzorqHnrpflpoLkuIvvvJpcbiAgICAgICAgICAgICAgICAgKiAgICAgIGEuIOesrOS6jOS4quiKgueCueWIsOacgOWQjuS4gOS4quiKgueCueS5i+mXtOeahOWPs+S+p++8muW9k+WJjeiKgueCueWIsOS4i+S4gOS4quiKgueCuemXtOi3neeahOS4gOWNiu+8iCjkuIvkuIDkuKroioLngrkgc3RhcnRYIC0g5b2T5YmN6IqC54K555qEIGVuZFgpIC8gMinvvIxlbmRYID0g5b2T5YmN6IqC54K555qEIHN0YXJ0WCArIHdpZHRoO1xuICAgICAgICAgICAgICAgICAqICAgICAgYi4g5pyA5ZCO5LiA5Liq6IqC54K555qE5Y+z5L6n77ya5Zu65a6a5YC877yI5p2l5rqQ5LqOIGdldE1haW5BeGxl77yM56ys5LqM57qn6IqC54K577yaQkFTRSAqIDjvvIzlhbbku5YgQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDLvvInvvJtcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXRYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdE5vZGUgPSB0YXJnZXRJbmRleCA9PT0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmlyc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCA/IEJBU0UgKiA4IDogQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4IC0gMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocHJldmlvdXNDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IHRhcmdldFJlY3QueCAtIChwcmV2aW91c1JlY3QueCArIHByZXZpb3VzUmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gc3BhY2UgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0UmVjdC54IC0gb2Zmc2V0WCAtIHdpZHRoIC8gMiAtIE1hdGguY2VpbChzdHJva2VXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXRYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGFzdE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gQkFTRSAqIDggOiBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gbmV4dFJlY3QueCAtICh0YXJnZXRSZWN0LnggKyB0YXJnZXRSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBzcGFjZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRSZWN0LnggKyB3aWR0aCArIG9mZnNldFggLSB3aWR0aCAvIDIgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFggPSBmYWtlWDtcbiAgICAgICAgICAgICAgICBpZiAoaXNUb3BMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyDlm6DkuLrnn6nlvaLmmK/ku47lt6bkuIrop5LkuLrotbfngrnlkJHkuIvnlLvnmoTvvIzmiYDku6XpnIDopoHlkJHkuIrlgY/np7vkuIDkuKrnn6nlvaLnmoTpq5jluqbvvIgtMTLvvIlcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIGhlaWdodCArIHRhcmdldENvbXBvbmVudC5ub2RlLnZHYXAgLSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIHRhcmdldENvbXBvbmVudC5ub2RlLnZHYXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WCA9IHN0YXJ0UmVjdGFuZ2xlUG9pbnRYICsgMzA7XG4gICAgICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRZID0gc3RhcnRSZWN0YW5nbGVQb2ludFkgKyAxMjtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlTm9kZTogTWluZE5vZGUgPSB7IC4uLnRhcmdldENvbXBvbmVudC5ub2RlLCB4OiBmYWtlWCwgeTogZmFrZVksIHdpZHRoOiAzMCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtTVkdHID0gZHJhd0xpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChsaW5rU1ZHRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbGlua1NWR0cgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5saW5lYXJQYXRoKGxpbmVQb2ludHMsIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBzdHJva2VXaWR0aCB9KTtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDmnoTpgKDkuIDkuKrnn6nlvaLmoYblnZDmoIdcbiAgICAgICAgbGV0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCxcbiAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYLFxuICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyDmt7flkIjluIPlsYDnlLvnur/pgLvovpFcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlUG9pbnQgPSBnZXRJbmRlbnRlZEZha2VQb2ludChsYXlvdXQsIHBvaW50T3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgZHJhd0luZGVudE5vZGVHKGJvYXJkLCBmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCBmYWtlUG9pbnQsIHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SG9yaXpvbnRhbEZha2VZID0gKFxuICAgIGRldGVjdFJlc3VsdDogJ3RvcCcgfCAnYm90dG9tJyxcbiAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgIHBhcmVudE5vZGU6IE1pbmROb2RlLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSxcbiAgICBmYWtlWTogbnVtYmVyXG4pID0+IHtcbiAgICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4ocGFyZW50Tm9kZSkubGVuZ3RoO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSAwICYmIGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4IC0gMV0pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHByZXZpb3VzUmVjdC55ICsgcHJldmlvdXNSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGZha2VZID0gdG9wWSArICh0YXJnZXRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPCBjaGlsZHJlbkxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV0pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcFkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGZha2VZID0gdG9wWSArIChuZXh0UmVjdC55IC0gdG9wWSkgLyA1O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA9PT0gY2hpbGRyZW5MZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgMzA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VZO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGVudGVkRmFrZVBvaW50ID0gKFxuICAgIGxheW91dDogTWluZExheW91dFR5cGUsXG4gICAgcG9pbnRPcHRpb25zOiB7XG4gICAgICAgIGZha2VYOiBudW1iZXI7XG4gICAgICAgIGZha2VZOiBudW1iZXI7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IG51bWJlcjtcbiAgICB9XG4pID0+IHtcbiAgICBsZXQgeyBmYWtlWCwgZmFrZVksIHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0cm9rZVdpZHRoIH0gPSBwb2ludE9wdGlvbnM7XG4gICAgY29uc3QgaEdhcCA9IEJBU0UgKiA0O1xuICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNjtcbiAgICBjb25zdCBvZmZzZXRYID0gaEdhcCArIHdpZHRoIC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFkgPSB2R2FwICsgaGVpZ2h0IC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHggLSBvZmZzZXRYO1xuICAgIH1cbiAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCArIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSAtIG9mZnNldFk7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbUxheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSArIGhlaWdodCArIG9mZnNldFk7XG4gICAgfVxuICAgIHJldHVybiB7IGZha2VYLCBmYWtlWSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdJbmRlbnROb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCxcbiAgICBmYWtlUG9pbnQ6IHsgZmFrZVg6IG51bWJlcjsgZmFrZVk6IG51bWJlciB9LFxuICAgIG5vZGU6IE1pbmROb2RlXG4pID0+IHtcbiAgICBjb25zdCB7IGZha2VYLCBmYWtlWSB9ID0gZmFrZVBvaW50O1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4ubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIG5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSk7XG5cbiAgICBjb25zdCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBmYWtlWCArIDMwLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIDEyO1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuIl19
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUNILHNCQUFzQixFQUN0QixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLHFCQUFxQixFQUV4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUNwQyxLQUFpQixFQUNqQixVQUErRCxFQUMvRCxhQUFzQyxFQUN4QyxFQUFFO0lBQ0EsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFzQixDQUFDO0lBQzFGLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUNoRixxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ3JHO0lBRUQsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUMxRyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFzQixDQUFDO1FBQ3RHLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5Riw2QkFBNkIsQ0FDekIsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLENBQUMsWUFBWSxFQUN2QixXQUFXLEVBQ1gsZUFBZSxFQUNmLGVBQWUsRUFDZixhQUFhLENBQ2hCLENBQUM7S0FDTDtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQ3pDLEtBQWlCLEVBQ2pCLFVBS0MsRUFDRCxZQUEwQixFQUMxQixXQUFtQixFQUNuQixlQUFrQyxFQUNsQyxlQUFrQyxFQUNsQyxhQUFzQyxFQUN4QyxFQUFFO0lBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkcsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRyxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3JILElBQUksS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM5QixLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQ3pCLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQ2xDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUNyQyxtQkFBbUIsR0FBRyxLQUFLLEVBQzNCLGlCQUFpQixHQUFHLG1CQUFtQixHQUFHLEVBQUUsRUFDNUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVmLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3RCLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakUsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMzRCxpQkFBaUIsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7S0FDdkQ7SUFDRCxJQUFJLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDM0MsS0FBSyxHQUFHLGtCQUFrQixDQUFDLFlBQWdDLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzSCxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDcEMsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUN2RSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQUM7WUFDckMsZ0JBQWdCO1lBQ2hCLElBQUksTUFBTSxFQUFFO2dCQUNSLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pFLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQzNELGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzthQUN2RDtZQUNELE1BQU0sV0FBVyxHQUFHLEdBQUcsS0FBSyxjQUFjLENBQUM7WUFDM0MsTUFBTSxXQUFXLEdBQUcsR0FBRyxLQUFLLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDL0MsZUFBZTtZQUNmLElBQUksWUFBWSxLQUFLLEtBQUssSUFBSSxXQUFXLEVBQUU7Z0JBQ3ZDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7YUFDNUM7WUFDRCxJQUFJLFlBQVksS0FBSyxRQUFRLElBQUksV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNqRDtTQUNKO1FBQ0QsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGlCQUFpQixHQUFHLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztLQUNoRDtJQUVELElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDL0IsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUNsQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBc0IsQ0FBQztRQUNoRyxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0IsS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7WUFDL0MsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzVCLG1CQUFtQixHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUNyRCxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNoRCxtQkFBbUIsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQUNwRDtRQUNELG1CQUFtQixHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pJLGlCQUFpQixHQUFHLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM3QyxpQkFBaUIsR0FBRyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7S0FDaEQ7SUFDRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzFCLFdBQVc7UUFDWCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNyQjtRQUNELElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsSUFBSSxZQUFZLEtBQUssS0FBSyxFQUFFO2dCQUN4QixNQUFNLFVBQVUsR0FBRyxXQUFXLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ25GLElBQUksVUFBVSxFQUFFO29CQUNaLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNuRDtxQkFBTTtvQkFDSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUMzQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUNuQyxDQUFDO29CQUN2QixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hELEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUN0RjthQUNKO1lBQ0QsSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFO2dCQUMzQixNQUFNLFdBQVcsR0FBRyxXQUFXLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLFdBQVcsRUFBRTtvQkFDYixNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVELEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDdkQ7cUJBQU07b0JBQ0gsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUMvQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUNuQyxDQUFDO29CQUN2QixNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEUsS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzlGO2FBQ0o7U0FDSjtRQUNELG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixpQkFBaUIsR0FBRyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDN0MsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGlCQUFpQixHQUFHLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztLQUNoRDtJQUVELFNBQVM7SUFDVCxNQUFNLFFBQVEsR0FBYSxFQUFFLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM5RixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RyxZQUFZO0lBQ1osTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQ3JDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQjtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FDSixDQUFDO0lBQ0YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ2pDLEtBQWlCLEVBQ2pCLFVBS0MsRUFDRCxZQUEwQixFQUMxQixlQUFrQyxFQUNsQyxhQUFzQyxFQUN4QyxFQUFFO0lBQ0EsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBSSxjQUFjLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvQixJQUFJLFlBQVksR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQztJQUMxQyxJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQ2xELElBQUksa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3JELElBQUksb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVqRCxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUU7UUFDekIsY0FBYyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDaEMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBb0IsR0FBRyxDQUFDLEdBQUcsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUMzQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO0tBQ3ZDO0lBQ0QsSUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3JILE1BQU0sWUFBWSxHQUFHO1FBQ2pCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsQ0FBQztRQUNELENBQUM7UUFDRCxLQUFLO1FBQ0wsTUFBTTtRQUNOLFdBQVc7S0FDZCxDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFDNUQsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUN4RyxDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ3RDLFNBQVM7UUFDVCxJQUFJLFVBQVUsR0FBRztZQUNiLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCLENBQUM7UUFDYixJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNuRSxlQUFlLENBQUMsS0FBSyxFQUFFLGFBQTRCLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RixPQUFPO1NBQ1Y7YUFBTSxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JDOzs7Ozs7OzttQkFRRztnQkFDSCxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQXNCLENBQUM7Z0JBQ3RHLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFOUYsSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFO29CQUN6QixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7b0JBQ2hCLE1BQU0sV0FBVyxHQUFHLFdBQVcsS0FBSyxDQUFDLENBQUM7b0JBQ3RDLElBQUksV0FBVyxFQUFFO3dCQUNiLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztxQkFDeEY7eUJBQU07d0JBQ0gsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUMvQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUNuQyxDQUFDO3dCQUN2QixNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNuRSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztxQkFDdkI7b0JBQ0QsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzNFO2dCQUNELElBQUksWUFBWSxLQUFLLE9BQU8sRUFBRTtvQkFDMUIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO29CQUNoQixNQUFNLFVBQVUsR0FBRyxXQUFXLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ25GLElBQUksVUFBVSxFQUFFO3dCQUNaLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztxQkFDeEY7eUJBQU07d0JBQ0gsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FDM0MsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FDbkMsQ0FBQzt3QkFDdkIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzdELE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO3FCQUN2QjtvQkFDRCxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ25GO2dCQUNELG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQzNCLHdDQUF3QztvQkFDeEMsb0JBQW9CLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7aUJBQzFFO2dCQUNELElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUM5QixvQkFBb0IsR0FBRyxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQzVEO2dCQUNELGtCQUFrQixHQUFHLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztnQkFDL0Msa0JBQWtCLEdBQUcsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLFFBQVEsR0FBYSxFQUFFLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN0RixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlGLGFBQWEsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEM7U0FDSjthQUFNO1lBQ0gsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzVHLGFBQWEsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEM7UUFDRCxZQUFZO1FBQ1osSUFBSSxjQUFjLEdBQUcsa0JBQWtCLENBQ25DLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQjtZQUNJLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FDSixDQUFDO1FBRUYsYUFBYSxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUM5QztTQUFNO1FBQ0gsV0FBVztRQUNYLElBQUksdUJBQXVCLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUM3RCxlQUFlLENBQUMsS0FBSyxFQUFFLGFBQTRCLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEYsT0FBTzthQUNWO1NBQ0o7S0FDSjtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQzlCLFlBQThCLEVBQzlCLFdBQW1CLEVBQ25CLFVBQW9CLEVBQ3BCLFVBS0MsRUFDRCxNQUFzQixFQUN0QixLQUFhLEVBQ2YsRUFBRTtJQUNBLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUVqRSxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7UUFDeEIsSUFBSSxXQUFXLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQXNCLENBQUM7WUFDdEgsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ2xELEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QztLQUNKO0lBQ0QsSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFO1FBQzNCLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQzlDLElBQUksV0FBVyxHQUFHLGNBQWMsR0FBRyxDQUFDLEVBQUU7WUFDbEMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQXNCLENBQUM7WUFDbEgsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLFdBQVcsS0FBSyxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2pEO0tBQ0o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNoQyxNQUFzQixFQUN0QixZQVFDLEVBQ0gsRUFBRTtJQUNBLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFDdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUM7SUFDaEQsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDdkI7SUFDRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2QixLQUFLLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN2QjtJQUNELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3JCLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQ3ZCO0lBQ0QsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEIsS0FBSyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO0tBQ2hDO0lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDM0IsS0FBaUIsRUFDakIsYUFBMEIsRUFDMUIsU0FBMkMsRUFDM0MsSUFBYyxFQUNoQixFQUFFO0lBQ0EsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxRQUFRLEdBQWEsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEYsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9FLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUM5QixvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLEVBQy9CLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQ3JDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQjtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FDSixDQUFDO0lBQ0YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJBU0UsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4uL2RyYXcvbGluayc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50LCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQge1xuICAgIGdldE5vbkFic3RyYWN0Q2hpbGRyZW4sXG4gICAgaXNCb3R0b21MYXlvdXQsXG4gICAgaXNIb3Jpem9udGFsTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNSaWdodExheW91dCxcbiAgICBpc1ZlcnRpY2FsTG9naWNMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgZHJhd0luZGVudGVkTGluayB9IGZyb20gJy4uL2RyYXcvaW5kZW50ZWQtbGluayc7XG5pbXBvcnQgeyBpc0xlZnRMYXlvdXQsIGlzVG9wTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzTWl4ZWRMYXlvdXQgfSBmcm9tICcuL2xheW91dCc7XG5cbmV4cG9ydCBjb25zdCBkcmF3UGxhY2Vob2xkZXJEcm9wTm9kZUcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZHJvcFRhcmdldDogeyB0YXJnZXQ6IE1pbmRFbGVtZW50OyBkZXRlY3RSZXN1bHQ6IERldGVjdFJlc3VsdCB9LFxuICAgIGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgICBjb25zdCB0YXJnZXRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGRyb3BUYXJnZXQudGFyZ2V0KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBjb25zdCB0YXJnZXRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgJiYgWydyaWdodCcsICdsZWZ0J10uaW5jbHVkZXMoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQpKSB7XG4gICAgICAgIGRyYXdTdHJhaWdodERyb3BOb2RlRyhib2FyZCwgdGFyZ2V0UmVjdCwgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQsIHRhcmdldENvbXBvbmVudCwgZmFrZURyb3BOb2RlRyk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldENvbXBvbmVudC5wYXJlbnQgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgJiYgWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQpKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50LnBhcmVudC5vcmlnaW4pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5pbmRleE9mKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgICAgIGRyYXdDdXJ2ZVBsYWNlaG9sZGVyRHJvcE5vZGVHKFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICB0YXJnZXRSZWN0LFxuICAgICAgICAgICAgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQsXG4gICAgICAgICAgICB0YXJnZXRJbmRleCxcbiAgICAgICAgICAgIHRhcmdldENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUdcbiAgICAgICAgKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0N1cnZlUGxhY2Vob2xkZXJEcm9wTm9kZUcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgdGFyZ2V0UmVjdDoge1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfSxcbiAgICBkZXRlY3RSZXN1bHQ6IERldGVjdFJlc3VsdCxcbiAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgcGFyZW50Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgcGFyZW50Tm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCxcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSB0YXJnZXRSZWN0LnggKyAzMCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WSA9IGZha2VZLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMixcbiAgICAgICAgd2lkdGggPSAzMDtcblxuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHRhcmdldENvbXBvbmVudC5ub2RlLnggKyB0YXJnZXRDb21wb25lbnQubm9kZS53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgfVxuICAgIGlmIChpc0hvcml6b250YWxMb2dpY0xheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICBmYWtlWSA9IGdldEhvcml6b250YWxGYWtlWShkZXRlY3RSZXN1bHQgYXMgJ3RvcCcgfCAnYm90dG9tJywgdGFyZ2V0SW5kZXgsIHBhcmVudENvbXBvbmVudC5ub2RlLCB0YXJnZXRSZWN0LCBsYXlvdXQsIGZha2VZKTtcbiAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50Tm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IHx8IDA7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwYXJlbnRDb21wb25lbnQubm9kZS5jaGlsZHJlbi5maW5kSW5kZXgoeCA9PiB4ID09PSB0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnQgPSBpZHggPj0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAvLyDmoIflh4bluIPlsYDnmoTlt6bvvIzpnIDopoHosIPmlbQgeFxuICAgICAgICAgICAgaWYgKGlzTGVmdCkge1xuICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgICAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc0xlZnRGaXJzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0TGFzdCA9IGlkeCA9PT0gcmlnaHROb2RlQ291bnQgLSAxO1xuICAgICAgICAgICAgLy8g5ouW5ou96Iez5bem56ys5LiA5Liq6IqC54K555qE5oOF5Ya1XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAndG9wJyAmJiBpc0xlZnRGaXJzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJyAmJiBpc1JpZ2h0TGFzdCkge1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBwYXJlbnRDb21wb25lbnQgPSB0YXJnZXRDb21wb25lbnQ7XG4gICAgICAgIHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50LnBhcmVudC5vcmlnaW4pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICBmYWtlWCA9IHBhcmVudENvbXBvbmVudC5ub2RlLng7XG4gICAgICAgIHdpZHRoID0gcGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGg7XG4gICAgICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNiArIHN0cm9rZVdpZHRoO1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgLSB2R2FwICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIHZHYXA7XG4gICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVkgKyB2R2FwIC0gc3Ryb2tlV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCA9IGZha2VYICsgTWF0aC5jZWlsKHBhcmVudENvbXBvbmVudC5ub2RlLndpZHRoIC8gMikgLSBwYXJlbnRDb21wb25lbnQubm9kZS5oR2FwIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSA9IGZha2VSZWN0YW5nbGVTdGFydFkgKyAxMjtcbiAgICB9XG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAvLyDlgY/np7vkuIDkuKogR2FwXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggLT0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUmlnaHRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVggKz0gQkFTRSAqIDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIHRhcmdldFJlY3QuaGVpZ2h0IC0gQkFTRTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5leHRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gTWF0aC5hYnMoKG5leHRSZWN0LnkgKyBuZXh0UmVjdC5oZWlnaHQgLSB0YXJnZXRSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHBhcmVudENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwYXJlbnRSZWN0LnkgLSBwYXJlbnRSZWN0LmhlaWdodCAvIDIgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSBwcmV2aW91c1JlY3QueSAtIE1hdGguYWJzKCh0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCAtIHByZXZpb3VzUmVjdC55KSAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVg7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gZmFrZVJlY3RhbmdsZVN0YXJ0WCArIDMwO1xuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVk7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cblxuICAgIC8vIOaehOmAoOS4gOadoeabsue6v1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGgsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KVxuICAgICAgICA/IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgZmFsc2UpXG4gICAgICAgIDogZHJhd0xpbmsoYm9hcmQsIHBhcmVudENvbXBvbmVudC5ub2RlLCBmYWtlTm9kZSwgUFJJTUFSWV9DT0xPUiwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCksIGZhbHNlKTtcbiAgICAvLyDmnoTpgKDkuIDkuKrnn6nlvaLmoYblnZDmoIdcbiAgICBjb25zdCBmYWtlUmVjdGFuZ2xlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFgsXG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuZXhwb3J0IGNvbnN0IGRyYXdTdHJhaWdodERyb3BOb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdDtcbiAgICBjb25zdCBsaW5lTGVuZ3RoID0gNDA7XG4gICAgbGV0IHN0YXJ0TGluZVBvaW50ID0geCArIHdpZHRoO1xuICAgIGxldCBlbmRMaW5lUG9pbnQgPSB4ICsgd2lkdGggKyBsaW5lTGVuZ3RoO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WCA9IHggKyBsaW5lTGVuZ3RoICsgd2lkdGggKyAzMDtcbiAgICBsZXQgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSB5ICsgaGVpZ2h0IC8gMiAtIDY7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNiArIDEyO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHN0YXJ0TGluZVBvaW50ID0geCAtIGxpbmVMZW5ndGg7XG4gICAgICAgIGVuZExpbmVQb2ludCA9IHg7XG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGggLSAzMDtcbiAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGg7XG4gICAgfVxuICAgIGxldCBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0UmVjdC54O1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoIDogU1RST0tFX1dJRFRIO1xuICAgIGNvbnN0IHBvaW50T3B0aW9ucyA9IHtcbiAgICAgICAgZmFrZVgsXG4gICAgICAgIGZha2VZLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzdHJva2VXaWR0aFxuICAgIH07XG4gICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgXG4gICAgICAgIHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4gOiB0YXJnZXRDb21wb25lbnQubm9kZS5wYXJlbnQub3JpZ2luXG4gICAgKTtcbiAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgIGlmICghaXNNaXhlZExheW91dChwYXJlbnRMYXlvdXQsIGxheW91dCkpIHtcbiAgICAgICAgLy8g5p6E6YCg5LiA5p2h55u057q/XG4gICAgICAgIGxldCBsaW5lUG9pbnRzID0gW1xuICAgICAgICAgICAgW3N0YXJ0TGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICBbZW5kTGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBQb2ludFtdO1xuICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBjb25zdCBmYWtlUG9pbnQgPSBnZXRJbmRlbnRlZEZha2VQb2ludChwYXJlbnRMYXlvdXQsIHBvaW50T3B0aW9ucyk7XG4gICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiDorqHnrpfpgLvovpHvvJpcbiAgICAgICAgICAgICAgICAgKiAgMS4g56e75Yqo5Yiw5bem5L6n77ya5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LiA5Liq6IqC54K577yaIOWbuuWumuWAvO+8iOadpea6kOS6jiBnZXRNYWluQXhsZe+8jOesrOS6jOe6p+iKgueCue+8mkJBU0UgKiA477yM5YW25LuWIEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAy77yJ77ybXG4gICAgICAgICAgICAgICAgICogICAgICBiLiDnrKzkuozkuKroioLngrnliLDmnIDlkI7kuIDkuKroioLngrnkuYvpl7TvvJrkuIrkuIDkuKroioLngrnliLDlvZPliY3oioLngrnpl7Tot53nmoTkuIDljYrvvIgo5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOS4iuS4gOS4quiKgueCueeahCBlbmRYKSAvIDIp77yMZW5kWCA9IOW9k+WJjeiKgueCueeahCBzdGFydFggKyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgKiAgMi4g56e75Yqo5Yiw5Y+z5L6n77ya5b2T5YmN6IqC54K5IHggKyB3aWR0aCArIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LqM5Liq6IqC54K55Yiw5pyA5ZCO5LiA5Liq6IqC54K55LmL6Ze055qE5Y+z5L6n77ya5b2T5YmN6IqC54K55Yiw5LiL5LiA5Liq6IqC54K56Ze06Led55qE5LiA5Y2K77yIKOS4i+S4gOS4quiKgueCuSBzdGFydFggLSDlvZPliY3oioLngrnnmoQgZW5kWCkgLyAyKe+8jGVuZFggPSDlvZPliY3oioLngrnnmoQgc3RhcnRYICsgd2lkdGg7XG4gICAgICAgICAgICAgICAgICogICAgICBiLiDmnIDlkI7kuIDkuKroioLngrnnmoTlj7PkvqfvvJrlm7rlrprlgLzvvIjmnaXmupDkuo4gZ2V0TWFpbkF4bGXvvIznrKzkuoznuqfoioLngrnvvJpCQVNFICogOO+8jOWFtuS7liBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMu+8ie+8m1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5pbmRleE9mKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gQkFTRSAqIDggOiBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggLSAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gdGFyZ2V0UmVjdC54IC0gKHByZXZpb3VzUmVjdC54ICsgcHJldmlvdXNSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBzcGFjZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRSZWN0LnggLSBvZmZzZXRYIC0gd2lkdGggLyAyIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyBCQVNFICogOCA6IEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhY2UgPSBuZXh0UmVjdC54IC0gKHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHNwYWNlIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmYWtlWCA9IHRhcmdldFJlY3QueCArIHdpZHRoICsgb2Zmc2V0WCAtIHdpZHRoIC8gMiAtIE1hdGguY2VpbChzdHJva2VXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYO1xuICAgICAgICAgICAgICAgIGlmIChpc1RvcExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWboOS4uuefqeW9ouaYr+S7juW3puS4iuinkuS4uui1t+eCueWQkeS4i+eUu+eahO+8jOaJgOS7pemcgOimgeWQkeS4iuWBj+enu+S4gOS4quefqeW9oueahOmrmOW6pu+8iC0xMu+8iVxuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgaGVpZ2h0ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcCAtIDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0gc3RhcnRSZWN0YW5nbGVQb2ludFggKyAzMDtcbiAgICAgICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBzdGFydFJlY3RhbmdsZVBvaW50WSArIDEyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGg6IDMwIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua1NWR0cgPSBkcmF3TGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsaW5rU1ZHRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmxpbmVhclBhdGgobGluZVBvaW50cywgeyBzdHJva2U6IFBSSU1BUllfQ09MT1IsIHN0cm9rZVdpZHRoIH0pO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgICAgICBsZXQgZmFrZVJlY3RhbmdsZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYLFxuICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQoZmFrZVJlY3RhbmdsZUcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOa3t+WQiOW4g+WxgOeUu+e6v+mAu+i+kVxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VQb2ludCA9IGdldEluZGVudGVkRmFrZVBvaW50KGxheW91dCwgcG9pbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3Jpem9udGFsRmFrZVkgPSAoXG4gICAgZGV0ZWN0UmVzdWx0OiAndG9wJyB8ICdib3R0b20nLFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgcGFyZW50Tm9kZTogTWluZE5vZGUsXG4gICAgdGFyZ2V0UmVjdDoge1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfSxcbiAgICBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLFxuICAgIGZha2VZOiBudW1iZXJcbikgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbihwYXJlbnROb2RlKS5sZW5ndGg7XG5cbiAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAndG9wJykge1xuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPT09IDAgJiYgaXNUb3BMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQocGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggLSAxXSkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocHJldmlvdXNDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICBjb25zdCB0b3BZID0gcHJldmlvdXNSZWN0LnkgKyBwcmV2aW91c1JlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgZmFrZVkgPSB0b3BZICsgKHRhcmdldFJlY3QueSAtIHRvcFkpIC8gNTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgMzA7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA8IGNoaWxkcmVuTGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQocGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggKyAxXSkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgZmFrZVkgPSB0b3BZICsgKG5leHRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSBjaGlsZHJlbkxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZVk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZW50ZWRGYWtlUG9pbnQgPSAoXG4gICAgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSxcbiAgICBwb2ludE9wdGlvbnM6IHtcbiAgICAgICAgZmFrZVg6IG51bWJlcjtcbiAgICAgICAgZmFrZVk6IG51bWJlcjtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgICAgICBzdHJva2VXaWR0aDogbnVtYmVyO1xuICAgIH1cbikgPT4ge1xuICAgIGxldCB7IGZha2VYLCBmYWtlWSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgc3Ryb2tlV2lkdGggfSA9IHBvaW50T3B0aW9ucztcbiAgICBjb25zdCBoR2FwID0gQkFTRSAqIDQ7XG4gICAgY29uc3QgdkdhcCA9IEJBU0UgKiA2O1xuICAgIGNvbnN0IG9mZnNldFggPSBoR2FwICsgd2lkdGggLyAyICsgc3Ryb2tlV2lkdGg7XG4gICAgY29uc3Qgb2Zmc2V0WSA9IHZHYXAgKyBoZWlnaHQgLyAyICsgc3Ryb2tlV2lkdGg7XG4gICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCAtIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1JpZ2h0TGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVggPSB4ICsgb2Zmc2V0WDtcbiAgICB9XG4gICAgaWYgKGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVkgPSB5IC0gb2Zmc2V0WTtcbiAgICB9XG4gICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVkgPSB5ICsgaGVpZ2h0ICsgb2Zmc2V0WTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZmFrZVgsIGZha2VZIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0luZGVudE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50LFxuICAgIGZha2VQb2ludDogeyBmYWtlWDogbnVtYmVyOyBmYWtlWTogbnVtYmVyIH0sXG4gICAgbm9kZTogTWluZE5vZGVcbikgPT4ge1xuICAgIGNvbnN0IHsgZmFrZVgsIGZha2VZIH0gPSBmYWtlUG9pbnQ7XG4gICAgY29uc3QgZmFrZU5vZGU6IE1pbmROb2RlID0geyAuLi5ub2RlLCB4OiBmYWtlWCwgeTogZmFrZVksIHdpZHRoOiAzMCwgaGVpZ2h0OiAxMiB9O1xuICAgIGNvbnN0IGxpbmtTVkdHID0gZHJhd0luZGVudGVkTGluayhib2FyZCwgbm9kZSwgZmFrZU5vZGUsIFBSSU1BUllfQ09MT1IsIGZhbHNlKTtcblxuICAgIGNvbnN0IHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0gZmFrZVgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZID0gZmFrZVksXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WCA9IGZha2VYICsgMzAsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgMTI7XG4gICAgY29uc3QgZmFrZVJlY3RhbmdsZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WCxcbiAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG4gICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbn07XG4iXX0=
@@ -1,19 +1,20 @@
1
- import { isStandardLayout, isIndentedLayout, isVerticalLogicLayout, isTopLayout, MindLayoutType } from '@plait/layouts';
1
+ import { isStandardLayout, isIndentedLayout, isVerticalLogicLayout, isTopLayout, MindLayoutType, getNonAbstractChildren } from '@plait/layouts';
2
2
  import { MindQueries } from '../queries';
3
3
  import { isMixedLayout } from './layout';
4
4
  import { PlaitElement } from '@plait/core';
5
5
  /* 根据布局调整 target 以及 direction */
6
- export const readjustmentDropTarget = (dropTarget) => {
6
+ export const readjustmentDropTarget = (board, dropTarget) => {
7
7
  const { target, detectResult } = dropTarget;
8
8
  const newDropTarget = { target, detectResult };
9
9
  const targetComponent = PlaitElement.getComponent(target);
10
10
  if (targetComponent.node.children.length > 0 && dropTarget.detectResult) {
11
- const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin);
12
- const parentLayout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
11
+ const layout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin);
12
+ const parentLayout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
13
+ const children = getNonAbstractChildren(targetComponent.node);
13
14
  if (['right', 'left'].includes(dropTarget.detectResult)) {
14
15
  if (!isMixedLayout(parentLayout, layout)) {
15
16
  if (targetComponent.node.origin.isRoot) {
16
- const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin);
17
+ const layout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin);
17
18
  // 标准布局,根节点
18
19
  if (isStandardLayout(layout)) {
19
20
  const rightNodeCount = targetComponent.node.origin.rightNodeCount;
@@ -47,14 +48,14 @@ export const readjustmentDropTarget = (dropTarget) => {
47
48
  return newDropTarget;
48
49
  }
49
50
  // 剩下是水平布局的默认情况:插入最后一个子节点的下方
50
- const lastChildNodeIndex = targetComponent.node.children.length - 1;
51
+ const lastChildNodeIndex = children.length - 1;
51
52
  newDropTarget.target = targetComponent.node.children[lastChildNodeIndex].origin;
52
53
  newDropTarget.detectResult = 'bottom';
53
54
  }
54
55
  else {
55
56
  // 处理左右布局下的混合布局
56
57
  if ([MindLayoutType.left, MindLayoutType.right].includes(parentLayout)) {
57
- const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin);
58
+ const layout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin);
58
59
  if (isIndentedLayout(layout)) {
59
60
  newDropTarget.target = targetComponent.node.children[0].origin;
60
61
  newDropTarget.detectResult = isTopLayout(layout) ? 'bottom' : 'top';
@@ -71,9 +72,9 @@ export const readjustmentDropTarget = (dropTarget) => {
71
72
  return newDropTarget;
72
73
  }
73
74
  // 上下布局,插到右边
74
- const parentLayout = MindQueries.getCorrectLayoutByElement(targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
75
+ const parentLayout = MindQueries.getCorrectLayoutByElement(board, targetComponent.node.origin.isRoot ? targetComponent.node.origin : targetComponent.node.parent.origin);
75
76
  if (isVerticalLogicLayout(parentLayout)) {
76
- const lastChildNodeIndex = targetComponent.node.children.length - 1;
77
+ const lastChildNodeIndex = children.length - 1;
77
78
  newDropTarget.target = targetComponent.node.children[lastChildNodeIndex].origin;
78
79
  newDropTarget.detectResult = 'right';
79
80
  return newDropTarget;
@@ -83,4 +84,4 @@ export const readjustmentDropTarget = (dropTarget) => {
83
84
  }
84
85
  return dropTarget;
85
86
  };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC10YXJnZXQtY29ycmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvZHJvcC10YXJnZXQtY29ycmVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0MsZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsVUFHdEMsRUFBdUQsRUFBRTtJQUN0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUM1QyxNQUFNLGFBQWEsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUMvQyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBc0IsQ0FBQztJQUMvRSxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRTtRQUNyRSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQ3RELGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdGFuZGFyZExheW91dCwgaXNJbmRlbnRlZExheW91dCwgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LCBpc1RvcExheW91dCwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBpc01peGVkTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG4vKiDmoLnmja7luIPlsYDosIPmlbQgdGFyZ2V0IOS7peWPiiBkaXJlY3Rpb24gKi9cbmV4cG9ydCBjb25zdCByZWFkanVzdG1lbnREcm9wVGFyZ2V0ID0gKGRyb3BUYXJnZXQ6IHtcbiAgICB0YXJnZXQ6IE1pbmRFbGVtZW50O1xuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0O1xufSk6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSA9PiB7XG4gICAgY29uc3QgeyB0YXJnZXQsIGRldGVjdFJlc3VsdCB9ID0gZHJvcFRhcmdldDtcbiAgICBjb25zdCBuZXdEcm9wVGFyZ2V0ID0geyB0YXJnZXQsIGRldGVjdFJlc3VsdCB9O1xuICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBpZiAodGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoXG4gICAgICAgICAgICB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luIDogdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpblxuICAgICAgICApO1xuICAgICAgICBpZiAoWydyaWdodCcsICdsZWZ0J10uaW5jbHVkZXMoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTWl4ZWRMYXlvdXQocGFyZW50TGF5b3V0LCBsYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgICAgICAgICAgICAgICAgICAvLyDmoIflh4bluIPlsYDvvIzmoLnoioLngrlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4ucmlnaHROb2RlQ291bnQgYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2c5Li65bem55qE56ys5LiA5Liq6IqC54K5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDkvZzkuLrlj7PnmoTnrKzkuIDkuKroioLngrnmiJbmnIDlkI7kuIDkuKroioLngrlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHROb2RlQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC50YXJnZXQgPSB0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlbltyaWdodE5vZGVDb3VudCAtIDFdLm9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPSAnYm90dG9tJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDnvKnov5vluIPlsYDmjqLmtYvliLDnrKzkuIDkuKrlrZDoioLngrlcbiAgICAgICAgICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQudGFyZ2V0ID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW5bMF0ub3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9IGlzVG9wTGF5b3V0KHBhcmVudExheW91dCkgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3RHJvcFRhcmdldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5LiK5LiL5biD5bGA55qE5qC56IqC54K55Y+q5Y+v5Lul5o6i5rWL5Yiw5LiK5oiW6ICF5LiL77yM5a2Q6IqC54K555qE5bem5Y+z5o6i5rWL5LiN5aSE55CG77yM6Lez6L+H44CCXG4gICAgICAgICAgICAgICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEcm9wVGFyZ2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyDliankuIvmmK/msLTlubPluIPlsYDnmoTpu5jorqTmg4XlhrXvvJrmj5LlhaXmnIDlkI7kuIDkuKrlrZDoioLngrnnmoTkuIvmlrlcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGROb2RlSW5kZXggPSB0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQudGFyZ2V0ID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW5bbGFzdENoaWxkTm9kZUluZGV4XS5vcmlnaW47XG4gICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPSAnYm90dG9tJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g5aSE55CG5bem5Y+z5biD5bGA5LiL55qE5re35ZCI5biD5bGAXG4gICAgICAgICAgICAgICAgaWYgKFtNaW5kTGF5b3V0VHlwZS5sZWZ0LCBNaW5kTGF5b3V0VHlwZS5yaWdodF0uaW5jbHVkZXMocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQudGFyZ2V0ID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW5bMF0ub3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPSBpc1RvcExheW91dChsYXlvdXQpID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEcm9wVGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgICAgIC8vIOe8qei/m+W4g+WxgOenu+WKqOiHs+esrOS4gOS4quiKgueCuVxuICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgJiYgaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC50YXJnZXQgPSB0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlblswXS5vcmlnaW47XG4gICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPSBpc1RvcExheW91dChsYXlvdXQpID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RHJvcFRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOS4iuS4i+W4g+WxgO+8jOaPkuWIsOWPs+i+uVxuICAgICAgICAgICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChcbiAgICAgICAgICAgICAgICB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luIDogdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RDaGlsZE5vZGVJbmRleCA9IHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC50YXJnZXQgPSB0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlbltsYXN0Q2hpbGROb2RlSW5kZXhdLm9yaWdpbjtcbiAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9ICdyaWdodCc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgfVxuICAgIHJldHVybiBkcm9wVGFyZ2V0O1xufTtcbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC10YXJnZXQtY29ycmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvZHJvcC10YXJnZXQtY29ycmVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsY0FBYyxFQUNkLHNCQUFzQixFQUN6QixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELGdDQUFnQztBQUNoQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUNsQyxLQUFpQixFQUNqQixVQUdDLEVBQ2tELEVBQUU7SUFDckQsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFDNUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDL0MsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQXNCLENBQUM7SUFDL0UsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDckUsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyx5QkFBeUIsQ0FDdEQsS0FBSyxFQUNMLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMs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ckMsT0FBTyxhQUFhLENBQUM7YUFDeEI7U0FDSjtRQUNELE9BQU8sYUFBYSxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBpc1N0YW5kYXJkTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LFxuICAgIGlzVG9wTGF5b3V0LFxuICAgIE1pbmRMYXlvdXRUeXBlLFxuICAgIGdldE5vbkFic3RyYWN0Q2hpbGRyZW5cbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0LCBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgaXNNaXhlZExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuLyog5qC55o2u5biD5bGA6LCD5pW0IHRhcmdldCDku6Xlj4ogZGlyZWN0aW9uICovXG5leHBvcnQgY29uc3QgcmVhZGp1c3RtZW50RHJvcFRhcmdldCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkcm9wVGFyZ2V0OiB7XG4gICAgICAgIHRhcmdldDogTWluZEVsZW1lbnQ7XG4gICAgICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0O1xuICAgIH1cbik6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSA9PiB7XG4gICAgY29uc3QgeyB0YXJnZXQsIGRldGVjdFJlc3VsdCB9ID0gZHJvcFRhcmdldDtcbiAgICBjb25zdCBuZXdEcm9wVGFyZ2V0ID0geyB0YXJnZXQsIGRldGVjdFJlc3VsdCB9O1xuICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBpZiAodGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luIDogdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpblxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4odGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICBpZiAoWydyaWdodCcsICdsZWZ0J10uaW5jbHVkZXMoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTWl4ZWRMYXlvdXQocGFyZW50TGF5b3V0LCBsYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICAgICAgLy8g5qCH5YeG5biD5bGA77yM5qC56IqC54K5XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS9nOS4uuW3pueahOesrOS4gOS4quiKgueCuVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEcm9wVGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5L2c5Li65Y+z55qE56ys5LiA5Liq6IqC54K55oiW5pyA5ZCO5LiA5Liq6IqC54K5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0Tm9kZUNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQudGFyZ2V0ID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUuY2hpbGRyZW5bcmlnaHROb2RlQ291bnQgLSAxXS5vcmlnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdEcm9wVGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8g57yp6L+b5biD5bGA5o6i5rWL5Yiw56ys5LiA5Liq5a2Q6IqC54K5XG4gICAgICAgICAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LnRhcmdldCA9IHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuWzBdLm9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPSBpc1RvcExheW91dChwYXJlbnRMYXlvdXQpID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOS4iuS4i+W4g+WxgOeahOagueiKgueCueWPquWPr+S7peaOoua1i+WIsOS4iuaIluiAheS4i++8jOWtkOiKgueCueeahOW3puWPs+aOoua1i+S4jeWkhOeQhu+8jOi3s+i/h+OAglxuICAgICAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3RHJvcFRhcmdldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5Ymp5LiL5piv5rC05bmz5biD5bGA55qE6buY6K6k5oOF5Ya177ya5o+S5YWl5pyA5ZCO5LiA5Liq5a2Q6IqC54K555qE5LiL5pa5XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdENoaWxkTm9kZUluZGV4ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LnRhcmdldCA9IHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuW2xhc3RDaGlsZE5vZGVJbmRleF0ub3JpZ2luO1xuICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWkhOeQhuW3puWPs+W4g+WxgOS4i+eahOa3t+WQiOW4g+WxgFxuICAgICAgICAgICAgICAgIGlmIChbTWluZExheW91dFR5cGUubGVmdCwgTWluZExheW91dFR5cGUucmlnaHRdLmluY2x1ZGVzKHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RHJvcFRhcmdldC50YXJnZXQgPSB0YXJnZXRDb21wb25lbnQubm9kZS5jaGlsZHJlblswXS5vcmlnaW47XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9IGlzVG9wTGF5b3V0KGxheW91dCkgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Ryb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KSkge1xuICAgICAgICAgICAgLy8g57yp6L+b5biD5bGA56e75Yqo6Iez56ys5LiA5Liq6IqC54K5XG4gICAgICAgICAgICBpZiAodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCAmJiBpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LnRhcmdldCA9IHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuWzBdLm9yaWdpbjtcbiAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9IGlzVG9wTGF5b3V0KGxheW91dCkgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdEcm9wVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5LiK5LiL5biD5bGA77yM5o+S5Yiw5Y+z6L65XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4gOiB0YXJnZXRDb21wb25lbnQubm9kZS5wYXJlbnQub3JpZ2luXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdENoaWxkTm9kZUluZGV4ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBuZXdEcm9wVGFyZ2V0LnRhcmdldCA9IHRhcmdldENvbXBvbmVudC5ub2RlLmNoaWxkcmVuW2xhc3RDaGlsZE5vZGVJbmRleF0ub3JpZ2luO1xuICAgICAgICAgICAgICAgIG5ld0Ryb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID0gJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RHJvcFRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3RHJvcFRhcmdldDtcbiAgICB9XG4gICAgcmV0dXJuIGRyb3BUYXJnZXQ7XG59O1xuIl19
@@ -102,4 +102,4 @@ export const getLayoutReverseDirection = (layoutDirection) => {
102
102
  export const getRootLayout = (root) => {
103
103
  return root.layout || getDefaultLayout();
104
104
  };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsYUFBK0IsRUFBRSxFQUFFO0lBQzVFLE1BQU0sZ0JBQWdCLEdBQXNCLEVBQUUsQ0FBQztJQUMvQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMzRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQXNCLEVBQUUsRUFBRTtJQUN6RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDckQsT0FBTyxDQUFDLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMs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QUFlLEVBQUU7UUFDckIsS0FBSyxlQUFlLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQzFDLE1BQU07UUFDVixLQUFLLGVBQWUsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDdkMsTUFBTTtRQUNWLEtBQUssZUFBZSxDQUFDLEtBQUs7WUFDdEIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztZQUN4QyxNQUFNO1FBQ1YsS0FBSyxlQUFlLENBQUMsSUFBSTtZQUNyQixnQkFBZ0IsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO1lBQ3pDLE1BQU07S0FDYjtJQUNELE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFO0lBQy9DLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dERpcmVjdGlvbiwgTGF5b3V0RGlyZWN0aW9uc01hcCwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzSW5kZW50ZWRMYXlvdXQsIE1pbmRMYXlvdXRUeXBlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoRGlyZWN0aW9uc0J5TGF5b3V0cyA9IChicmFuY2hMYXlvdXRzOiBNaW5kTGF5b3V0VHlwZVtdKSA9PiB7XG4gICAgY29uc3QgYnJhbmNoRGlyZWN0aW9uczogTGF5b3V0RGlyZWN0aW9uW10gPSBbXTtcbiAgICBicmFuY2hMYXlvdXRzLmZvckVhY2gobCA9PiB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW2xdO1xuICAgICAgICBkaXJlY3Rpb25zLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICBpZiAoIWJyYW5jaERpcmVjdGlvbnMuaW5jbHVkZXMoZCkgJiYgIWJyYW5jaERpcmVjdGlvbnMuaW5jbHVkZXMoZ2V0TGF5b3V0UmV2ZXJzZURpcmVjdGlvbihkKSkpIHtcbiAgICAgICAgICAgICAgICBicmFuY2hEaXJlY3Rpb25zLnB1c2goZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBicmFuY2hEaXJlY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29ycmVjdExheW91dCA9IChyb290OiBNaW5kRWxlbWVudCwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IHJvb3RMYXlvdXQgPSByb290LmxheW91dCB8fCBnZXREZWZhdWx0TGF5b3V0KCk7XG4gICAgcmV0dXJuICFnZXRJbkNvcnJlY3RMYXlvdXREaXJlY3Rpb24ocm9vdExheW91dCwgbGF5b3V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc01peGVkTGF5b3V0ID0gKHBhcmVudExheW91dDogTWluZExheW91dFR5cGUsIGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gKCFpc0luZGVudGVkTGF5b3V0KHBhcmVudExheW91dCkgJiYgaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB8fCAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpICYmICFpc0luZGVudGVkTGF5b3V0KGxheW91dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluQ29ycmVjdExheW91dERpcmVjdGlvbiA9IChyb290TGF5b3V0OiBNaW5kTGF5b3V0VHlwZSwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW3Jvb3RMYXlvdXRdO1xuICAgIGNvbnN0IHN1YkxheW91dERpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW2xheW91dF07XG4gICAgaWYgKCFzdWJMYXlvdXREaXJlY3Rpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBsYXlvdXQ6ICR7bGF5b3V0fSBvbiBjb3JyZWN0IGxheW91dGApO1xuICAgIH1cbiAgICByZXR1cm4gc3ViTGF5b3V0RGlyZWN0aW9ucy5maW5kKGQgPT4gZGlyZWN0aW9ucy5pbmNsdWRlcyhnZXRMYXlvdXRSZXZlcnNlRGlyZWN0aW9uKGQpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ycmVjdExheW91dEJ5RGlyZWN0aW9uID0gKGxheW91dDogTWluZExheW91dFR5cGUsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24ubGVmdCB8fCBkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5yaWdodCA/IHRydWUgOiBmYWxzZTtcbiAgICBsZXQgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkO1xuICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIGNhc2UgTWluZExheW91dFR5cGUubGVmdDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBNaW5kTGF5b3V0VHlwZS5yaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLnJpZ2h0OlxuICAgICAgICAgICAgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IE1pbmRMYXlvdXRUeXBlLmxlZnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBNaW5kTGF5b3V0VHlwZS51cHdhcmQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS51cHdhcmQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gTWluZExheW91dFR5cGUuZG93bndhcmQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5yaWdodEJvdHRvbUluZGVudGVkOlxuICAgICAgICAgICAgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IGlzSG9yaXpvbnRhbCA/IE1pbmRMYXlvdXRUeXBlLmxlZnRCb3R0b21JbmRlbnRlZCA6IE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5sZWZ0Qm90dG9tSW5kZW50ZWQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gaXNIb3Jpem9udGFsID8gTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZCA6IE1pbmRMYXlvdXRUeXBlLmxlZnRUb3BJbmRlbnRlZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gaXNIb3Jpem9udGFsID8gTWluZExheW91dFR5cGUubGVmdFRvcEluZGVudGVkIDogTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLmxlZnRUb3BJbmRlbnRlZDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBpc0hvcml6b250YWwgPyBNaW5kTGF5b3V0VHlwZS5yaWdodFRvcEluZGVudGVkIDogTWluZExheW91dFR5cGUubGVmdEJvdHRvbUluZGVudGVkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExheW91dERpcmVjdGlvbiA9IChyb290OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHJvb3QubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbiAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uc01hcFtsYXlvdXRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRMYXlvdXQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEF2YWlsYWJsZVN1YkxheW91dHNCeUxheW91dERpcmVjdGlvbnMgPSAoZGlyZWN0aW9uczogTGF5b3V0RGlyZWN0aW9uW10pOiBNaW5kTGF5b3V0VHlwZVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IE1pbmRMYXlvdXRUeXBlW10gPSBbXTtcbiAgICBjb25zdCByZXZlcnNlRGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMubWFwKGdldExheW91dFJldmVyc2VEaXJlY3Rpb24pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIE1pbmRMYXlvdXRUeXBlKSB7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IE1pbmRMYXlvdXRUeXBlW2tleSBhcyBrZXlvZiB0eXBlb2YgTWluZExheW91dFR5cGVdO1xuICAgICAgICBjb25zdCBsYXlvdXREaXJlY3Rpb25zID0gTGF5b3V0RGlyZWN0aW9uc01hcFtsYXlvdXRdO1xuICAgICAgICBpZiAobGF5b3V0RGlyZWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZURpcmVjdGlvbiA9IGxheW91dERpcmVjdGlvbnMuc29tZShkID0+IGRpcmVjdGlvbnMuaW5jbHVkZXMoZCkpO1xuICAgICAgICAgICAgY29uc3QgaGFzUmV2ZXJzZURpcmVjdGlvbiA9IGxheW91dERpcmVjdGlvbnMuc29tZShyID0+IHJldmVyc2VEaXJlY3Rpb25zLmluY2x1ZGVzKHIpKTtcbiAgICAgICAgICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uICYmICFoYXNSZXZlcnNlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGF5b3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExheW91dFJldmVyc2VEaXJlY3Rpb24gPSAobGF5b3V0RGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24pID0+IHtcbiAgICBsZXQgcmV2ZXJzZURpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICBzd2l0Y2ggKGxheW91dERpcmVjdGlvbikge1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi50b3A6XG4gICAgICAgICAgICByZXZlcnNlRGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5ib3R0b206XG4gICAgICAgICAgICByZXZlcnNlRGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnRvcDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5yaWdodDpcbiAgICAgICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5sZWZ0OlxuICAgICAgICAgICAgcmV2ZXJzZURpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmV2ZXJzZURpcmVjdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSb290TGF5b3V0ID0gKHJvb3Q6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIHJvb3QubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbn07XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLGFBQStCLEVBQUUsRUFBRTtJQUM1RSxNQUFNLGdCQUFnQixHQUFzQixFQUFFLENBQUM7SUFDL0MsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QixNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBaUIsRUFBRSxNQUFzQixFQUFFLEVBQUU7SUFDekUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3JELE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFD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ZUFBZSxFQUFFO1FBQ3JCLEtBQUssZUFBZSxDQUFDLEdBQUc7WUFDcEIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUMxQyxNQUFNO1FBQ1YsS0FBSyxlQUFlLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLE1BQU07UUFDVixLQUFLLGVBQWUsQ0FBQyxLQUFLO1lBQ3RCLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEMsTUFBTTtRQUNWLEtBQUssZUFBZSxDQUFDLElBQUk7WUFDckIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUN6QyxNQUFNO0tBQ2I7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBRTtJQUMvQyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUM3QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXREaXJlY3Rpb24sIExheW91dERpcmVjdGlvbnNNYXAsIE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzSW5kZW50ZWRMYXlvdXQsIE1pbmRMYXlvdXRUeXBlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoRGlyZWN0aW9uc0J5TGF5b3V0cyA9IChicmFuY2hMYXlvdXRzOiBNaW5kTGF5b3V0VHlwZVtdKSA9PiB7XG4gICAgY29uc3QgYnJhbmNoRGlyZWN0aW9uczogTGF5b3V0RGlyZWN0aW9uW10gPSBbXTtcbiAgICBicmFuY2hMYXlvdXRzLmZvckVhY2gobCA9PiB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW2xdO1xuICAgICAgICBkaXJlY3Rpb25zLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICBpZiAoIWJyYW5jaERpcmVjdGlvbnMuaW5jbHVkZXMoZCkgJiYgIWJyYW5jaERpcmVjdGlvbnMuaW5jbHVkZXMoZ2V0TGF5b3V0UmV2ZXJzZURpcmVjdGlvbihkKSkpIHtcbiAgICAgICAgICAgICAgICBicmFuY2hEaXJlY3Rpb25zLnB1c2goZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBicmFuY2hEaXJlY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29ycmVjdExheW91dCA9IChyb290OiBNaW5kRWxlbWVudCwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IHJvb3RMYXlvdXQgPSByb290LmxheW91dCB8fCBnZXREZWZhdWx0TGF5b3V0KCk7XG4gICAgcmV0dXJuICFnZXRJbkNvcnJlY3RMYXlvdXREaXJlY3Rpb24ocm9vdExheW91dCwgbGF5b3V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc01peGVkTGF5b3V0ID0gKHBhcmVudExheW91dDogTWluZExheW91dFR5cGUsIGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gKCFpc0luZGVudGVkTGF5b3V0KHBhcmVudExheW91dCkgJiYgaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB8fCAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpICYmICFpc0luZGVudGVkTGF5b3V0KGxheW91dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluQ29ycmVjdExheW91dERpcmVjdGlvbiA9IChyb290TGF5b3V0OiBNaW5kTGF5b3V0VHlwZSwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW3Jvb3RMYXlvdXRdO1xuICAgIGNvbnN0IHN1YkxheW91dERpcmVjdGlvbnMgPSBMYXlvdXREaXJlY3Rpb25zTWFwW2xheW91dF07XG4gICAgaWYgKCFzdWJMYXlvdXREaXJlY3Rpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBsYXlvdXQ6ICR7bGF5b3V0fSBvbiBjb3JyZWN0IGxheW91dGApO1xuICAgIH1cbiAgICByZXR1cm4gc3ViTGF5b3V0RGlyZWN0aW9ucy5maW5kKGQgPT4gZGlyZWN0aW9ucy5pbmNsdWRlcyhnZXRMYXlvdXRSZXZlcnNlRGlyZWN0aW9uKGQpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29ycmVjdExheW91dEJ5RGlyZWN0aW9uID0gKGxheW91dDogTWluZExheW91dFR5cGUsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24ubGVmdCB8fCBkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5yaWdodCA/IHRydWUgOiBmYWxzZTtcbiAgICBsZXQgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkO1xuICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIGNhc2UgTWluZExheW91dFR5cGUubGVmdDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBNaW5kTGF5b3V0VHlwZS5yaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLnJpZ2h0OlxuICAgICAgICAgICAgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IE1pbmRMYXlvdXRUeXBlLmxlZnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBNaW5kTGF5b3V0VHlwZS51cHdhcmQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS51cHdhcmQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gTWluZExheW91dFR5cGUuZG93bndhcmQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5yaWdodEJvdHRvbUluZGVudGVkOlxuICAgICAgICAgICAgaW52ZXJzZURpcmVjdGlvbkxheW91dCA9IGlzSG9yaXpvbnRhbCA/IE1pbmRMYXlvdXRUeXBlLmxlZnRCb3R0b21JbmRlbnRlZCA6IE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNaW5kTGF5b3V0VHlwZS5sZWZ0Qm90dG9tSW5kZW50ZWQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gaXNIb3Jpem9udGFsID8gTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZCA6IE1pbmRMYXlvdXRUeXBlLmxlZnRUb3BJbmRlbnRlZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQ6XG4gICAgICAgICAgICBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0ID0gaXNIb3Jpem9udGFsID8gTWluZExheW91dFR5cGUubGVmdFRvcEluZGVudGVkIDogTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1pbmRMYXlvdXRUeXBlLmxlZnRUb3BJbmRlbnRlZDpcbiAgICAgICAgICAgIGludmVyc2VEaXJlY3Rpb25MYXlvdXQgPSBpc0hvcml6b250YWwgPyBNaW5kTGF5b3V0VHlwZS5yaWdodFRvcEluZGVudGVkIDogTWluZExheW91dFR5cGUubGVmdEJvdHRvbUluZGVudGVkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBpbnZlcnNlRGlyZWN0aW9uTGF5b3V0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExheW91dERpcmVjdGlvbiA9IChyb290OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHJvb3QubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbiAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uc01hcFtsYXlvdXRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRMYXlvdXQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEF2YWlsYWJsZVN1YkxheW91dHNCeUxheW91dERpcmVjdGlvbnMgPSAoZGlyZWN0aW9uczogTGF5b3V0RGlyZWN0aW9uW10pOiBNaW5kTGF5b3V0VHlwZVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IE1pbmRMYXlvdXRUeXBlW10gPSBbXTtcbiAgICBjb25zdCByZXZlcnNlRGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMubWFwKGdldExheW91dFJldmVyc2VEaXJlY3Rpb24pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIE1pbmRMYXlvdXRUeXBlKSB7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IE1pbmRMYXlvdXRUeXBlW2tleSBhcyBrZXlvZiB0eXBlb2YgTWluZExheW91dFR5cGVdO1xuICAgICAgICBjb25zdCBsYXlvdXREaXJlY3Rpb25zID0gTGF5b3V0RGlyZWN0aW9uc01hcFtsYXlvdXRdO1xuICAgICAgICBpZiAobGF5b3V0RGlyZWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZURpcmVjdGlvbiA9IGxheW91dERpcmVjdGlvbnMuc29tZShkID0+IGRpcmVjdGlvbnMuaW5jbHVkZXMoZCkpO1xuICAgICAgICAgICAgY29uc3QgaGFzUmV2ZXJzZURpcmVjdGlvbiA9IGxheW91dERpcmVjdGlvbnMuc29tZShyID0+IHJldmVyc2VEaXJlY3Rpb25zLmluY2x1ZGVzKHIpKTtcbiAgICAgICAgICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uICYmICFoYXNSZXZlcnNlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGF5b3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExheW91dFJldmVyc2VEaXJlY3Rpb24gPSAobGF5b3V0RGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24pID0+IHtcbiAgICBsZXQgcmV2ZXJzZURpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICBzd2l0Y2ggKGxheW91dERpcmVjdGlvbikge1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi50b3A6XG4gICAgICAgICAgICByZXZlcnNlRGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5ib3R0b206XG4gICAgICAgICAgICByZXZlcnNlRGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnRvcDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5yaWdodDpcbiAgICAgICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExheW91dERpcmVjdGlvbi5sZWZ0OlxuICAgICAgICAgICAgcmV2ZXJzZURpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmV2ZXJzZURpcmVjdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSb290TGF5b3V0ID0gKHJvb3Q6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIHJvb3QubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbn07XG4iXX0=