easy-richtextarea 4.0.34 → 4.0.36

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 (49) hide show
  1. package/example.js +93 -1563
  2. package/lib/browser.js +1 -37
  3. package/lib/main.js +4 -45
  4. package/lib/mixins/event.js +11 -10
  5. package/lib/richTextarea.js +31 -156
  6. package/lib/selection.js +7 -146
  7. package/package.json +1 -3
  8. package/src/browser.js +0 -11
  9. package/src/main.js +0 -12
  10. package/src/mixins/event.js +3 -4
  11. package/src/richTextarea.js +22 -239
  12. package/src/selection.js +4 -154
  13. package/lib/constants.js +0 -22
  14. package/lib/contentCompare.js +0 -34
  15. package/lib/eventTypes.js +0 -49
  16. package/lib/keyCodes.js +0 -13
  17. package/lib/operation/delete.js +0 -290
  18. package/lib/operation/empty.js +0 -116
  19. package/lib/operation/insert.js +0 -245
  20. package/lib/operations/fromJSON.js +0 -40
  21. package/lib/operations/generate.js +0 -42
  22. package/lib/operations/toJSON.js +0 -17
  23. package/lib/transform/content.js +0 -19
  24. package/lib/transform/operations.js +0 -31
  25. package/lib/transform/selection.js +0 -19
  26. package/lib/types.js +0 -34
  27. package/lib/undoBuffer.js +0 -145
  28. package/src/constants.js +0 -4
  29. package/src/contentCompare.js +0 -34
  30. package/src/eventTypes.js +0 -15
  31. package/src/keyCodes.js +0 -3
  32. package/src/operation/delete.js +0 -285
  33. package/src/operation/empty.js +0 -76
  34. package/src/operation/insert.js +0 -221
  35. package/src/operations/fromJSON.js +0 -34
  36. package/src/operations/generate.js +0 -46
  37. package/src/operations/toJSON.js +0 -5
  38. package/src/transform/content.js +0 -11
  39. package/src/transform/operations.js +0 -57
  40. package/src/transform/selection.js +0 -11
  41. package/src/types.js +0 -11
  42. package/src/undoBuffer.js +0 -119
  43. package/test/content/transform.js +0 -57
  44. package/test/helpers.js +0 -91
  45. package/test/operation/delete.js +0 -390
  46. package/test/operation/empty.js +0 -101
  47. package/test/operation/insert.js +0 -306
  48. package/test/operations/generate.js +0 -78
  49. package/test/operations/transform.js +0 -69
package/lib/browser.js CHANGED
@@ -14,50 +14,14 @@ _export(exports, {
14
14
  },
15
15
  RichTextarea: function() {
16
16
  return _richTextarea.default;
17
- },
18
- EmptyOperation: function() {
19
- return _empty.default;
20
- },
21
- InsertOperation: function() {
22
- return _insert.default;
23
- },
24
- DeleteOperation: function() {
25
- return _delete.default;
26
- },
27
- transformContent: function() {
28
- return _content.default;
29
- },
30
- operationsToJSON: function() {
31
- return _toJSON.default;
32
- },
33
- operationsFromJSON: function() {
34
- return _fromJSON.default;
35
- },
36
- generateOperations: function() {
37
- return _generate.default;
38
- },
39
- transformSelection: function() {
40
- return _selection1.default;
41
- },
42
- transformOperations: function() {
43
- return _operations.default;
44
17
  }
45
18
  });
46
19
  var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
47
20
  var _richTextarea = /*#__PURE__*/ _interopRequireDefault(require("./richTextarea"));
48
- var _empty = /*#__PURE__*/ _interopRequireDefault(require("./operation/empty"));
49
- var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
50
- var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
51
- var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
52
- var _toJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/toJSON"));
53
- var _fromJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/fromJSON"));
54
- var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
55
- var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
56
- var _operations = /*#__PURE__*/ _interopRequireDefault(require("./transform/operations"));
57
21
  function _interopRequireDefault(obj) {
58
22
  return obj && obj.__esModule ? obj : {
59
23
  default: obj
60
24
  };
61
25
  }
