easy-richtextarea 3.0.123 → 3.0.125

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.
@@ -204,7 +204,59 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
204
204
  var _super = _createSuper(RichTextarea);
205
205
  function RichTextarea() {
206
206
  _classCallCheck(this, RichTextarea);
207
- return _super.apply(this, arguments);
207
+ var _this;
208
+ _this = _super.apply(this, arguments);
209
+ _defineProperty(_assertThisInitialized(_this), "intermediateHandler", function(event, element, eventType, forced) {
210
+ var changed = _this.hasChanged();
211
+ if (changed || forced) {
212
+ _this.callHandlers(eventType, event, element);
213
+ }
214
+ var content = _this.getContent(), selection = _this.getSelection(), previousContent = content, previousSelection = selection; ///
215
+ _this.setPreviousContent(previousContent);
216
+ _this.setPreviousSelection(previousSelection);
217
+ });
218
+ _defineProperty(_assertThisInitialized(_this), "mouseUpHandler", function(event, element) {
219
+ var mouseDown = false;
220
+ _this.setMouseDown(mouseDown);
221
+ });
222
+ _defineProperty(_assertThisInitialized(_this), "mouseDownHandler", function(event, element) {
223
+ var forced = false, mouseDown = true, eventType = CHANGE_EVENT_TYPE;
224
+ _this.setMouseDown(mouseDown);
225
+ defer(function() {
226
+ return _this.intermediateHandler(event, element, eventType, forced);
227
+ });
228
+ });
229
+ _defineProperty(_assertThisInitialized(_this), "mouseMoveHandler", function(event, element) {
230
+ var forced = false, mouseDown = _this.isMouseDown(), eventTYpe = CHANGE_EVENT_TYPE;
231
+ if (mouseDown) {
232
+ _this.intermediateHandler(event, element, eventTYpe, forced);
233
+ }
234
+ });
235
+ _defineProperty(_assertThisInitialized(_this), "keyDownHandler", function(event, element) {
236
+ var forced = false, eventType = CHANGE_EVENT_TYPE;
237
+ defer(function() {
238
+ return _this.intermediateHandler(event, element, eventType, forced);
239
+ });
240
+ });
241
+ _defineProperty(_assertThisInitialized(_this), "inputHandler", function(event, element) {
242
+ var forced = false, eventType = CHANGE_EVENT_TYPE;
243
+ _this.intermediateHandler(event, element, eventType, forced);
244
+ });
245
+ _defineProperty(_assertThisInitialized(_this), "scrollHandler", function(event, element) {
246
+ var eventType = SCROLL_EVENT_TYPE;
247
+ _this.callHandlers(eventType, event, element);
248
+ });
249
+ _defineProperty(_assertThisInitialized(_this), "focusHandler", function(event, element) {
250
+ var forced = true, eventType = FOCUS_EVENT_TYPE;
251
+ defer(function() {
252
+ return _this.intermediateHandler(event, element, eventType, forced);
253
+ });
254
+ });
255
+ _defineProperty(_assertThisInitialized(_this), "blurHandler", function(event, element) {
256
+ var forced = true, eventType = BLUR_EVENT_TYPE;
257
+ _this.intermediateHandler(event, element, eventType, forced);
258
+ });
259
+ return _this;
208
260
  }
