@plait/common 0.64.4 → 0.64.6

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.
@@ -16,7 +16,7 @@ export class TextManage {
16
16
  this.options.onChange && this.options.onChange({ ...data });
17
17
  MERGING.set(this.board, true);
18
18
  }, 0);
19
- this.getSize = (element) => {
19
+ this.getSize = (element, maxWidth) => {
20
20
  const computedStyle = window.getComputedStyle(this.foreignObject.children[0]);
21
21
  const fontFamily = computedStyle.fontFamily;
22
22
  const fontSize = parseFloat(computedStyle.fontSize);
@@ -24,7 +24,7 @@ export class TextManage {
24
24
  return measureElement(target, {
25
25
  fontSize: fontSize,
26
26
  fontFamily
27
- }, this.options.getMaxWidth());
27
+ }, maxWidth || this.options.getMaxWidth());
28
28
  };
29
29
  this.getText = () => {
30
30
  return this.editor.children[0];
@@ -45,8 +45,14 @@ export class TextManage {
45
45
  textPlugins: this.options.textPlugins,
46
46
  onChange: (data) => {
47
47
  if (data.operations.some(op => !Operation.isSelectionOperation(op))) {
48
- const { width, height } = this.getSize();
49
- this.textChange({ ...data, width, height });
48
+ const { width: newWidth, height: newHeight } = this.getSize();
49
+ this.textChange({ ...data, width: newWidth, height: newHeight });
50
+ const { x, y, width, height } = this.options.getRectangle();
51
+ // update immediately width and height otherwise cursor come up shaking(in drawnix)
52
+ // in flowchart case width and height may greater than the calculational width and height
53
+ const temporaryWidth = newWidth > width ? newWidth : width;
54
+ const temporaryHeight = newHeight > height ? newHeight : height;
55
+ updateForeignObject(this.g, temporaryWidth, temporaryHeight, x, y);
50
56
  }
51
57
  },
52
58
  afterInit: (editor) => {
@@ -115,23 +121,28 @@ export class TextManage {
115
121
  }
116
122
  });
117
123
  const exitCallback = () => {
118
- this.updateRectangle();
119
- mousedown$.unsubscribe();
120
- keydown$.unsubscribe();
121
- IS_TEXT_EDITABLE.set(this.board, false);
122
- MERGING.set(this.board, false);
123
- callback && callback();
124
- const props = {
125
- readonly: true
126
- };
127
- this.textComponentRef.update(props);
128
- this.isEditing = false;
124
+ if (this.isEditing) {
125
+ this.updateRectangle();
126
+ mousedown$.unsubscribe();
127
+ keydown$.unsubscribe();
128
+ IS_TEXT_EDITABLE.set(this.board, false);
129
+ MERGING.set(this.board, false);
130
+ callback && callback();
131
+ const props = {
132
+ readonly: true
133
+ };
134
+ this.textComponentRef.update(props);
135
+ this.isEditing = false;
136
+ this.exitCallback = undefined;
137
+ }
129
138
  };
139
+ this.exitCallback = exitCallback;
130
140
  return exitCallback;
131
141
  }
132
142
  destroy() {
133
143
  this.g?.remove();
134
144
  this.textComponentRef?.destroy();
145
+ this.exitCallback && this.exitCallback();
135
146
  }
136
147
  }