62
26
 
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSaWNoVGV4dGFyZWEgfSBmcm9tIFwiLi9yaWNoVGV4dGFyZWFcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbXB0eU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9lbXB0eVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbnNlcnRPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIERlbGV0ZU9wZXJhdGlvbiB9IGZyb20gXCIuL29wZXJhdGlvbi9kZWxldGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmFuc2Zvcm1Db250ZW50IH0gZnJvbSBcIi4vdHJhbnNmb3JtL2NvbnRlbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3BlcmF0aW9uc1RvSlNPTiB9IGZyb20gXCIuL29wZXJhdGlvbnMvdG9KU09OXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9wZXJhdGlvbnNGcm9tSlNPTiB9IGZyb20gXCIuL29wZXJhdGlvbnMvZnJvbUpTT05cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2VuZXJhdGVPcGVyYXRpb25zIH0gZnJvbSBcIi4vb3BlcmF0aW9ucy9nZW5lcmF0ZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmFuc2Zvcm1TZWxlY3Rpb24gfSBmcm9tIFwiLi90cmFuc2Zvcm0vc2VsZWN0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybU9wZXJhdGlvbnMgfSBmcm9tIFwiLi90cmFuc2Zvcm0vb3BlcmF0aW9uc1wiO1xuIl0sIm5hbWVzIjpbIlNlbGVjdGlvbiIsIlJpY2hUZXh0YXJlYSIsIkVtcHR5T3BlcmF0aW9uIiwiSW5zZXJ0T3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwidHJhbnNmb3JtQ29udGVudCIsIm9wZXJhdGlvbnNUb0pTT04iLCJvcGVyYXRpb25zRnJvbUpTT04iLCJnZW5lcmF0ZU9wZXJhdGlvbnMiLCJ0cmFuc2Zvcm1TZWxlY3Rpb24iLCJ0cmFuc2Zvcm1PcGVyYXRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFb0JBLFNBQVM7ZUFBVEEsa0JBQVM7O0lBQ1RDLFlBQVk7ZUFBWkEscUJBQVk7O0lBRVpDLGNBQWM7ZUFBZEEsY0FBYzs7SUFDZEMsZUFBZTtlQUFmQSxlQUFlOztJQUNmQyxlQUFlO2VBQWZBLGVBQWU7O0lBRWZDLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQUNoQkMsZ0JBQWdCO2VBQWhCQSxlQUFnQjs7SUFDaEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsa0JBQWtCO2VBQWxCQSxpQkFBa0I7O0lBQ2xCQyxrQkFBa0I7ZUFBbEJBLG1CQUFrQjs7SUFDbEJDLG1CQUFtQjtlQUFuQkEsbUJBQW1COzs7OERBWkY7aUVBQ0c7MERBRUU7MkRBQ0M7MkRBQ0E7NERBRUM7MkRBQ0E7NkRBQ0U7NkRBQ0E7K0RBQ0E7K0RBQ0MifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSaWNoVGV4dGFyZWEgfSBmcm9tIFwiLi9yaWNoVGV4dGFyZWFcIjtcbiJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJSaWNoVGV4dGFyZWEiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsU0FBUztlQUFUQSxrQkFBUzs7SUFDVEMsWUFBWTtlQUFaQSxxQkFBWTs7OzhEQURLO2lFQUNHIn0=
package/lib/main.js CHANGED
@@ -2,58 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- Selection: function() {
5
+ Object.defineProperty(exports, "Selection", {
6
+ enumerable: true,
7
+ get: function() {
13
8
  return _selection.default;
14
- },
15
- EmptyOperation: function() {
16
- return _empty.default;
17
- },
18
- InsertOperation: function() {
19
- return _insert.default;
20
- },
21
- DeleteOperation: function() {
22
- return _delete.default;
23
- },
24
- transformContent: function() {
25
- return _content.default;
26
- },
27
- operationsToJSON: function() {
28
- return _toJSON.default;
29
- },
30
- operationsFromJSON: function() {
31
- return _fromJSON.default;
32
- },
33
- generateOperations: function() {
34
- return _generate.default;
35
- },
36
- transformSelection: function() {
37
- return _selection1.default;
38
- },
39
- transformOperations: function() {
40
- return _operations.default;
41
9
  }
42
10
  });
43
11
  var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
44
- var _empty = /*#__PURE__*/ _interopRequireDefault(require("./operation/empty"));
45
- var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
46
- var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
47
- var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
48
- var _toJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/toJSON"));
49
- var _fromJSON = /*#__PURE__*/ _interopRequireDefault(require("./operations/fromJSON"));
50
- var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
51
- var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
52
- var _operations = /*#__PURE__*/ _interopRequireDefault(require("./transform/operations"));
53
12
  function _interopRequireDefault(obj) {
54
13
  return obj && obj.__esModule ? obj : {
55
14
  default: obj
56
15
  };
57
16
  }
58
17
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuXG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRW1wdHlPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZW1wdHlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW5zZXJ0T3BlcmF0aW9uIH0gZnJvbSBcIi4vb3BlcmF0aW9uL2luc2VydFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEZWxldGVPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtQ29udGVudCB9IGZyb20gXCIuL3RyYW5zZm9ybS9jb250ZW50XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9wZXJhdGlvbnNUb0pTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL3RvSlNPTlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvcGVyYXRpb25zRnJvbUpTT04gfSBmcm9tIFwiLi9vcGVyYXRpb25zL2Zyb21KU09OXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdlbmVyYXRlT3BlcmF0aW9ucyB9IGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJhbnNmb3JtU2VsZWN0aW9uIH0gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmFuc2Zvcm1PcGVyYXRpb25zIH0gZnJvbSBcIi4vdHJhbnNmb3JtL29wZXJhdGlvbnNcIjtcbiJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJFbXB0eU9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsIkRlbGV0ZU9wZXJhdGlvbiIsInRyYW5zZm9ybUNvbnRlbnQiLCJvcGVyYXRpb25zVG9KU09OIiwib3BlcmF0aW9uc0Zyb21KU09OIiwiZ2VuZXJhdGVPcGVyYXRpb25zIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwidHJhbnNmb3JtT3BlcmF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxTQUFTO2VBQVRBLGtCQUFTOztJQUdUQyxjQUFjO2VBQWRBLGNBQWM7O0lBQ2RDLGVBQWU7ZUFBZkEsZUFBZTs7SUFDZkMsZUFBZTtlQUFmQSxlQUFlOztJQUVmQyxnQkFBZ0I7ZUFBaEJBLGdCQUFnQjs7SUFDaEJDLGdCQUFnQjtlQUFoQkEsZUFBZ0I7O0lBQ2hCQyxrQkFBa0I7ZUFBbEJBLGlCQUFrQjs7SUFDbEJDLGtCQUFrQjtlQUFsQkEsaUJBQWtCOztJQUNsQkMsa0JBQWtCO2VBQWxCQSxtQkFBa0I7O0lBQ2xCQyxtQkFBbUI7ZUFBbkJBLG1CQUFtQjs7OzhEQVpGOzBEQUdLOzJEQUNDOzJEQUNBOzREQUVDOzJEQUNBOzZEQUNFOzZEQUNBOytEQUNBOytEQUNDIn0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlbGVjdGlvbiB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuIl0sIm5hbWVzIjpbIlNlbGVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBRW9CQTs7O2VBQUFBLGtCQUFTOzs7OERBQVEifQ==
@@ -8,37 +8,38 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var _eventTypes = require("../eventTypes");
11
+ var _easy = require("easy");
12
+ var BLUR_EVENT_TYPE = _easy.eventTypes.BLUR_EVENT_TYPE, FOCUS_EVENT_TYPE = _easy.eventTypes.FOCUS_EVENT_TYPE, SCROLL_EVENT_TYPE = _easy.eventTypes.SCROLL_EVENT_TYPE, CHANGE_EVENT_TYPE = _easy.eventTypes.CHANGE_EVENT_TYPE;
12
13
  function onBlur(blurHandler, element) {
13
- var eventType = _eventTypes.BLUR_EVENT_TYPE, handler = blurHandler; ///
14
+ var eventType = BLUR_EVENT_TYPE, handler = blurHandler; ///
14
15
  this.addEventListener(eventType, handler, element);
15
16
  }
16
17
  function onFocus(blurHandler, element) {
17
- var eventType = _eventTypes.FOCUS_EVENT_TYPE, handler = blurHandler; ///
18
+ var eventType = FOCUS_EVENT_TYPE, handler = blurHandler; ///
18
19
  this.addEventListener(eventType, handler, element);
19
20
  }
20
21
  function onScroll(scrollHandler, element) {
21
- var eventType = _eventTypes.SCROLL_EVENT_TYPE, handler = scrollHandler; ///
22
+ var eventType = SCROLL_EVENT_TYPE, handler = scrollHandler; ///
22
23
  this.addEventListener(eventType, handler, element);
23
24
  }
24
25
  function onChange(changeHandler, element) {
25
- var eventType = _eventTypes.CHANGE_EVENT_TYPE, handler = changeHandler; ///
26
+ var eventType = CHANGE_EVENT_TYPE, handler = changeHandler; ///
26
27
  this.addEventListener(eventType, handler, element);
27
28
  }
28
29
  function offBlur(blurHandler, element) {
29
- var eventType = _eventTypes.BLUR_EVENT_TYPE, handler = blurHandler; ///
30
+ var eventType = BLUR_EVENT_TYPE, handler = blurHandler; ///
30
31
  this.removeEventListener(eventType, handler, element);
31
32
  }
32
33
  function offFocus(blurHandler, element) {
33
- var eventType = _eventTypes.FOCUS_EVENT_TYPE, handler = blurHandler; ///
34
+ var eventType = FOCUS_EVENT_TYPE, handler = blurHandler; ///
34
35
  this.removeEventListener(eventType, handler, element);
35
36
  }
36
37
  function offScroll(scrollHandler, element) {
37
- var eventType = _eventTypes.SCROLL_EVENT_TYPE, handler = scrollHandler; ///
38
+ var eventType = SCROLL_EVENT_TYPE, handler = scrollHandler; ///
38
39
  this.removeEventListener(eventType, handler, element);
39
40
  }
40
41
  function offChange(changeHandler, element) {
41
- var eventType = _eventTypes.CHANGE_EVENT_TYPE, handler = changeHandler; ///
42
+ var eventType = CHANGE_EVENT_TYPE, handler = changeHandler; ///
42
43
  this.removeEventListener(eventType, handler, element);
43
44
  }
44
45
  var eventMixins = {
@@ -53,4 +54,4 @@ var eventMixins = {
53
54
  };
54
55
  var _default = eventMixins;
55
56
 
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvZXZlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEJMVVJfRVZFTlRfVFlQRSxcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFIH0gZnJvbSBcIi4uL2V2ZW50VHlwZXNcIjtcblxuZnVuY3Rpb24gb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cblxuICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cblxuICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuY29uc3QgZXZlbnRNaXhpbnMgPSB7XG4gIG9uQmx1cixcbiAgb25Gb2N1cyxcbiAgb25TY3JvbGwsXG4gIG9uQ2hhbmdlLFxuICBvZmZCbHVyLFxuICBvZmZGb2N1cyxcbiAgb2ZmU2Nyb2xsLFxuICBvZmZDaGFuZ2Vcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV2ZW50TWl4aW5zO1xuIl0sIm5hbWVzIjpbIm9uQmx1ciIsImJsdXJIYW5kbGVyIiwiZWxlbWVudCIsImV2ZW50VHlwZSIsIkJMVVJfRVZFTlRfVFlQRSIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25Gb2N1cyIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJvblNjcm9sbCIsInNjcm9sbEhhbmRsZXIiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIkNIQU5HRV9FVkVOVF9UWVBFIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsImV2ZW50TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEwRUE7OztlQUFBOzs7MEJBckVrQztBQUVsQyxTQUFTQSxPQUFPQyxXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUNwQyxJQUFNQyxZQUFZQywyQkFBZSxFQUMzQkMsVUFBVUosYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ0ssZ0JBQWdCLENBQUNILFdBQVdFLFNBQVNIO0FBQzVDO0FBRUEsU0FBU0ssUUFBUU4sV0FBVyxFQUFFQyxPQUFPLEVBQUU7SUFDckMsSUFBTUMsWUFBWUssNEJBQWdCLEVBQzVCSCxVQUFVSixhQUFjLEdBQUc7SUFFakMsSUFBSSxDQUFDSyxnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTTyxTQUFTQyxhQUFhLEVBQUVSLE9BQU8sRUFBRTtJQUN4QyxJQUFNQyxZQUFZUSw2QkFBaUIsRUFDN0JOLFVBQVVLLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDSixnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTVSxTQUFTQyxhQUFhLEVBQUVYLE9BQU8sRUFBRTtJQUN4QyxJQUFNQyxZQUFZVyw2QkFBaUIsRUFDN0JULFVBQVVRLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDUCxnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTYSxRQUFRZCxXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUNyQyxJQUFNQyxZQUFZQywyQkFBZSxFQUMzQkMsVUFBVUosYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ2UsbUJBQW1CLENBQUNiLFdBQVdFLFNBQVNIO0FBQy9DO0FBRUEsU0FBU2UsU0FBU2hCLFdBQVcsRUFBRUMsT0FBTyxFQUFFO0lBQ3RDLElBQU1DLFlBQVlLLDRCQUFnQixFQUM1QkgsVUFBVUosYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ2UsbUJBQW1CLENBQUNiLFdBQVdFLFNBQVNIO0FBQy9DO0FBRUEsU0FBU2dCLFVBQVVSLGFBQWEsRUFBRVIsT0FBTyxFQUFFO0lBQ3pDLElBQU1DLFlBQVlRLDZCQUFpQixFQUM3Qk4sVUFBVUssZUFBZ0IsR0FBRztJQUVuQyxJQUFJLENBQUNNLG1CQUFtQixDQUFDYixXQUFXRSxTQUFTSDtBQUMvQztBQUVBLFNBQVNpQixVQUFVTixhQUFhLEVBQUVYLE9BQU8sRUFBRTtJQUN6QyxJQUFNQyxZQUFZVyw2QkFBaUIsRUFDN0JULFVBQVVRLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDRyxtQkFBbUIsQ0FBQ2IsV0FBV0UsU0FBU0g7QUFDL0M7QUFFQSxJQUFNa0IsY0FBYztJQUNsQnBCLFFBQUFBO0lBQ0FPLFNBQUFBO0lBQ0FFLFVBQUFBO0lBQ0FHLFVBQUFBO0lBQ0FHLFNBQUFBO0lBQ0FFLFVBQUFBO0lBQ0FDLFdBQUFBO0lBQ0FDLFdBQUFBO0FBQ0Y7SUFFQSxXQUFlQyJ9
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvZXZlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGV2ZW50VHlwZXMgfSBmcm9tIFwiZWFzeVwiO1xuXG5jb25zdCB7IEJMVVJfRVZFTlRfVFlQRSwgRk9DVVNfRVZFTlRfVFlQRSwgU0NST0xMX0VWRU5UX1RZUEUsIENIQU5HRV9FVkVOVF9UWVBFIH0gPSBldmVudFR5cGVzO1xuXG5mdW5jdGlvbiBvbkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cblxuICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cblxuICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cblxuICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cblxuICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmQmx1cihibHVySGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZGb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cblxuICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5jb25zdCBldmVudE1peGlucyA9IHtcbiAgb25CbHVyLFxuICBvbkZvY3VzLFxuICBvblNjcm9sbCxcbiAgb25DaGFuZ2UsXG4gIG9mZkJsdXIsXG4gIG9mZkZvY3VzLFxuICBvZmZTY3JvbGwsXG4gIG9mZkNoYW5nZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZXZlbnRNaXhpbnM7XG4iXSwibmFtZXMiOlsiQkxVUl9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwib25CbHVyIiwiYmx1ckhhbmRsZXIiLCJlbGVtZW50IiwiZXZlbnRUeXBlIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkZvY3VzIiwib25TY3JvbGwiLCJzY3JvbGxIYW5kbGVyIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsImV2ZW50TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF5RUE7OztlQUFBOzs7b0JBdkUyQjtBQUUzQixJQUFRQSxrQkFBNEVDLGdCQUFVLENBQXRGRCxpQkFBaUJFLG1CQUEyREQsZ0JBQVUsQ0FBckVDLGtCQUFrQkMsb0JBQXlDRixnQkFBVSxDQUFuREUsbUJBQW1CQyxvQkFBc0JILGdCQUFVLENBQWhDRztBQUU5RCxTQUFTQyxPQUFPQyxXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUNwQyxJQUFNQyxZQUFZUixpQkFDWlMsVUFBVUgsYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ0ksZ0JBQWdCLENBQUNGLFdBQVdDLFNBQVNGO0FBQzVDO0FBRUEsU0FBU0ksUUFBUUwsV0FBVyxFQUFFQyxPQUFPLEVBQUU7SUFDckMsSUFBTUMsWUFBWU4sa0JBQ1pPLFVBQVVILGFBQWMsR0FBRztJQUVqQyxJQUFJLENBQUNJLGdCQUFnQixDQUFDRixXQUFXQyxTQUFTRjtBQUM1QztBQUVBLFNBQVNLLFNBQVNDLGFBQWEsRUFBRU4sT0FBTyxFQUFFO0lBQ3hDLElBQU1DLFlBQVlMLG1CQUNaTSxVQUFVSSxlQUFnQixHQUFHO0lBRW5DLElBQUksQ0FBQ0gsZ0JBQWdCLENBQUNGLFdBQVdDLFNBQVNGO0FBQzVDO0FBRUEsU0FBU08sU0FBU0MsYUFBYSxFQUFFUixPQUFPLEVBQUU7SUFDeEMsSUFBTUMsWUFBWUosbUJBQ1pLLFVBQVVNLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDTCxnQkFBZ0IsQ0FBQ0YsV0FBV0MsU0FBU0Y7QUFDNUM7QUFFQSxTQUFTUyxRQUFRVixXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUNyQyxJQUFNQyxZQUFZUixpQkFDWlMsVUFBVUgsYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ1csbUJBQW1CLENBQUNULFdBQVdDLFNBQVNGO0FBQy9DO0FBRUEsU0FBU1csU0FBU1osV0FBVyxFQUFFQyxPQUFPLEVBQUU7SUFDdEMsSUFBTUMsWUFBWU4sa0JBQ1pPLFVBQVVILGFBQWMsR0FBRztJQUVqQyxJQUFJLENBQUNXLG1CQUFtQixDQUFDVCxXQUFXQyxTQUFTRjtBQUMvQztBQUVBLFNBQVNZLFVBQVVOLGFBQWEsRUFBRU4sT0FBTyxFQUFFO0lBQ3pDLElBQU1DLFlBQVlMLG1CQUNaTSxVQUFVSSxlQUFnQixHQUFHO0lBRW5DLElBQUksQ0FBQ0ksbUJBQW1CLENBQUNULFdBQVdDLFNBQVNGO0FBQy9DO0FBRUEsU0FBU2EsVUFBVUwsYUFBYSxFQUFFUixPQUFPLEVBQUU7SUFDekMsSUFBTUMsWUFBWUosbUJBQ1pLLFVBQVVNLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDRSxtQkFBbUIsQ0FBQ1QsV0FBV0MsU0FBU0Y7QUFDL0M7QUFFQSxJQUFNYyxjQUFjO0lBQ2xCaEIsUUFBQUE7SUFDQU0sU0FBQUE7SUFDQUMsVUFBQUE7SUFDQUUsVUFBQUE7SUFDQUUsU0FBQUE7SUFDQUUsVUFBQUE7SUFDQUMsV0FBQUE7SUFDQUMsV0FBQUE7QUFDRjtJQUVBLFdBQWVDIn0=
@@ -10,16 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _easy = require("easy");
12
12
  var _selection = /*#__PURE__*/ _interopRequireDefault(require("./selection"));
13
- var _undoBuffer = /*#__PURE__*/ _interopRequireDefault(require("./undoBuffer"));
14
13
  var _event = /*#__PURE__*/ _interopRequireDefault(require("./mixins/event"));
15
- var _insert = /*#__PURE__*/ _interopRequireDefault(require("./operation/insert"));
16
- var _delete = /*#__PURE__*/ _interopRequireDefault(require("./operation/delete"));
17
- var _content = /*#__PURE__*/ _interopRequireDefault(require("./transform/content"));
18
- var _selection1 = /*#__PURE__*/ _interopRequireDefault(require("./transform/selection"));
19
- var _generate = /*#__PURE__*/ _interopRequireDefault(require("./operations/generate"));
20
- var _constants = require("./constants");
21
- var _keyCodes = require("./keyCodes");
22
- var _eventTypes = require("./eventTypes");
23
14
  function _arrayLikeToArray(arr, len) {
24
15
  if (len == null || len > arr.length) len = arr.length;
25
16
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -205,84 +196,33 @@ function _createSuper(Derived) {
205
196
  return _possibleConstructorReturn(this, result);
206
197
  };
207
198
  }
199
+ var BLUR_EVENT_TYPE = _easy.eventTypes.BLUR_EVENT_TYPE, INPUT_EVENT_TYPE = _easy.eventTypes.INPUT_EVENT_TYPE, FOCUS_EVENT_TYPE = _easy.eventTypes.FOCUS_EVENT_TYPE, CHANGE_EVENT_TYPE = _easy.eventTypes.CHANGE_EVENT_TYPE, SCROLL_EVENT_TYPE = _easy.eventTypes.SCROLL_EVENT_TYPE, SELECTIONCHANGE_EVENT_TYPE = _easy.eventTypes.SELECTIONCHANGE_EVENT_TYPE;
208
200
  var RichTextarea = /*#__PURE__*/ function(Element) {
209
201
  _inherits(RichTextarea, Element);
210
202
  var _super = _createSuper(RichTextarea);
211
- function RichTextarea(selector, focused, readOnly, undoBuffer) {
203
+ function RichTextarea(selector, focused, readOnly) {
212
204
  _classCallCheck(this, RichTextarea);
213
205
  var _this;
214
206
  _this = _super.call(this, selector);
215
- _defineProperty(_assertThisInitialized(_this), "cutHandler", function(event, element) {
216
- var selection = _this.getSelection(), selectionEmpty = selection.isEmpty();
217
- if (selectionEmpty) {
218
- return;
219
- }
220
- var selectedContent = _this.getSelectedContent();
221
- navigator.clipboard.writeText(selectedContent);
222
- var content = _this.getContent(), deleteOperation = _delete.default.fromContentAndSelection(content, selection), operation = deleteOperation; ///
223
- _this.applyOperation(operation);
224
- _this.intermediateHandler(event, element);
225
- event.preventDefault();
226
- });
227
- _defineProperty(_assertThisInitialized(_this), "copyHandler", function(event, element) {
228
- var selection = _this.getSelection(), selectionEmpty = selection.isEmpty();
229
- if (selectionEmpty) {
230
- return;
231
- }
232
- var selectedContent = _this.getSelectedContent();
233
- navigator.clipboard.writeText(selectedContent);
234
- event.preventDefault();
235
- });
236
- _defineProperty(_assertThisInitialized(_this), "pasteHandler", function(event, element) {
237
- var clipboardData = event.clipboardData, textData = clipboardData.getData(_constants.TEXT);
238
- if (textData === _constants.EMPTY_STRING) {
239
- return;
240
- }
241
- var selection = _this.getSelection(), selectionEmpty = selection.isEmpty();
242
- if (!selectionEmpty) {
243
- var content = _this.getContent(), deleteOperation = _delete.default.fromContentAndSelection(content, selection), operation = deleteOperation;
244
- _this.applyOperation(operation);
245
- }
246
- var content1 = textData, insertOperation = _insert.default.fromContentAndSelection(content1, selection), operation1 = insertOperation; ///
247
- _this.applyOperation(operation1);
248
- _this.intermediateHandler(event, element);
249
- event.preventDefault();
250
- });
251
207
  _defineProperty(_assertThisInitialized(_this), "inputHandler", function(event, element) {
252
208
  _this.intermediateHandler(event, element);
253
209
  });
254
210
  _defineProperty(_assertThisInitialized(_this), "blurHandler", function(event, element) {
255
211
  _this.focused = false;
256
- var undoable = true, eventType = _eventTypes.BLUR_EVENT_TYPE, selectionChanged = true;
257
- _this.intermediateHandler(event, element, undoable, eventType, selectionChanged);
212
+ var eventType = BLUR_EVENT_TYPE, selectionChanged = true;
213
+ _this.intermediateHandler(event, element, eventType, selectionChanged);
258
214
  });
259
215
  _defineProperty(_assertThisInitialized(_this), "focusHandler", function(event, element) {
260
216
  _this.focused = true;
261
217
  defer(function() {
262
- var undoable = true, eventType = _eventTypes.FOCUS_EVENT_TYPE, selectionChanged = true;
263
- _this.intermediateHandler(event, element, undoable, eventType, selectionChanged);
218
+ var eventType = FOCUS_EVENT_TYPE, selectionChanged = true;
219
+ _this.intermediateHandler(event, element, eventType, selectionChanged);
264
220
  });
265
221
  });
266
222
  _defineProperty(_assertThisInitialized(_this), "scrollHandler", function(event, element) {
267
- var eventType = _eventTypes.SCROLL_EVENT_TYPE;
223
+ var eventType = SCROLL_EVENT_TYPE;
268
224
  _this.callHandlers(eventType, event, element);
269
225
  });
270
- _defineProperty(_assertThisInitialized(_this), "keyDownHandler", function(event, element) {
271
- var preventDefault = false;
272
- var keyCode = event.keyCode;
273
- switch(keyCode){
274
- case _keyCodes.Z_KEY_CODE:
275
- preventDefault = _this.zKeyDown(event, element);
276
- break;
277
- }
278
- if (preventDefault) {
279
- event.preventDefault();
280
- return;
281
- }
282
- defer(function() {
283
- _this.intermediateHandler(event, element);
284
- });
285
- });
286
226
  _defineProperty(_assertThisInitialized(_this), "contextmenuHandler", function(event, element) {
287
227
  event.preventDefault();
288
228
  });
@@ -293,26 +233,23 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
293
233
  }
294
234
  });
295
235
  _defineProperty(_assertThisInitialized(_this), "intermediateHandler", function(event, element) {
296
- var undoable = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true, eventType = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _eventTypes.CHANGE_EVENT_TYPE, selectionChanged = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _this.hasSelectionChanged();
297
- if (_this.readOnly) {
298
- var previousContent = _this.getPreviousContent(), content = previousContent; ///
299
- _this.setContent(content);
300
- }
301
- var content1 = _this.getContent(), selection = _this.getSelection(), contentChanged = _this.hasContentChanged();
302
- if (contentChanged && undoable) {
303
- var previousContent1 = _this.getPreviousContent(), operations = (0, _generate.default)(previousContent1, content1);
304
- _this.undoBuffer.addOperations(operations);
305
- }
236
+ var eventType = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : CHANGE_EVENT_TYPE, selectionChanged = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _this.hasSelectionChanged();
237
+ // if (this.readOnly) {
238
+ // const previousContent = this.getPreviousContent(),
239
+ // content = previousContent; ///
240
+ //
241
+ // this.setContent(content);
242
+ // }
243
+ var content = _this.getContent(), selection = _this.getSelection(), contentChanged = _this.hasContentChanged();
306
244
  if (contentChanged || selectionChanged) {
307
245
  _this.callHandlers(eventType, event, element);
308
246
  }
309
- var previousContent2 = content1, previousSelection = selection; ///
310
- _this.setPreviousContent(previousContent2);
247
+ var previousContent = content, previousSelection = selection; ///
248
+ _this.setPreviousContent(previousContent);
311
249
  _this.setPreviousSelection(previousSelection);
312
250
  });
313
251
  _this.focused = focused;
314
252
  _this.readOnly = readOnly;
315
- _this.undoBuffer = undoBuffer;
316
253
  return _this;
317
254
  }
318
255
  _createClass(RichTextarea, [
@@ -328,12 +265,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
328
265
  return this.readOnly;
329
266
  }
330
267
  },
331
- {
332
- key: "getUndoBuffer",
333
- value: function getUndoBuffer() {
334
- return this.undoBuffer;
335
- }
336
- },
337
268
  {
338
269
  key: "setFocused",
339
270
  value: function setFocused(focused) {
@@ -358,7 +289,7 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
358
289
  var element = eventListener.element;
359
290
  var handler = eventListener.handler, handlerElement = element; ///
360
291
  element = _this; ///
361
- if (handler !== _this.cutHandler && handler !== _this.copyHandler && handler !== _this.pasteHandler && handler !== _this.inputHandler && handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.scrollHandler && handler !== _this.keyDownHandler && handler !== _this.contextmenuHandler && handler !== _this.selectChangeHandler) {
292
+ if (handler !== _this.inputHandler && handler !== _this.blurHandler && handler !== _this.focusHandler && handler !== _this.scrollHandler && handler !== _this.contextmenuHandler && handler !== _this.selectChangeHandler) {
362
293
  var _handler;
363
294
  (_handler = handler).call.apply(_handler, [
364
295
  handlerElement
@@ -437,80 +368,25 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
437
368
  }
438
369
  }
439
370
  },
440
- {
441
- key: "zKeyDown",
442
- value: function zKeyDown(event, element) {
443
- var preventDefault = false;
444
- var ctrlKey = event.ctrlKey, metaKey = event.metaKey, shiftKey = event.shiftKey;
445
- if (ctrlKey || metaKey) {
446
- var operation = shiftKey ? this.undoBuffer.redo() : this.undoBuffer.undo();
447
- if (operation !== null) {
448
- var undoable = false, selection = _selection.default.fromOperation(operation), setPreviousSelection = false;
449
- this.applyOperation(operation);
450
- this.setSelection(selection, setPreviousSelection);
451
- this.intermediateHandler(event, element, undoable);
452
- }
453
- preventDefault = true;
454
- }
455
- return preventDefault;
456
- }
457
- },
458
- {
459
- key: "transform",
460
- value: function transform(operations) {
461
- var content = this.getContent(), selection = this.getSelection();
462
- var transformedContent = (0, _content.default)(content, operations), transformedSelection = (0, _selection1.default)(selection, operations);
463
- content = transformedContent; ///
464
- selection = transformedSelection; ///
465
- var setPreviousContent = false, setPreviousSelection = false;
466
- this.setContent(content, setPreviousContent);
467
- this.setSelection(selection, setPreviousSelection);
468
- this.undoBuffer.transform(operations);
469
- var event = null, element = this, undoable = false;
470
- this.intermediateHandler(event, element, undoable);
471
- }
472
- },
473
- {
474
- key: "applyOperation",
475
- value: function applyOperation(operation) {
476
- var content = this.getContent(), selection = this.getSelection();
477
- var transformedContent = operation.transformContent(content), transformedSelection = operation.transformSelection(selection);
478
- content = transformedContent; ///
479
- selection = transformedSelection; ///
480
- var setPreviousContent = false, setPreviousSelection = false;
481
- this.setContent(content, setPreviousContent);
482
- this.setSelection(selection, setPreviousSelection);
483
- }
484
- },
485
371
  {
486
372
  key: "activate",
487
373
  value: function activate() {
488
- this.on(_eventTypes.CUT_EVENT_TYPE, this.cutHandler);
489
- this.on(_eventTypes.COPY_EVENT_TYPE, this.copyHandler);
490
- this.on(_eventTypes.PASTE_EVENT_TYPE, this.pasteHandler);
491
- this.on(_eventTypes.INPUT_EVENT_TYPE, this.inputHandler);
492
- this.on(_eventTypes.BLUR_EVENT_TYPE, this.blurHandler);
493
- this.on(_eventTypes.FOCUS_EVENT_TYPE, this.focusHandler);
494
- this.on(_eventTypes.SCROLL_EVENT_TYPE, this.scrollHandler);
495
- this.on(_eventTypes.KEYDOWN_EVENT_TYPE, this.keyDownHandler);
496
- this.on(_eventTypes.CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
497
- _easy.document.on(_eventTypes.SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
374
+ this.on(INPUT_EVENT_TYPE, this.inputHandler);
375
+ this.on(BLUR_EVENT_TYPE, this.blurHandler);
376
+ this.on(FOCUS_EVENT_TYPE, this.focusHandler);
377
+ this.on(SCROLL_EVENT_TYPE, this.scrollHandler);
378
+ _easy.document.on(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
498
379
  this.addClass("active");
499
380
  }
500
381
  },
501
382
  {
502
383
  key: "deactivate",
503
384
  value: function deactivate() {
504
- this.off(_eventTypes.CUT_EVENT_TYPE, this.cutHandler);
505
- this.off(_eventTypes.COPY_EVENT_TYPE, this.copyHandler);
506
- this.off(_eventTypes.PASTE_EVENT_TYPE, this.pasteHandler);
507
- this.off(_eventTypes.INPUT_EVENT_TYPE, this.inputHandler);
508
- this.off(_eventTypes.BLUR_EVENT_TYPE, this.blurHandler);
509
- this.off(_eventTypes.FOCUS_EVENT_TYPE, this.focusHandler);
510
- this.off(_eventTypes.SCROLL_EVENT_TYPE, this.scrollHandler);
511
- this.off(_eventTypes.KEYDOWN_EVENT_TYPE, this.keyDownHandler);
512
- this.off(_eventTypes.CONTEXTMENU_EVENT_TYPE, this.contextmenuHandler);
513
- _easy.document.off(_eventTypes.SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
385
+ this.off(INPUT_EVENT_TYPE, this.inputHandler);
386
+ this.off(BLUR_EVENT_TYPE, this.blurHandler);
387
+ this.off(FOCUS_EVENT_TYPE, this.focusHandler);
388
+ this.off(SCROLL_EVENT_TYPE, this.scrollHandler);
389
+ _easy.document.off(SELECTIONCHANGE_EVENT_TYPE, this.selectChangeHandler);
514
390
  this.removeClass("active");
515
391
  }
516
392
  },
@@ -601,12 +477,11 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
601
477
  remainingArguments[_key - 2] = arguments[_key];
602
478
  }
603
479
  var _Element;
604
- var focused = false, readOnly = false, undoBuffer = _undoBuffer.default.fromNothing(), richTextarea = (_Element = _easy.Element).fromClass.apply(_Element, [
480
+ var focused = false, readOnly = false, richTextarea = (_Element = _easy.Element).fromClass.apply(_Element, [
605
481
  Class,
606
482
  properties,
607
483
  focused,
608
- readOnly,
609
- undoBuffer
484
+ readOnly
610
485
  ].concat(_toConsumableArray(remainingArguments)));
611
486
  return richTextarea;
612
487
  }
@@ -629,4 +504,4 @@ function defer(func) {
629
504
  setTimeout(func, 0);
630
505
  }
631
506
 
632
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IGV2ZW50TWl4aW5zIGZyb20gXCIuL21peGlucy9ldmVudFwiO1xyXG5pbXBvcnQgSW5zZXJ0T3BlcmF0aW9uIGZyb20gXCIuL29wZXJhdGlvbi9pbnNlcnRcIjtcclxuaW1wb3J0IERlbGV0ZU9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vZGVsZXRlXCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1Db250ZW50IGZyb20gXCIuL3RyYW5zZm9ybS9jb250ZW50XCI7XHJcbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xyXG5pbXBvcnQgZ2VuZXJhdGVPcGVyYXRpb25zIGZyb20gXCIuL29wZXJhdGlvbnMvZ2VuZXJhdGVcIjtcclxuXHJcbmltcG9ydCB7IFRFWFQsIEVNUFRZX1NUUklORyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBaX0tFWV9DT0RFIH0gZnJvbSBcIi4va2V5Q29kZXNcIjtcclxuaW1wb3J0IHsgQ1VUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENPUFlfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIpIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIGlzRm9jdXNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQ7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBnZXRVbmRvQnVmZmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudW5kb0J1ZmZlcjtcclxuICB9XHJcblxyXG4gIHNldEZvY3VzZWQoZm9jdXNlZCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBjdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFNlbGVjdGlvbihjb250ZW50LCBzZWxlY3Rpb24pLFxyXG4gICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGNvcHlIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmIChzZWxlY3Rpb25FbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250ZW50ID0gdGhpcy5nZXRTZWxlY3RlZENvbnRlbnQoKTtcclxuXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzZWxlY3RlZENvbnRlbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBwYXN0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY2xpcGJvYXJkRGF0YSB9ID0gZXZlbnQsXHJcbiAgICAgICAgICB0ZXh0RGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShURVhUKTtcclxuXHJcbiAgICBpZiAodGV4dERhdGEgPT09IEVNUFRZX1NUUklORykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoIXNlbGVjdGlvbkVtcHR5KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGV4dERhdGEsIC8vL1xyXG4gICAgICAgICAgaW5zZXJ0T3BlcmF0aW9uID0gSW5zZXJ0T3BlcmF0aW9uLmZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbiksXHJcbiAgICAgICAgICBvcGVyYXRpb24gPSBpbnNlcnRPcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgYmx1ckhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCB1bmRvYWJsZSA9IHRydWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgbGV0IHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcclxuXHJcbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcclxuICAgICAgY2FzZSBaX0tFWV9DT0RFOlxyXG4gICAgICAgIHByZXZlbnREZWZhdWx0ID0gdGhpcy56S2V5RG93bihldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmVyKCgpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdW5kb2FibGUgPSB0cnVlLCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSwgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpKSA9PiB7XHJcbiAgICBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICBjb250ZW50ID0gcHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCAmJiB1bmRvYWJsZSkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgICBvcGVyYXRpb25zID0gZ2VuZXJhdGVPcGVyYXRpb25zKHByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICB0aGlzLnVuZG9CdWZmZXIuYWRkT3BlcmF0aW9ucyhvcGVyYXRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29udGVudENoYW5nZWQgfHwgc2VsZWN0aW9uQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBjYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGV2ZW50TGlzdGVuZXJzID0gdGhpcy5maW5kRXZlbnRMaXN0ZW5lcnMoZXZlbnRUeXBlKTtcclxuXHJcbiAgICBldmVudExpc3RlbmVycy5mb3JFYWNoKChldmVudExpc3RlbmVyKSA9PiB7XHJcbiAgICAgIGxldCB7IGVsZW1lbnQgfSA9IGV2ZW50TGlzdGVuZXI7XHJcblxyXG4gICAgICBjb25zdCB7IGhhbmRsZXIgfSA9IGV2ZW50TGlzdGVuZXIsXHJcbiAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoIChoYW5kbGVyICE9PSB0aGlzLmN1dEhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuY29weUhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMucGFzdGVIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmlucHV0SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5ibHVySGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5mb2N1c0hhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5rZXlEb3duSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpXHJcbiAgICAgICAgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcikgKSB7XHJcblxyXG4gICAgICAgIGhhbmRsZXIuY2FsbChoYW5kbGVyRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IHRoaXMuZ2V0UHJldmlvdXNDb250ZW50KCksXHJcbiAgICAgICAgICBjb250ZW50UHJldmlvdXNDb250ZW50ID0gKGNvbnRlbnQgPT09IHByZXZpb3VzQ29udGVudCksXHJcbiAgICAgICAgICBjb250ZW50Q2hhbmdlZCA9ICFjb250ZW50UHJldmlvdXNDb250ZW50O1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLmdldFByZXZpb3VzU2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbi5pc0VxdWFsVG8ocHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9ICFzZWxlY3Rpb25QcmV2aW91c1NlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbkNoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCA9IHRydWUpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHNldFByZXZpb3VzQ29udGVudCkge1xyXG4gICAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgZG9tRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgektleURvd24oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGxldCBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gc2hpZnRLZXkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5kb0J1ZmZlci5yZWRvKCkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICAgIGlmIChvcGVyYXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1bmRvYWJsZSA9IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tT3BlcmF0aW9uKG9wZXJhdGlvbiksXHJcbiAgICAgICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHNldFByZXZpb3VzU2VsZWN0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJldmVudERlZmF1bHQ7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcywgLy8vXHJcbiAgICAgICAgICB1bmRvYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgdW5kb2FibGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vbihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub24oU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUsIHRoaXMuc2VsZWN0Q2hhbmdlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihDVVRfRVZFTlRfVFlQRSwgdGhpcy5jdXRIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT1BZX0VWRU5UX1RZUEUsIHRoaXMuY29weUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoU0NST0xMX0VWRU5UX1RZUEUsIHRoaXMuc2Nyb2xsSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihDT05URVhUTUVOVV9FVkVOVF9UWVBFLCB0aGlzLmNvbnRleHRtZW51SGFuZGxlcik7XHJcblxyXG4gICAgZG9jdW1lbnQub2ZmKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c0NvbnRlbnQoKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzQ29udGVudCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNTZWxlY3Rpb24gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKCk7XHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgd2lsbFVubW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uQmx1ciwgb25Gb2N1cywgb25TY3JvbGwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZTsgLy8vXHJcblxyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnQsXHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25CbHVyXCIsXHJcbiAgICBcIm9uRm9jdXNcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25DaGFuZ2VcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcmljaFRleHRhcmVhID0gRWxlbWVudC5mcm9tQ2xhc3MoQ2xhc3MsIHByb3BlcnRpZXMsIGZvY3VzZWQsIHJlYWRPbmx5LCB1bmRvQnVmZmVyLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsInVuZG9CdWZmZXIiLCJjdXRIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5Iiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY29udGVudCIsImdldENvbnRlbnQiLCJkZWxldGVPcGVyYXRpb24iLCJEZWxldGVPcGVyYXRpb24iLCJmcm9tQ29udGVudEFuZFNlbGVjdGlvbiIsIm9wZXJhdGlvbiIsImFwcGx5T3BlcmF0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsInByZXZlbnREZWZhdWx0IiwiY29weUhhbmRsZXIiLCJwYXN0ZUhhbmRsZXIiLCJjbGlwYm9hcmREYXRhIiwidGV4dERhdGEiLCJnZXREYXRhIiwiVEVYVCIsIkVNUFRZX1NUUklORyIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImlucHV0SGFuZGxlciIsImJsdXJIYW5kbGVyIiwidW5kb2FibGUiLCJldmVudFR5cGUiLCJCTFVSX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiZm9jdXNIYW5kbGVyIiwiZGVmZXIiLCJGT0NVU19FVkVOVF9UWVBFIiwic2Nyb2xsSGFuZGxlciIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiY2FsbEhhbmRsZXJzIiwia2V5RG93bkhhbmRsZXIiLCJrZXlDb2RlIiwiWl9LRVlfQ09ERSIsInpLZXlEb3duIiwiY29udGV4dG1lbnVIYW5kbGVyIiwic2VsZWN0Q2hhbmdlSGFuZGxlciIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsInByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzQ29udGVudCIsInNldENvbnRlbnQiLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJwcmV2aW91c1NlbGVjdGlvbiIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNGb2N1c2VkIiwiaXNSZWFkT25seSIsImdldFVuZG9CdWZmZXIiLCJzZXRGb2N1c2VkIiwic2V0UmVhZE9ubHkiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImlzQWN0aXZlIiwiYWN0aXZlIiwiaGFzQ2xhc3MiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNsaWNlIiwiY29udGVudFByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsInJlZG8iLCJ1bmRvIiwiZnJvbU9wZXJhdGlvbiIsInRyYW5zZm9ybSIsInRyYW5zZm9ybWVkQ29udGVudCIsInRyYW5zZm9ybUNvbnRlbnQiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsImFjdGl2YXRlIiwib24iLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJJTlBVVF9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsImRvY3VtZW50IiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJvbkJsdXIiLCJvbkZvY3VzIiwib25TY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJ1cGRhdGVJbml0aWFsU3RhdGUiLCJ3aWxsVW5tb3VudCIsIm9mZkJsdXIiLCJvZmZGb2N1cyIsIm9mZlNjcm9sbCIsIm9mZkNoYW5nZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiaW5pdGlhbGlzZSIsImZyb21DbGFzcyIsIkNsYXNzIiwiRWxlbWVudCIsIlVuZG9CdWZmZXIiLCJmcm9tTm90aGluZyIsInJpY2hUZXh0YXJlYSIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwicHJvdG90eXBlIiwiZXZlbnRNaXhpbnMiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzswREFDQzsyREFDSTsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDUjswQkFXZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1QixJQUFBLEFBQU1BLDZCQTBoQnBCLEFBMWhCYztjQUFNQTs4QkFBQUE7YUFBQUEsYUFDUEMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsVUFBVTs4QkFEaENKOztrQ0FFWEM7UUEyQlJJLCtDQUFBQSxjQUFhLFNBQUNDLE9BQU9DLFNBQVk7WUFDL0IsSUFBTUMsWUFB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
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCwgZXZlbnRUeXBlcyB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBldmVudE1peGlucyBmcm9tIFwiLi9taXhpbnMvZXZlbnRcIjtcclxuXHJcbmNvbnN0IHsgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICBTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJpY2hUZXh0YXJlYSBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHNlbGVjdG9yLCBmb2N1c2VkLCByZWFkT25seSkge1xyXG4gICAgc3VwZXIoc2VsZWN0b3IpO1xyXG5cclxuICAgIHRoaXMuZm9jdXNlZCA9IGZvY3VzZWQ7XHJcbiAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBpc0ZvY3VzZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkT25seSgpIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRPbmx5O1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgc2VsZWN0aW9uQ2hhbmdlZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0bWVudUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2VIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnRlcm1lZGlhdGVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSwgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpKSA9PiB7XHJcbiAgICAvLyBpZiAodGhpcy5yZWFkT25seSkge1xyXG4gICAgLy8gICBjb25zdCBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgLy8gICAgICAgICBjb250ZW50ID0gcHJldmlvdXNDb250ZW50OyAgLy8vXHJcbiAgICAvL1xyXG4gICAgLy8gICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpO1xyXG5cclxuICAgIGlmIChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgbGV0IHsgZWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcjtcclxuXHJcbiAgICAgIGNvbnN0IHsgaGFuZGxlciB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgaGFuZGxlckVsZW1lbnQgPSBlbGVtZW50OyAvLy9cclxuXHJcbiAgICAgIGVsZW1lbnQgPSB0aGlzOyAvLy9cclxuXHJcbiAgICAgIGlmICggKGhhbmRsZXIgIT09IHRoaXMuaW5wdXRIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zY3JvbGxIYW5kbGVyKVxyXG4gICAgICAgICYmIChoYW5kbGVyICE9PSB0aGlzLmNvbnRleHRtZW51SGFuZGxlcilcclxuICAgICAgICAmJiAoaGFuZGxlciAhPT0gdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKSApIHtcclxuXHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGVudCgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgdmFsdWUgfSA9IGRvbUVsZW1lbnQsXHJcbiAgICAgICAgICBjb250ZW50ID0gdmFsdWU7ICAvLy9cclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IFNlbGVjdGlvbi5mcm9tRE9NRWxlbWVudChkb21FbGVtZW50KTtcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRDb250ZW50KCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHNlbGVjdGVkQ29udGVudCA9IGNvbnRlbnQuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gcHJldmlvdXNDb250ZW50KSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gIWNvbnRlbnRQcmV2aW91c0NvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gIXNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uQ2hhbmdlZDtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCwgc2V0UHJldmlvdXNDb250ZW50ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2V0UHJldmlvdXNDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMub24oSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9uKFNFTEVDVElPTkNIQU5HRV9FVkVOVF9UWVBFLCB0aGlzLnNlbGVjdENoYW5nZUhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzQ29udGVudFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIHByZXZpb3VzU2VsZWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlOyAvLy9cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUluaXRpYWxTdGF0ZSgpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkJsdXIsIG9uRm9jdXMsIG9uU2Nyb2xsLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1ciwgLy8vXHJcbiAgICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2U7IC8vL1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG5cclxuICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb247ICAvLy9cclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXNlKCkge1xyXG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uQmx1clwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uU2Nyb2xsXCIsXHJcbiAgICBcIm9uQ2hhbmdlXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGZyb21DbGFzcyhDbGFzcywgcHJvcGVydGllcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBmb2N1c2VkID0gZmFsc2UsXHJcbiAgICAgICAgICByZWFkT25seSA9IGZhbHNlLFxyXG4gICAgICAgICAgcmljaFRleHRhcmVhID0gRWxlbWVudC5mcm9tQ2xhc3MoQ2xhc3MsIHByb3BlcnRpZXMsIGZvY3VzZWQsIHJlYWRPbmx5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xyXG5cclxuICAgIHJldHVybiByaWNoVGV4dGFyZWE7XHJcbiAgfVxyXG59XHJcblxyXG5PYmplY3QuYXNzaWduKFJpY2hUZXh0YXJlYS5wcm90b3R5cGUsIGV2ZW50TWl4aW5zKTtcclxuXHJcbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcclxuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJCTFVSX0VWRU5UX1RZUEUiLCJldmVudFR5cGVzIiwiSU5QVVRfRVZFTlRfVFlQRSIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJDSEFOR0VfRVZFTlRfVFlQRSIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3RvciIsImZvY3VzZWQiLCJyZWFkT25seSIsImlucHV0SGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImludGVybWVkaWF0ZUhhbmRsZXIiLCJibHVySGFuZGxlciIsImV2ZW50VHlwZSIsInNlbGVjdGlvbkNoYW5nZWQiLCJmb2N1c0hhbmRsZXIiLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJjYWxsSGFuZGxlcnMiLCJjb250ZXh0bWVudUhhbmRsZXIiLCJwcmV2ZW50RGVmYXVsdCIsInNlbGVjdENoYW5nZUhhbmRsZXIiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudCIsImdldENvbnRlbnQiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJzZXRGb2N1c2VkIiwic2V0UmVhZE9ubHkiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImlzQWN0aXZlIiwiYWN0aXZlIiwiaGFzQ2xhc3MiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInZhbHVlIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJnZXRTZWxlY3RlZENvbnRlbnQiLCJlbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzdGFydCIsImVuZCIsInNlbGVjdGVkQ29udGVudCIsInNsaWNlIiwiZ2V0UHJldmlvdXNDb250ZW50IiwiY29udGVudFByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJzZXRDb250ZW50IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZXRTZWxlY3Rpb25SYW5nZSIsImFjdGl2YXRlIiwib24iLCJkb2N1bWVudCIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwiZ2V0U3RhdGUiLCJ1cGRhdGVTdGF0ZSIsImRpZE1vdW50IiwicHJvcGVydGllcyIsIm9uQmx1ciIsIm9uRm9jdXMiLCJvblNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsInVwZGF0ZUluaXRpYWxTdGF0ZSIsIndpbGxVbm1vdW50Iiwib2ZmQmx1ciIsIm9mZkZvY3VzIiwib2ZmU2Nyb2xsIiwib2ZmQ2hhbmdlIiwic2V0SW5pdGlhbFN0YXRlIiwic2V0U3RhdGUiLCJpbml0aWFsaXNlIiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJwcm90b3R5cGUiLCJldmVudE1peGlucyIsImZ1bmMiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQWNxQkE7OztvQkFaeUI7OERBRXhCOzBEQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEIsSUFBUUMsa0JBSytCQyxnQkFBVSxDQUx6Q0QsaUJBQ0FFLG1CQUkrQkQsZ0JBQVUsQ0FKekNDLGtCQUNBQyxtQkFHK0JGLGdCQUFVLENBSHpDRSxrQkFDQUMsb0JBRStC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