209
261
  _createClass(RichTextarea, [
210
262
  {
@@ -381,86 +433,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
381
433
  this.removeEventListener(eventType, handler, element);
382
434
  }
383
435
  },
384
- {
385
- key: "mouseUpHandler",
386
- value: function mouseUpHandler(event, element) {
387
- var mouseDown = false;
388
- this.setMouseDown(mouseDown);
389
- }
390
- },
391
- {
392
- key: "mouseDownHandler",
393
- value: function mouseDownHandler(event, element) {
394
- var _this = this;
395
- var forced = false, mouseDown = true, eventType = CHANGE_EVENT_TYPE;
396
- this.setMouseDown(mouseDown);
397
- defer(function() {
398
- return _this.intermediateHandler(event, element, eventType, forced);
399
- });
400
- }
401
- },
402
- {
403
- key: "mouseMoveHandler",
404
- value: function mouseMoveHandler(event, element) {
405
- var forced = false, mouseDown = this.isMouseDown(), eventTYpe = CHANGE_EVENT_TYPE;
406
- if (mouseDown) {
407
- this.intermediateHandler(event, element, eventTYpe, forced);
408
- }
409
- }
410
- },
411
- {
412
- key: "keyDownHandler",
413
- value: function keyDownHandler(event, element) {
414
- var _this = this;
415
- var forced = false, eventType = CHANGE_EVENT_TYPE;
416
- defer(function() {
417
- return _this.intermediateHandler(event, element, eventType, forced);
418
- });
419
- }
420
- },
421
- {
422
- key: "inputHandler",
423
- value: function inputHandler(event, element) {
424
- var forced = false, eventType = CHANGE_EVENT_TYPE;
425
- this.intermediateHandler(event, element, eventType, forced);
426
- }
427
- },
428
- {
429
- key: "scrollHandler",
430
- value: function scrollHandler(event, element) {
431
- var eventType = SCROLL_EVENT_TYPE;
432
- this.callHandlers(eventType, event, element);
433
- }
434
- },
435
- {
436
- key: "focusHandler",
437
- value: function focusHandler(event, element) {
438
- var _this = this;
439
- var forced = true, eventType = FOCUS_EVENT_TYPE;
440
- defer(function() {
441
- return _this.intermediateHandler(event, element, eventType, forced);
442
- });
443
- }
444
- },
445
- {
446
- key: "blurHandler",
447
- value: function blurHandler(event, element) {
448
- var forced = true, eventType = BLUR_EVENT_TYPE;
449
- this.intermediateHandler(event, element, eventType, forced);
450
- }
451
- },
452
- {
453
- key: "intermediateHandler",
454
- value: function intermediateHandler(event, element, eventType, forced) {
455
- var changed = this.hasChanged();
456
- if (changed || forced) {
457
- this.callHandlers(eventType, event, element);
458
- }
459
- var content = this.getContent(), selection = this.getSelection(), previousContent = content, previousSelection = selection; ///
460
- this.setPreviousContent(previousContent);
461
- this.setPreviousSelection(previousSelection);
462
- }
463
- },
464
436
  {
465
437
  key: "callHandlers",
466
438
  value: function callHandlers(eventType) {
@@ -575,4 +547,4 @@ _defineProperty(RichTextarea, "defaultProperties", {
575
547
  className: "rich"
576
548
  });
577
549
 
578
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyB3aW5kb3csIEVsZW1lbnQsIGV2ZW50VHlwZXMgfSBmcm9tIFwiZWFzeVwiO1xyXG5cclxuaW1wb3J0IFNlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb25cIlxyXG5cclxuY29uc3QgeyBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRVVQX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIE1PVVNFRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRU1PVkVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmNvbnN0IGRlZmVyID0gKGZ1bmMpID0+IHNldFRpbWVvdXQoZnVuYywgMCk7IC8vL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRhcmVhIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBpc1JlYWRPbmx5KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyByZWFkT25seSB9ID0gZG9tRWxlbWVudDtcclxuICAgIFxyXG4gICAgcmV0dXJuIHJlYWRPbmx5OyBcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHJlYWRPbmx5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldENvbnRlbnQoY29udGVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHZhbHVlXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbikge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgc2VsZWN0aW9uU3RhcnQsXHJcbiAgICAgIHNlbGVjdGlvbkVuZFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc01vdXNlRG93bigpIHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZSgpLFxyXG4gICAgICAgICAgeyBtb3VzZURvd24gfSA9IHN0YXRlO1xyXG5cclxuICAgIHJldHVybiBtb3VzZURvd247XHJcbiAgfVxyXG5cclxuICBoYXNDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudENoYW5nZWQgPSB0aGlzLmhhc0NvbnRlbnRDaGFuZ2VkKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gdGhpcy5oYXNTZWxlY3Rpb25DaGFuZ2VkKCksXHJcbiAgICAgICAgICBjaGFuZ2VkID0gKGNvbnRlbnRDaGFuZ2VkIHx8IHNlbGVjdGlvbkNoYW5nZWQpO1xyXG5cclxuICAgIHJldHVybiBjaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzQ29udGVudENoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSB0aGlzLmdldFByZXZpb3VzQ29udGVudCgpLFxyXG4gICAgICAgICAgY29udGVudERpZmZlcmVudFRvUHJldmlvdXNDb250ZW50ID0gKGNvbnRlbnQgIT09IHByZXZpb3VzQ29udGVudCksXHJcbiAgICAgICAgICBjb250ZW50Q2hhbmdlZCA9IGNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudDsgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRDaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuZ2V0UHJldmlvdXNTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkRpZmZlcmVudFRvUHJldmlvdXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24uaXNEaWZmZXJlbnRUbyhwcmV2aW91c1NlbGVjdGlvbiksXHJcbiAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gc2VsZWN0aW9uRGlmZmVyZW50VG9QcmV2aW91c1NlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbkNoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIGNvbnN0IG1vdXNlRG93biA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcblxyXG4gICAgd2luZG93Lm9uKGAke0JMVVJfRVZFTlRfVFlQRX0gJHtNT1VTRVVQX0VWRU5UX1RZUEV9ICR7Q09OVEVYVE1FTlVfRVZFTlRfVFlQRX1gLCB0aGlzLm1vdXNlVXBIYW5kbGVyLCB0aGlzKTsgLy8vXHJcblxyXG4gICAgdGhpcy5vbihNT1VTRURPV05fRVZFTlRfVFlQRSwgdGhpcy5tb3VzZURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKE1PVVNFTU9WRV9FVkVOVF9UWVBFLCB0aGlzLm1vdXNlTW92ZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oS0VZRE9XTl9FVkVOVF9UWVBFLCB0aGlzLmtleURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oRk9DVVNfRVZFTlRfVFlQRSwgdGhpcy5mb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub24oQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgZGVhY3RpdmF0ZSgpIHtcclxuICAgIGNvbnN0IG1vdXNlRG93biA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcblxyXG4gICAgd2luZG93Lm9mZihgJHtCTFVSX0VWRU5UX1RZUEV9ICR7TU9VU0VVUF9FVkVOVF9UWVBFfSAke0NPTlRFWFRNRU5VX0VWRU5UX1RZUEV9YCwgdGhpcy5tb3VzZVVwSGFuZGxlciwgdGhpcyk7IC8vL1xyXG5cclxuICAgIHRoaXMub2ZmKE1PVVNFRE9XTl9FVkVOVF9UWVBFLCB0aGlzLm1vdXNlRG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKE1PVVNFTU9WRV9FVkVOVF9UWVBFLCB0aGlzLm1vdXNlTW92ZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoSU5QVVRfRVZFTlRfVFlQRSwgdGhpcy5pbnB1dEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKFNDUk9MTF9FVkVOVF9UWVBFLCB0aGlzLnNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihCTFVSX0VWRU5UX1RZUEUsIHRoaXMuYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmQmx1cihibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZGb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBtb3VzZVVwSGFuZGxlcihldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgbW91c2VEb3duID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRNb3VzZURvd24obW91c2VEb3duKTtcclxuICB9O1xyXG5cclxuICBtb3VzZURvd25IYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSBmYWxzZSxcclxuICAgICAgICAgIG1vdXNlRG93biA9IHRydWUsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIG1vdXNlTW92ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgbW91c2VEb3duID0gdGhpcy5pc01vdXNlRG93bigpLFxyXG4gICAgICAgICAgZXZlbnRUWXBlID0gQ0hBTkdFX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgaWYgKG1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VFlwZSwgZm9yY2VkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGtleURvd25IYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSBmYWxzZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlcihldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZm9yY2VkID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgZm9yY2VkKTtcclxuICB9XHJcblxyXG4gIHNjcm9sbEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRTtcclxuXHJcbiAgICBkZWZlcigoKSA9PiB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgZm9yY2VkKSk7XHJcbiAgfVxyXG5cclxuICBibHVySGFuZGxlcihldmVudCwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZm9yY2VkID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgZm9yY2VkKTtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgZm9yY2VkKSB7XHJcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5oYXNDaGFuZ2VkKCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZWQgfHwgZm9yY2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNhbGxIYW5kbGVycyhldmVudFR5cGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xyXG4gICAgY29uc3QgZXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmZpbmRFdmVudExpc3RlbmVycyhldmVudFR5cGUpO1xyXG5cclxuICAgIGV2ZW50TGlzdGVuZXJzLmZvckVhY2goKGV2ZW50TGlzdGVuZXIpID0+IHtcclxuICAgICAgY29uc3QgeyBoYW5kbGVyLCBlbGVtZW50OiBoYW5kbGVyRWxlbWVudCB9ID0gZXZlbnRMaXN0ZW5lcixcclxuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXM7IC8vL1xyXG5cclxuICAgICAgaWYgKChoYW5kbGVyICE9PSB0aGlzLmJsdXJIYW5kbGVyKSAmJiAoaGFuZGxlciAhPT0gdGhpcy5mb2N1c0hhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLnNjcm9sbEhhbmRsZXIpKSB7XHJcbiAgICAgICAgaGFuZGxlci5jYWxsKGhhbmRsZXJFbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzQ29udGVudCgpIHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZSgpLFxyXG4gICAgICAgICAgeyBwcmV2aW91c0NvbnRlbnQgfSA9IHN0YXRlO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZSgpLFxyXG4gICAgICAgICAgeyBwcmV2aW91c1NlbGVjdGlvbiB9ID0gc3RhdGU7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0TW91c2VEb3duKG1vdXNlRG93bikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIG1vdXNlRG93blxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgbW91c2VEb3duID0gZmFsc2UsXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBudWxsLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBtb3VzZURvd24sXHJcbiAgICAgIHByZXZpb3VzQ29udGVudCxcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGFjdGl2ZSwgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9uQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3aWxsVW5tb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25DaGFuZ2VcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkJsdXJcIixcclxuICAgIFwiYWN0aXZlXCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxufVxyXG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsIkJMVVJfRVZFTlRfVFlQRSIsImV2ZW50VHlwZXMiLCJJTlBVVF9FVkVOVF9UWVBFIiwiRk9DVVNfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiU0NST0xMX0VWRU5UX1RZUEUiLCJLRVlET1dOX0VWRU5UX1RZUEUiLCJNT1VTRVVQX0VWRU5UX1RZUEUiLCJNT1VTRURPV05fRVZFTlRfVFlQRSIsIk1PVVNFTU9WRV9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsImRlZmVyIiwiZnVuYyIsInNldFRpbWVvdXQiLCJpc0FjdGl2ZSIsImFjdGl2ZSIsImhhc0NsYXNzIiwiaXNSZWFkT25seSIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwicmVhZE9ubHkiLCJnZXRDb250ZW50IiwidmFsdWUiLCJjb250ZW50IiwiZ2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uIiwiU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJzZXRSZWFkT25seSIsIk9iamVjdCIsImFzc2lnbiIsInNldENvbnRlbnQiLCJwcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInByZXZpb3VzU2VsZWN0aW9uIiwic2V0UHJldmlvdXNTZWxlY3Rpb24iLCJpc01vdXNlRG93biIsInN0YXRlIiwiZ2V0U3RhdGUiLCJtb3VzZURvd24iLCJoYXNDaGFuZ2VkIiwiY29udGVudENoYW5nZWQiLCJoYXNDb250ZW50Q2hhbmdlZCIsInNlbGVjdGlvbkNoYW5nZWQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY2hhbmdlZCIsImdldFByZXZpb3VzQ29udGVudCIsImNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uRGlmZmVyZW50VG9QcmV2aW91c1NlbGVjdGlvbiIsImlzRGlmZmVyZW50VG8iLCJhY3RpdmF0ZSIsInNldE1vdXNlRG93biIsIndpbmRvdyIsIm9uIiwibW91c2VVcEhhbmRsZXIiLCJtb3VzZURvd25IYW5kbGVyIiwibW91c2VNb3ZlSGFuZGxlciIsImtleURvd25IYW5kbGVyIiwiaW5wdXRIYW5kbGVyIiwic2Nyb2xsSGFuZGxlciIsImZvY3VzSGFuZGxlciIsImJsdXJIYW5kbGVyIiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJvbkJsdXIiLCJlbGVtZW50IiwiZXZlbnRUeXBlIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvZmZCbHVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uRm9jdXMiLCJvZmZGb2N1cyIsIm9uU2Nyb2xsIiwib2ZmU2Nyb2xsIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwib2ZmQ2hhbmdlIiwiZXZlbnQiLCJmb3JjZWQiLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZXZlbnRUWXBlIiwiY2FsbEhhbmRsZXJzIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsInVwZGF0ZVN0YXRlIiwic2V0SW5pdGlhbFN0YXRlIiwic2V0U3RhdGUiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJ3aWxsVW5tb3VudCIsImluaXRpYWxpc2UiLCJFbGVtZW50IiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7OztlQW1CUUEsWUFBWTs7O29CQWpCVyxNQUFNOzhEQUU1QixhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkMsSUFBUUMsZUFBZSxHQVNhQyxLQUFVLFdBQUEsQ0FUdENELGVBQWUsRUFDZEUsZ0JBQWdCLEdBUVdELEtBQVUsV0FBQSxDQVJyQ0MsZ0JBQWdCLEVBQ2hCQyxnQkFBZ0IsR0FPV0YsS0FBVSxXQUFBLENBUHJDRSxnQkFBZ0IsRUFDaEJDLGlCQUFpQixHQU1VSCxLQUFVLFdBQUEsQ0FOckNHLGlCQUFpQixFQUNqQkMsaUJBQWlCLEdB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
550
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyB3aW5kb3csIEVsZW1lbnQsIGV2ZW50VHlwZXMgfSBmcm9tIFwiZWFzeVwiO1xyXG5cclxuaW1wb3J0IFNlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb25cIlxyXG5cclxuY29uc3QgeyBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRVVQX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIE1PVVNFRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRU1PVkVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmNvbnN0IGRlZmVyID0gKGZ1bmMpID0+IHNldFRpbWVvdXQoZnVuYywgMCk7IC8vL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRhcmVhIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpID0+IHtcclxuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLmhhc0NoYW5nZWQoKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCB8fCBmb3JjZWQpIHtcclxuICAgICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgbW91c2VVcEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1vdXNlRG93biA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcbiAgfTtcclxuXHJcbiAgbW91c2VEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZm9yY2VkID0gZmFsc2UsXHJcbiAgICAgICAgbW91c2VEb3duID0gdHJ1ZSxcclxuICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIG1vdXNlTW92ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgIG1vdXNlRG93biA9IHRoaXMuaXNNb3VzZURvd24oKSxcclxuICAgICAgICBldmVudFRZcGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICBpZiAobW91c2VEb3duKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUWXBlLCBmb3JjZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZm9yY2VkID0gZmFsc2UsXHJcbiAgICAgICAgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIGZvcmNlZCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGZvY3VzSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZm9yY2VkID0gdHJ1ZSxcclxuICAgICAgICBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSB0cnVlLFxyXG4gICAgICAgIGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIGV2ZW50VHlwZSwgZm9yY2VkKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKCkge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5oYXNDbGFzcyhcImFjdGl2ZVwiKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkT25seSgpIHtcclxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKSxcclxuICAgICAgICAgIHsgcmVhZE9ubHkgfSA9IGRvbUVsZW1lbnQ7XHJcbiAgICBcclxuICAgIHJldHVybiByZWFkT25seTsgXHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyB2YWx1ZSB9ID0gZG9tRWxlbWVudCxcclxuICAgICAgICAgIGNvbnRlbnQgPSB2YWx1ZTsgIC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRSZWFkT25seShyZWFkT25seSkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICByZWFkT25seVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb24pIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHNlbGVjdGlvblN0YXJ0LFxyXG4gICAgICBzZWxlY3Rpb25FbmRcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNNb3VzZURvd24oKSB7XHJcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKSxcclxuICAgICAgICAgIHsgbW91c2VEb3duIH0gPSBzdGF0ZTtcclxuXHJcbiAgICByZXR1cm4gbW91c2VEb3duO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICByZXR1cm4gY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudCA9IChjb250ZW50ICE9PSBwcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSBjb250ZW50RGlmZmVyZW50VG9QcmV2aW91c0NvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLmdldFByZXZpb3VzU2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25EaWZmZXJlbnRUb1ByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRGlmZmVyZW50VG8ocHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHNlbGVjdGlvbkRpZmZlcmVudFRvUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vbihgJHtCTFVSX0VWRU5UX1RZUEV9ICR7TU9VU0VVUF9FVkVOVF9UWVBFfSAke0NPTlRFWFRNRU5VX0VWRU5UX1RZUEV9YCwgdGhpcy5tb3VzZVVwSGFuZGxlciwgdGhpcyk7IC8vL1xyXG5cclxuICAgIHRoaXMub24oTU9VU0VET1dOX0VWRU5UX1RZUEUsIHRoaXMubW91c2VEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vZmYoYCR7QkxVUl9FVkVOVF9UWVBFfSAke01PVVNFVVBfRVZFTlRfVFlQRX0gJHtDT05URVhUTUVOVV9FVkVOVF9UWVBFfWAsIHRoaXMubW91c2VVcEhhbmRsZXIsIHRoaXMpOyAvLy9cclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRURPV05fRVZFTlRfVFlQRSwgdGhpcy5tb3VzZURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBjb25zdCB7IGhhbmRsZXIsIGVsZW1lbnQ6IGhhbmRsZXJFbGVtZW50IH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCksXHJcbiAgICAgICAgICB7IHByZXZpb3VzQ29udGVudCB9ID0gc3RhdGU7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzQ29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCksXHJcbiAgICAgICAgICB7IHByZXZpb3VzU2VsZWN0aW9uIH0gPSBzdGF0ZTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXNTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRNb3VzZURvd24obW91c2VEb3duKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgbW91c2VEb3duXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xyXG4gICAgICBwcmV2aW91c0NvbnRlbnRcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsU3RhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IG51bGwsXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIG1vdXNlRG93bixcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgYWN0aXZlLCBvbkNoYW5nZSwgb25TY3JvbGwsIG9uRm9jdXMsIG9uQmx1ciB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICBjaGFuZ2VIYW5kbGVyID0gb25DaGFuZ2UsIC8vL1xyXG4gICAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXI7IC8vL1xyXG5cclxuICAgIGNoYW5nZUhhbmRsZXIgJiYgdGhpcy5vbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9uRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb25TY3JvbGwsIG9uRm9jdXMsIG9uQmx1ciB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9mZkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9mZkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGlzZSgpIHtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdGFnTmFtZSA9IFwidGV4dGFyZWFcIjtcclxuXHJcbiAgc3RhdGljIGlnbm9yZWRQcm9wZXJ0aWVzID0gW1xyXG4gICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgXCJvblNjcm9sbFwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uQmx1clwiLFxyXG4gICAgXCJhY3RpdmVcIlxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG59XHJcbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiUmljaFRleHRhcmVhIiwiQkxVUl9FVkVOVF9UWVBFIiwiZXZlbnRUeXBlcyIsIklOUFVUX0VWRU5UX1RZUEUiLCJGT0NVU19FVkVOVF9UWVBFIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJTQ1JPTExfRVZFTlRfVFlQRSIsIktFWURPV05fRVZFTlRfVFlQRSIsIk1PVVNFVVBfRVZFTlRfVFlQRSIsIk1PVVNFRE9XTl9FVkVOVF9UWVBFIiwiTU9VU0VNT1ZFX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiZGVmZXIiLCJmdW5jIiwic2V0VGltZW91dCIsImludGVybWVkaWF0ZUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJldmVudFR5cGUiLCJmb3JjZWQiLCJjaGFuZ2VkIiwiaGFzQ2hhbmdlZCIsImNhbGxIYW5kbGVycyIsImNvbnRlbnQiLCJnZXRDb250ZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwicHJldmlvdXNDb250ZW50IiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsIm1vdXNlVXBIYW5kbGVyIiwibW91c2VEb3duIiwic2V0TW91c2VEb3duIiwibW91c2VEb3duSGFuZGxlciIsIm1vdXNlTW92ZUhhbmRsZXIiLCJpc01vdXNlRG93biIsImV2ZW50VFlwZSIsImtleURvd25IYW5kbGVyIiwiaW5wdXRIYW5kbGVyIiwic2Nyb2xsSGFuZGxlciIsImZvY3VzSGFuZGxlciIsImJsdXJIYW5kbGVyIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImlzUmVhZE9ubHkiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInJlYWRPbmx5IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsInNldFJlYWRPbmx5IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0Q29udGVudCIsInNldFNlbGVjdGlvbiIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic3RhdGUiLCJnZXRTdGF0ZSIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImdldFByZXZpb3VzQ29udGVudCIsImNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzU2VsZWN0aW9uIiwic2VsZWN0aW9uRGlmZmVyZW50VG9QcmV2aW91c1NlbGVjdGlvbiIsImlzRGlmZmVyZW50VG8iLCJhY3RpdmF0ZSIsIndpbmRvdyIsIm9uIiwiYWRkQ2xhc3MiLCJkZWFjdGl2YXRlIiwib2ZmIiwicmVtb3ZlQ2xhc3MiLCJvbkJsdXIiLCJoYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9mZkJsdXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25Gb2N1cyIsIm9mZkZvY3VzIiwib25TY3JvbGwiLCJvZmZTY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvZmZDaGFuZ2UiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJldmVudExpc3RlbmVycyIsImZpbmRFdmVudExpc3RlbmVycyIsImZvckVhY2giLCJldmVudExpc3RlbmVyIiwiaGFuZGxlckVsZW1lbnQiLCJjYWxsIiwidXBkYXRlU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJzZXRTdGF0ZSIsImRpZE1vdW50IiwicHJvcGVydGllcyIsIndpbGxVbm1vdW50IiwiaW5pdGlhbGlzZSIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7O2VBbUJRQSxZQUFZOzs7b0JBakJXLE1BQU07OERBRTVCLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuQyxJQUFRQyxlQUFlLEdBU2FDLEtBQVUsV0FBQSxDQVR0Q0QsZUFBZSxFQUNkRSxnQkFBZ0IsR0FRV0QsS0FBVSxXQUFBLENBUnJDQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixHQU9XRixLQUFVLFdBQUEsQ0FQckNFLGdCQUFnQixFQUNoQkMsaUJBQWlCLEdBTVVILEtB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "3.0.123",
4
+ "version": "3.0.125",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/easy-richtextarea",
7
7
  "description": "A textarea element that handles and hands off events well.",
@@ -18,6 +18,82 @@ const { BLUR_EVENT_TYPE,
18
18
  const defer = (func) => setTimeout(func, 0); ///
19
19
 
20
20
  export default class RichTextarea extends Element {
21
+ intermediateHandler = (event, element, eventType, forced) => {
22
+ const changed = this.hasChanged();
23
+
24
+ if (changed || forced) {
25
+ this.callHandlers(eventType, event, element);
26
+ }
27
+
28
+ const content = this.getContent(),
29
+ selection = this.getSelection(),
30
+ previousContent = content, ///
31
+ previousSelection = selection; ///
32
+
33
+ this.setPreviousContent(previousContent);
34
+ this.setPreviousSelection(previousSelection);
35
+ }
36
+
37
+ mouseUpHandler = (event, element) => {
38
+ const mouseDown = false;
39
+
40
+ this.setMouseDown(mouseDown);
41
+ };
42
+
43
+ mouseDownHandler = (event, element) => {
44
+ const forced = false,
45
+ mouseDown = true,
46
+ eventType = CHANGE_EVENT_TYPE;
47
+
48
+ this.setMouseDown(mouseDown);
49
+
50
+ defer(() => this.intermediateHandler(event, element, eventType, forced));
51
+ }
52
+
53
+ mouseMoveHandler = (event, element) => {
54
+ const forced = false,
55
+ mouseDown = this.isMouseDown(),
56
+ eventTYpe = CHANGE_EVENT_TYPE;
57
+
58
+ if (mouseDown) {
59
+ this.intermediateHandler(event, element, eventTYpe, forced);
60
+ }
61
+ }
62
+
63
+ keyDownHandler = (event, element) => {
64
+ const forced = false,
65
+ eventType = CHANGE_EVENT_TYPE;
66
+
67
+ defer(() => this.intermediateHandler(event, element, eventType, forced));
68
+ }
69
+
70
+ inputHandler = (event, element) => {
71
+ const forced = false,
72
+ eventType = CHANGE_EVENT_TYPE;
73
+
74
+ this.intermediateHandler(event, element, eventType, forced);
75
+ }
76
+
77
+ scrollHandler = (event, element) => {
78
+ const eventType = SCROLL_EVENT_TYPE;
79
+
80
+ this.callHandlers(eventType, event, element);
81
+ }
82
+
83
+ focusHandler = (event, element) => {
84
+ const forced = true,
85
+ eventType = FOCUS_EVENT_TYPE;
86
+
87
+ defer(() => this.intermediateHandler(event, element, eventType, forced));
88
+ }
89
+
90
+ blurHandler = (event, element) => {
91
+ const forced = true,
92
+ eventType = BLUR_EVENT_TYPE;
93
+
94
+ this.intermediateHandler(event, element, eventType, forced);
95
+ }
96
+
21
97
  isActive() {
22
98
  const active = this.hasClass("active");
23
99
 
@@ -219,82 +295,6 @@ export default class RichTextarea extends Element {
219
295
  this.removeEventListener(eventType, handler, element);
220
296
  }
221
297
 
222
- mouseUpHandler(event, element) {
223
- const mouseDown = false;
224
-
225
- this.setMouseDown(mouseDown);
226
- };
227
-
228
- mouseDownHandler(event, element) {
229
- const forced = false,
230
- mouseDown = true,
231
- eventType = CHANGE_EVENT_TYPE;
232
-
233
- this.setMouseDown(mouseDown);
234
-
235
- defer(() => this.intermediateHandler(event, element, eventType, forced));
236
- }
237
-
238
- mouseMoveHandler(event, element) {
239
- const forced = false,
240
- mouseDown = this.isMouseDown(),
241
- eventTYpe = CHANGE_EVENT_TYPE;
242
-
243
- if (mouseDown) {
244
- this.intermediateHandler(event, element, eventTYpe, forced);
245
- }
246
- }
247
-
248
- keyDownHandler(event, element) {
249
- const forced = false,
250
- eventType = CHANGE_EVENT_TYPE;
251
-
252
- defer(() => this.intermediateHandler(event, element, eventType, forced));
253
- }
254
-
255
- inputHandler(event, element) {
256
- const forced = false,
257
- eventType = CHANGE_EVENT_TYPE;
258
-
259
- this.intermediateHandler(event, element, eventType, forced);
260
- }
261
-
262
- scrollHandler(event, element) {
263
- const eventType = SCROLL_EVENT_TYPE;
264
-
265
- this.callHandlers(eventType, event, element);
266
- }
267
-
268
- focusHandler(event, element) {
269
- const forced = true,
270
- eventType = FOCUS_EVENT_TYPE;
271
-
272
- defer(() => this.intermediateHandler(event, element, eventType, forced));
273
- }
274
-
275
- blurHandler(event, element) {
276
- const forced = true,
277
- eventType = BLUR_EVENT_TYPE;
278
-
279
- this.intermediateHandler(event, element, eventType, forced);
280
- }
281
-
282
- intermediateHandler(event, element, eventType, forced) {
283
- const changed = this.hasChanged();
284
-
285
- if (changed || forced) {
286
- this.callHandlers(eventType, event, element);
287
- }
288
-
289
- const content = this.getContent(),
290
- selection = this.getSelection(),
291
- previousContent = content, ///
292
- previousSelection = selection; ///
293
-
294
- this.setPreviousContent(previousContent);
295
- this.setPreviousSelection(previousSelection);
296
- }
297
-
298
298
  callHandlers(eventType, ...remainingArguments) {
299
299
  const eventListeners = this.findEventListeners(eventType);
300
300