137
148
  export const buildCompositionData = (editor, data) => {
@@ -147,4 +158,4 @@ export const buildCompositionData = (editor, data) => {
147
158
  }
148
159
  return null;
149
160
  };
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvdGV4dC1tYW5hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixPQUFPLEVBR1AsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDM0IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVVoRCxNQUFNLE9BQU8sVUFBVTtJQXFCbkIsWUFDWSxLQUFpQixFQUNqQixPQU1QO1FBUE8sVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQU1kO1FBNUJMLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsd0ZBQXdGO1FBQ3hGLGtIQUFrSDtRQUNsSCxlQUFVLEdBQUcsUUFBUSxDQUF1QixDQUFDLElBQTJCLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1IsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBdUhOLFlBQU8sR0FBRyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUM1QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQzVDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBYSxDQUFDO1lBQy9ELE9BQU8sY0FBYyxDQUNqQixNQUFNLEVBQ047Z0JBQ0ksUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFVBQVU7YUFDYixFQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBWSxFQUFFLENBQzlCLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRixZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUE1SEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQWE7UUFDZCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBYztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSTtZQUNKLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDckMsUUFBUSxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNsRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUNELFNBQVMsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN6QixDQUFDO1lBQ0QsYUFBYSxFQUFFLENBQUMsS0FBdUIsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbEMsT0FBTztnQkFDWCxDQUFDO2dCQUNELE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNYLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCw2REFBNkQ7b0JBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBSyxJQUFJLENBQUMsS0FBb0MsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBYTtRQUM5Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsV0FBa0IsRUFBRSxRQUFnQixDQUFDO1FBQzdDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQTJCO1FBQ3ZDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZ0I7UUFDdkIsTUFBTSxLQUFLLEdBQUc7WUFDVixJQUFJLEVBQUUsT0FBTztTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQXFCLEVBQUUsUUFBb0M7UUFDNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQXVCO1lBQzlCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFhLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDNUYsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEgsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RyxNQUFNLFVBQVUsR0FBSSxLQUFLLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzlCLHNFQUFzRTtnQkFDdEUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3BCLFlBQVksRUFBRSxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBZ0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM5RixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEIsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN4QixZQUFZLEVBQUUsQ0FBQztnQkFDZixPQUFPO1lBQ1gsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQixRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLEdBQUc7Z0JBQ1YsUUFBUSxFQUFFLElBQUk7YUFDakIsQ0FBQztZQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQXFCRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDakUsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFvQixDQUFDO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQVMsQ0FBQztRQUN4RCxjQUFjLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgY3JlYXRlRm9yZWlnbk9iamVjdCxcbiAgICBjcmVhdGVHLFxuICAgIGRlYm91bmNlLFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludCxcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0LFxuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3RXaWR0aFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGVFbnRyeSwgUmFuZ2UsIFRleHQsIE5vZGUsIFRyYW5zZm9ybXMsIE9wZXJhdGlvbiB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFBsYWl0VGV4dEJvYXJkLCBUZXh0UGx1Z2luIH0gZnJvbSAnLi93aXRoLXRleHQnO1xuaW1wb3J0IHsgbWVhc3VyZUVsZW1lbnQgfSBmcm9tICcuL3RleHQtbWVhc3VyZSc7XG5pbXBvcnQgeyBUZXh0Q2hhbmdlRGF0YSwgVGV4dENvbXBvbmVudFJlZiwgVGV4dFByb3BzIH0gZnJvbSAnLi93aXRoLXRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRNYW5hZ2VDaGFuZ2VEYXRhIHtcbiAgICBuZXdUZXh0PzogRWxlbWVudDtcbiAgICBvcGVyYXRpb25zPzogT3BlcmF0aW9uW107XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRleHRNYW5hZ2Uge1xuICAgIGlzRWRpdGluZyA9IGZhbHNlO1xuXG4gICAgZWRpdG9yITogRWRpdG9yO1xuXG4gICAgZyE6IFNWR0dFbGVtZW50O1xuXG4gICAgZm9yZWlnbk9iamVjdCE6IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50O1xuXG4gICAgdGV4dENvbXBvbmVudFJlZiE6IFRleHRDb21wb25lbnRSZWY7XG5cbiAgICAvLyBhZGQgZGVib3VuY2UgZm9yIGNvbXBvc2l0aW9uIGlucHV0IGVuZCBhbmQgYWJhbmRvbiBiZWZvcmUgY2hhbmdlIGluIHNldFRpbWVvdXQgcGVyaW9kXG4gICAgLy8gYmUgZ29pbmcgdG8gYXR0cmFjdCBib2FyZCBjaGlsZHJlbiBhcmUgb3ZlcndyaXR0ZW4gd2hlbiBmaXJlZCBtb3JlIHRpbWVzIG9uQ2hhbmdlKGVnOiBib2FyZCBpcyBlbWJlZCBpbiBlZGl0b3IpXG4gICAgdGV4dENoYW5nZSA9IGRlYm91bmNlPFRleHRNYW5hZ2VDaGFuZ2VEYXRhPigoZGF0YT86IFRleHRNYW5hZ2VDaGFuZ2VEYXRhKSA9PiB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9ucy5vbkNoYW5nZSAmJiB0aGlzLm9wdGlvbnMub25DaGFuZ2UoeyAuLi5kYXRhIH0pO1xuICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICB9LCAwKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgICAgICBwcml2YXRlIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKCkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICAgICAgb25DaGFuZ2U/OiAoZGF0YTogVGV4dE1hbmFnZUNoYW5nZURhdGEpID0+IHZvaWQ7XG4gICAgICAgICAgICBnZXRSZW5kZXJSZWN0YW5nbGU/OiAoKSA9PiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICBnZXRNYXhXaWR0aD86ICgpID0+IG51bWJlcjtcbiAgICAgICAgICAgIHRleHRQbHVnaW5zPzogVGV4dFBsdWdpbltdO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmdldE1heFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0TWF4V2lkdGggPSAoKSA9PiA5OTk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3KHRleHQ6IEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgX3JlY3RhbmdsZSA9IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3QgPSBjcmVhdGVGb3JlaWduT2JqZWN0KF9yZWN0YW5nbGUueCwgX3JlY3RhbmdsZS55LCBfcmVjdGFuZ2xlLndpZHRoLCBfcmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5mb3JlaWduT2JqZWN0KTtcbiAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ3RleHQnKTtcbiAgICAgICAgY29uc3QgcHJvcHM6IFRleHRQcm9wcyA9IHtcbiAgICAgICAgICAgIGJvYXJkOiB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIHRleHRQbHVnaW5zOiB0aGlzLm9wdGlvbnMudGV4dFBsdWdpbnMsXG4gICAgICAgICAgICBvbkNoYW5nZTogKGRhdGE6IFRleHRDaGFuZ2VEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEub3BlcmF0aW9ucy5zb21lKG9wID0+ICFPcGVyYXRpb24uaXNTZWxlY3Rpb25PcGVyYXRpb24ob3ApKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDaGFuZ2UoeyAuLi5kYXRhLCB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckluaXQ6IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb246IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnY29tcG9zaXRpb25lbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmFrZVJvb3QgPSBidWlsZENvbXBvc2l0aW9uRGF0YSh0aGlzLmVkaXRvciwgZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKGZha2VSb290KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVEYXRhID0gdGhpcy5nZXRTaXplKGZha2VSb290LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW52b2tpbmcgb25DaGFuZ2UgYXNhcCB0byBhdm9pZCBibGlua2luZyBvbiB0eXBpbmcgY2hpbmVzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25DaGFuZ2UgJiYgdGhpcy5vcHRpb25zLm9uQ2hhbmdlKHsgLi4uc2l6ZURhdGEgfSk7XG4gICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmID0gKCh0aGlzLmJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0VGV4dEJvYXJkKS5yZW5kZXJUZXh0KHRoaXMuZm9yZWlnbk9iamVjdCwgcHJvcHMpO1xuICAgIH1cblxuICAgIHVwZGF0ZVJlY3RhbmdsZVdpZHRoKHdpZHRoOiBudW1iZXIpIHtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdFdpZHRoKHRoaXMuZywgd2lkdGgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFuZ2xlKGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU6IG51bWJlciA9IDApIHtcbiAgICAgICAgc2V0QW5nbGVGb3JHKHRoaXMuZywgY2VudGVyUG9pbnQsIGFuZ2xlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSZWN0YW5nbGUocmVjdGFuZ2xlPzogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlIHx8IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdCh0aGlzLmcsIHdpZHRoLCBoZWlnaHQsIHgsIHkpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRleHQobmV3VGV4dDogRWxlbWVudCkge1xuICAgICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgICAgIHRleHQ6IG5ld1RleHRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmLnVwZGF0ZShwcm9wcyk7XG4gICAgfVxuXG4gICAgZWRpdChjYWxsYmFjaz86ICgpID0+IHZvaWQsIGV4aXRFZGl0PzogKGV2ZW50OiBFdmVudCkgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRWRpdGluZyA9IHRydWU7XG4gICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICBjb25zdCBwcm9wczogUGFydGlhbDxUZXh0UHJvcHM+ID0ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgWzBdKTtcbiAgICAgICAgY29uc3QgbW91c2Vkb3duJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGhpcy5ib2FyZCwgdG9Ib3N0UG9pbnQodGhpcy5ib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgdGV4dFJlYyA9IHRoaXMub3B0aW9ucy5nZXRSZW5kZXJSZWN0YW5nbGUgPyB0aGlzLm9wdGlvbnMuZ2V0UmVuZGVyUmVjdGFuZ2xlKCkgOiB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICBjb25zdCBjbGlja0luVGV4dCA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pLCB0ZXh0UmVjKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcucGxhaXQtYm9hcmQtYXR0YWNoZWQnKTtcbiAgICAgICAgICAgIGlmICghY2xpY2tJblRleHQgJiYgIWlzQXR0YWNoZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY29tcG9zaXRpb24gaW5wdXQgc3RhdGUsIGxpa2U6IENoaW5lc2UgSU1FIENvbXBvc2l0aW9uIElucHV0XG4gICAgICAgICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXhpdENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBrZXlkb3duJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdUYWInIHx8IChleGl0RWRpdCA/IGV4aXRFZGl0KGV2ZW50KSA6IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZXhpdENhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgIG1vdXNlZG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGtleWRvd24kLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBJU19URVhUX0VESVRBQkxFLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWYudXBkYXRlKHByb3BzKTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBleGl0Q2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZ2V0U2l6ZSA9IChlbGVtZW50PzogRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5mb3JlaWduT2JqZWN0LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgY29uc3QgZm9udEZhbWlseSA9IGNvbXB1dGVkU3R5bGUuZm9udEZhbWlseTtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuZm9udFNpemUpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50IHx8ICh0aGlzLmVkaXRvci5jaGlsZHJlblswXSBhcyBFbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVFbGVtZW50KFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZSxcbiAgICAgICAgICAgICAgICBmb250RmFtaWx5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdldE1heFdpZHRoISgpXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIGdldFRleHQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5jaGlsZHJlblswXTtcbiAgICB9O1xuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5nPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmPy5kZXN0cm95KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRDb21wb3NpdGlvbkRhdGEgPSAoZWRpdG9yOiBFZGl0b3IsIGRhdGE6IHN0cmluZykgPT4ge1xuICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uICYmIFJhbmdlLmlzQ29sbGFwc2VkKGVkaXRvci5zZWxlY3Rpb24pKSB7XG4gICAgICAgIGNvbnN0IFt0ZXh0Tm9kZSwgdGV4dFBhdGhdID0gRWRpdG9yLm5vZGUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKSBhcyBOb2RlRW50cnk8VGV4dD47XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldDtcbiAgICAgICAgY29uc3QgY2xvbmVkRWxlbWVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRpdG9yLmNoaWxkcmVuWzBdKSk7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB7IGNoaWxkcmVuOiBbY2xvbmVkRWxlbWVudF0gfTtcbiAgICAgICAgY29uc3QgbmV3VGV4dFN0cmluZyA9IHRleHROb2RlLnRleHQuc2xpY2UoMCwgb2Zmc2V0ICsgMSkgKyBkYXRhICsgdGV4dE5vZGUudGV4dC5zbGljZShvZmZzZXQgKyAxKTtcbiAgICAgICAgY29uc3QgY2xvbmVkVGV4dE5vZGUgPSBOb2RlLmdldChyb290LCB0ZXh0UGF0aCkgYXMgVGV4dDtcbiAgICAgICAgY2xvbmVkVGV4dE5vZGUudGV4dCA9IG5ld1RleHRTdHJpbmc7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvdGV4dC1tYW5hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixPQUFPLEVBR1AsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDM0IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVVoRCxNQUFNLE9BQU8sVUFBVTtJQXVCbkIsWUFDWSxLQUFpQixFQUNqQixPQU1QO1FBUE8sVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQU1kO1FBOUJMLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsd0ZBQXdGO1FBQ3hGLGtIQUFrSDtRQUNsSCxlQUFVLEdBQUcsUUFBUSxDQUF1QixDQUFDLElBQTJCLEVBQUUsRUFBRTtZQUN4RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1IsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxFQUFFLENBQUMs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RUFBRTtJQUNqRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQW9CLENBQUM7UUFDdEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBUyxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgTUVSR0lORyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBjcmVhdGVGb3JlaWduT2JqZWN0LFxuICAgIGNyZWF0ZUcsXG4gICAgZGVib3VuY2UsXG4gICAgc2V0QW5nbGVGb3JHLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50LFxuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QsXG4gICAgdXBkYXRlRm9yZWlnbk9iamVjdFdpZHRoXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgTm9kZUVudHJ5LCBSYW5nZSwgVGV4dCwgTm9kZSwgVHJhbnNmb3JtcywgT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgUGxhaXRUZXh0Qm9hcmQsIFRleHRQbHVnaW4gfSBmcm9tICcuL3dpdGgtdGV4dCc7XG5pbXBvcnQgeyBtZWFzdXJlRWxlbWVudCB9IGZyb20gJy4vdGV4dC1tZWFzdXJlJztcbmltcG9ydCB7IFRleHRDaGFuZ2VEYXRhLCBUZXh0Q29tcG9uZW50UmVmLCBUZXh0UHJvcHMgfSBmcm9tICcuL3dpdGgtdGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dE1hbmFnZUNoYW5nZURhdGEge1xuICAgIG5ld1RleHQ/OiBFbGVtZW50O1xuICAgIG9wZXJhdGlvbnM/OiBPcGVyYXRpb25bXTtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVGV4dE1hbmFnZSB7XG4gICAgaXNFZGl0aW5nID0gZmFsc2U7XG5cbiAgICBlZGl0b3IhOiBFZGl0b3I7XG5cbiAgICBnITogU1ZHR0VsZW1lbnQ7XG5cbiAgICBmb3JlaWduT2JqZWN0ITogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7XG5cbiAgICB0ZXh0Q29tcG9uZW50UmVmITogVGV4dENvbXBvbmVudFJlZjtcblxuICAgIC8vIGFkZCBkZWJvdW5jZSBmb3IgY29tcG9zaXRpb24gaW5wdXQgZW5kIGFuZCBhYmFuZG9uIGJlZm9yZSBjaGFuZ2UgaW4gc2V0VGltZW91dCBwZXJpb2RcbiAgICAvLyBiZSBnb2luZyB0byBhdHRyYWN0IGJvYXJkIGNoaWxkcmVuIGFyZSBvdmVyd3JpdHRlbiB3aGVuIGZpcmVkIG1vcmUgdGltZXMgb25DaGFuZ2UoZWc6IGJvYXJkIGlzIGVtYmVkIGluIGVkaXRvcilcbiAgICB0ZXh0Q2hhbmdlID0gZGVib3VuY2U8VGV4dE1hbmFnZUNoYW5nZURhdGE+KChkYXRhPzogVGV4dE1hbmFnZUNoYW5nZURhdGEpID0+IHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zLm9uQ2hhbmdlICYmIHRoaXMub3B0aW9ucy5vbkNoYW5nZSh7IC4uLmRhdGEgfSk7XG4gICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgIH0sIDApO1xuXG4gICAgZXhpdENhbGxiYWNrPzogKCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgICAgICBwcml2YXRlIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKCkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICAgICAgb25DaGFuZ2U/OiAoZGF0YTogVGV4dE1hbmFnZUNoYW5nZURhdGEpID0+IHZvaWQ7XG4gICAgICAgICAgICBnZXRSZW5kZXJSZWN0YW5nbGU/OiAoKSA9PiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICBnZXRNYXhXaWR0aD86ICgpID0+IG51bWJlcjtcbiAgICAgICAgICAgIHRleHRQbHVnaW5zPzogVGV4dFBsdWdpbltdO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmdldE1heFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0TWF4V2lkdGggPSAoKSA9PiA5OTk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3KHRleHQ6IEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgX3JlY3RhbmdsZSA9IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3QgPSBjcmVhdGVGb3JlaWduT2JqZWN0KF9yZWN0YW5nbGUueCwgX3JlY3RhbmdsZS55LCBfcmVjdGFuZ2xlLndpZHRoLCBfcmVjdGFuZ2xlLmhlaWdodCk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5mb3JlaWduT2JqZWN0KTtcbiAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ3RleHQnKTtcbiAgICAgICAgY29uc3QgcHJvcHM6IFRleHRQcm9wcyA9IHtcbiAgICAgICAgICAgIGJvYXJkOiB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIHRleHRQbHVnaW5zOiB0aGlzLm9wdGlvbnMudGV4dFBsdWdpbnMsXG4gICAgICAgICAgICBvbkNoYW5nZTogKGRhdGE6IFRleHRDaGFuZ2VEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEub3BlcmF0aW9ucy5zb21lKG9wID0+ICFPcGVyYXRpb24uaXNTZWxlY3Rpb25PcGVyYXRpb24ob3ApKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoOiBuZXdXaWR0aCwgaGVpZ2h0OiBuZXdIZWlnaHQgfSA9IHRoaXMuZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDaGFuZ2UoeyAuLi5kYXRhLCB3aWR0aDogbmV3V2lkdGgsIGhlaWdodDogbmV3SGVpZ2h0IH0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGltbWVkaWF0ZWx5IHdpZHRoIGFuZCBoZWlnaHQgb3RoZXJ3aXNlIGN1cnNvciBjb21lIHVwIHNoYWtpbmcoaW4gZHJhd25peClcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gZmxvd2NoYXJ0IGNhc2Ugd2lkdGggYW5kIGhlaWdodCBtYXkgZ3JlYXRlciB0aGFuIHRoZSBjYWxjdWxhdGlvbmFsIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5V2lkdGggPSBuZXdXaWR0aCA+IHdpZHRoID8gbmV3V2lkdGggOiB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5SGVpZ2h0ID0gbmV3SGVpZ2h0ID4gaGVpZ2h0ID8gbmV3SGVpZ2h0IDogaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KHRoaXMuZywgdGVtcG9yYXJ5V2lkdGgsIHRlbXBvcmFyeUhlaWdodCwgeCwgeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVySW5pdDogKGVkaXRvcjogRWRpdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Db21wb3NpdGlvbjogKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wb3NpdGlvbmVuZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlUm9vdCA9IGJ1aWxkQ29tcG9zaXRpb25EYXRhKHRoaXMuZWRpdG9yLCBldmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoZmFrZVJvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZURhdGEgPSB0aGlzLmdldFNpemUoZmFrZVJvb3QuY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBpbnZva2luZyBvbkNoYW5nZSBhc2FwIHRvIGF2b2lkIGJsaW5raW5nIG9uIHR5cGluZyBjaGluZXNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkNoYW5nZSAmJiB0aGlzLm9wdGlvbnMub25DaGFuZ2UoeyAuLi5zaXplRGF0YSB9KTtcbiAgICAgICAgICAgICAgICAgICAgTUVSR0lORy5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWYgPSAoKHRoaXMuYm9hcmQgYXMgdW5rbm93bikgYXMgUGxhaXRUZXh0Qm9hcmQpLnJlbmRlclRleHQodGhpcy5mb3JlaWduT2JqZWN0LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlUmVjdGFuZ2xlV2lkdGgod2lkdGg6IG51bWJlcikge1xuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0V2lkdGgodGhpcy5nLCB3aWR0aCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQW5nbGUoY2VudGVyUG9pbnQ6IFBvaW50LCBhbmdsZTogbnVtYmVyID0gMCkge1xuICAgICAgICBzZXRBbmdsZUZvckcodGhpcy5nLCBjZW50ZXJQb2ludCwgYW5nbGUpO1xuICAgIH1cblxuICAgIHVwZGF0ZVJlY3RhbmdsZShyZWN0YW5nbGU/OiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSByZWN0YW5nbGUgfHwgdGhpcy5vcHRpb25zLmdldFJlY3RhbmdsZSgpO1xuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KHRoaXMuZywgd2lkdGgsIGhlaWdodCwgeCwgeSk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGV4dChuZXdUZXh0OiBFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgdGV4dDogbmV3VGV4dFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWYudXBkYXRlKHByb3BzKTtcbiAgICB9XG5cbiAgICBlZGl0KGNhbGxiYWNrPzogKCkgPT4gdm9pZCwgZXhpdEVkaXQ/OiAoZXZlbnQ6IEV2ZW50KSA9PiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgSVNfVEVYVF9FRElUQUJMRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByb3BzOiBQYXJ0aWFsPFRleHRQcm9wcz4gPSB7XG4gICAgICAgICAgICByZWFkb25seTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmLnVwZGF0ZShwcm9wcyk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbMF0pO1xuICAgICAgICBjb25zdCBtb3VzZWRvd24kID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludCh0aGlzLmJvYXJkLCB0b0hvc3RQb2ludCh0aGlzLmJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCB0ZXh0UmVjID0gdGhpcy5vcHRpb25zLmdldFJlbmRlclJlY3RhbmdsZSA/IHRoaXMub3B0aW9ucy5nZXRSZW5kZXJSZWN0YW5nbGUoKSA6IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrSW5UZXh0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSksIHRleHRSZWMpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wbGFpdC1ib2FyZC1hdHRhY2hlZCcpO1xuICAgICAgICAgICAgaWYgKCFjbGlja0luVGV4dCAmJiAhaXNBdHRhY2hlZCkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjb21wb3NpdGlvbiBpbnB1dCBzdGF0ZSwgbGlrZTogQ2hpbmVzZSBJTUUgQ29tcG9zaXRpb24gSW5wdXRcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBleGl0Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGtleWRvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnIHx8IGV2ZW50LmtleSA9PT0gJ1RhYicgfHwgKGV4aXRFZGl0ID8gZXhpdEVkaXQoZXZlbnQpIDogZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBleGl0Q2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgIG1vdXNlZG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICBrZXlkb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5leGl0Q2FsbGJhY2sgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZXhpdENhbGxiYWNrID0gZXhpdENhbGxiYWNrO1xuICAgICAgICByZXR1cm4gZXhpdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGdldFNpemUgPSAoZWxlbWVudD86IEVsZW1lbnQsIG1heFdpZHRoPzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW5bMF0pO1xuICAgICAgICBjb25zdCBmb250RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5mb250RmFtaWx5O1xuICAgICAgICBjb25zdCBmb250U2l6ZSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5mb250U2l6ZSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnQgfHwgKHRoaXMuZWRpdG9yLmNoaWxkcmVuWzBdIGFzIEVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbWVhc3VyZUVsZW1lbnQoXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGZvbnRGYW1pbHlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXhXaWR0aCB8fCB0aGlzLm9wdGlvbnMuZ2V0TWF4V2lkdGghKClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgZ2V0VGV4dCA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNoaWxkcmVuWzBdO1xuICAgIH07XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmc/LnJlbW92ZSgpO1xuICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5leGl0Q2FsbGJhY2sgJiYgdGhpcy5leGl0Q2FsbGJhY2soKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZENvbXBvc2l0aW9uRGF0YSA9IChlZGl0b3I6IEVkaXRvciwgZGF0YTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGVkaXRvci5zZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoZWRpdG9yLnNlbGVjdGlvbikpIHtcbiAgICAgICAgY29uc3QgW3RleHROb2RlLCB0ZXh0UGF0aF0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pIGFzIE5vZGVFbnRyeTxUZXh0PjtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gZWRpdG9yLnNlbGVjdGlvbi5hbmNob3Iub2Zmc2V0O1xuICAgICAgICBjb25zdCBjbG9uZWRFbGVtZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlZGl0b3IuY2hpbGRyZW5bMF0pKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHsgY2hpbGRyZW46IFtjbG9uZWRFbGVtZW50XSB9O1xuICAgICAgICBjb25zdCBuZXdUZXh0U3RyaW5nID0gdGV4dE5vZGUudGV4dC5zbGljZSgwLCBvZmZzZXQgKyAxKSArIGRhdGEgKyB0ZXh0Tm9kZS50ZXh0LnNsaWNlKG9mZnNldCArIDEpO1xuICAgICAgICBjb25zdCBjbG9uZWRUZXh0Tm9kZSA9IE5vZGUuZ2V0KHJvb3QsIHRleHRQYXRoKSBhcyBUZXh0O1xuICAgICAgICBjbG9uZWRUZXh0Tm9kZS50ZXh0ID0gbmV3VGV4dFN0cmluZztcbiAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==
@@ -2026,7 +2026,7 @@ class TextManage {
2026
2026
  this.options.onChange && this.options.onChange({ ...data });
2027
2027
  MERGING.set(this.board, true);
2028
2028
  }, 0);
2029
- this.getSize = (element) => {
2029
+ this.getSize = (element, maxWidth) => {
2030
2030
  const computedStyle = window.getComputedStyle(this.foreignObject.children[0]);
2031
2031
  const fontFamily = computedStyle.fontFamily;
2032
2032
  const fontSize = parseFloat(computedStyle.fontSize);
@@ -2034,7 +2034,7 @@ class TextManage {
2034
2034
  return measureElement(target, {
2035
2035
  fontSize: fontSize,
2036
2036
  fontFamily
2037
- }, this.options.getMaxWidth());
2037
+ }, maxWidth || this.options.getMaxWidth());
2038
2038
  };
2039
2039
  this.getText = () => {
2040
2040
  return this.editor.children[0];
@@ -2055,8 +2055,14 @@ class TextManage {
2055
2055
  textPlugins: this.options.textPlugins,
2056
2056
  onChange: (data) => {
2057
2057
  if (data.operations.some(op => !Operation.isSelectionOperation(op))) {
2058
- const { width, height } = this.getSize();
2059
- this.textChange({ ...data, width, height });
2058
+ const { width: newWidth, height: newHeight } = this.getSize();
2059
+ this.textChange({ ...data, width: newWidth, height: newHeight });
2060
+ const { x, y, width, height } = this.options.getRectangle();
2061
+ // update immediately width and height otherwise cursor come up shaking(in drawnix)
2062
+ // in flowchart case width and height may greater than the calculational width and height
2063
+ const temporaryWidth = newWidth > width ? newWidth : width;
2064
+ const temporaryHeight = newHeight > height ? newHeight : height;
2065
+ updateForeignObject(this.g, temporaryWidth, temporaryHeight, x, y);
2060
2066
  }
2061
2067
  },
2062
2068
  afterInit: (editor) => {
@@ -2125,23 +2131,28 @@ class TextManage {
2125
2131
  }
2126
2132
  });
2127
2133
  const exitCallback = () => {
2128
- this.updateRectangle();
2129
- mousedown$.unsubscribe();
2130
- keydown$.unsubscribe();
2131
- IS_TEXT_EDITABLE.set(this.board, false);
2132
- MERGING.set(this.board, false);
2133
- callback && callback();
2134
- const props = {
2135
- readonly: true
2136
- };
2137
- this.textComponentRef.update(props);
2138
- this.isEditing = false;
2134
+ if (this.isEditing) {
2135
+ this.updateRectangle();
2136
+ mousedown$.unsubscribe();
2137
+ keydown$.unsubscribe();
2138
+ IS_TEXT_EDITABLE.set(this.board, false);
2139
+ MERGING.set(this.board, false);
2140
+ callback && callback();
2141
+ const props = {
2142
+ readonly: true
2143
+ };
2144
+ this.textComponentRef.update(props);
2145
+ this.isEditing = false;
2146
+ this.exitCallback = undefined;
2147
+ }
2139
2148
  };
2149
+ this.exitCallback = exitCallback;
2140
2150
  return exitCallback;
2141
2151
  }
2142
2152
  destroy() {
2143
2153
  this.g?.remove();
2144
2154
  this.textComponentRef?.destroy();
2155
+ this.exitCallback && this.exitCallback();
2145
2156
  }
2146
2157
  }
2147
2158
  const buildCompositionData = (editor, data) => {