easy-richtextarea 4.0.21 → 4.0.23

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.
@@ -240,22 +240,23 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
240
240
  event.preventDefault();
241
241
  });
242
242
  _defineProperty(_assertThisInitialized(_this), "keyDownHandler", function(event, element) {
243
- var keyCode = event.keyCode;
244
- if (keyCode === _keyCodes.Z_KEY_CODE) {
245
- var ctrlKey = event.ctrlKey, metaKey = event.metaKey;
246
- if (ctrlKey || metaKey) {
247
- var shiftKey = event.shiftKey;
248
- shiftKey ? _this.redo(event, element) : _this.undo(event, element);
249
- event.preventDefault();
250
- return;
251
- }
252
- }
253
- if (keyCode === _keyCodes.F_KEY_CODE) {
254
- var ctrlKey1 = event.ctrlKey, metaKey1 = event.metaKey;
255
- if (ctrlKey1 || metaKey1) {
256
- _this.find(event, element);
257
- event.preventDefault();
258
- return;
243
+ var ctrlKey = event.ctrlKey, metaKey = event.metaKey;
244
+ if (ctrlKey || metaKey) {
245
+ var keyCode = event.keyCode;
246
+ switch(keyCode){
247
+ case _keyCodes.F_KEY_CODE:
248
+ {
249
+ _this.find(event, element);
250
+ event.preventDefault();
251
+ return;
252
+ }
253
+ case _keyCodes.Z_KEY_CODE:
254
+ {
255
+ var shiftKey = event.shiftKey;
256
+ shiftKey ? _this.redo(event, element) : _this.undo(event, element);
257
+ event.preventDefault();
258
+ return;
259
+ }
259
260
  }
260
261
  }
261
262
  defer(function() {
@@ -700,4 +701,4 @@ function defer(func) {
700
701
  setTimeout(func, 0);
701
702
  }
702
703
 
703
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBURVhULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRl9LRVlfQ09ERSwgWl9LRVlfQ09ERSB9IGZyb20gXCIuL2tleUNvZGVzXCI7XHJcbmltcG9ydCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDT1BZX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGtleUNvZGUgPT09IFpfS0VZX0NPREUpIHtcclxuICAgICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkpIHtcclxuICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgc2hpZnRLZXkgP1xyXG4gICAgICAgICAgdGhpcy5yZWRvKGV2ZW50LCBlbGVtZW50KSA6XHJcbiAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChrZXlDb2RlID09PSBGX0tFWV9DT0RFKSB7XHJcbiAgICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgICBpZiAoY3RybEtleSB8fCBtZXRhS2V5KSB7XHJcbiAgICAgICAgdGhpcy5maW5kKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGZvY3VzSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBibHVySGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdW5kb2FibGUgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHBhc3RlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjbGlwYm9hcmREYXRhIH0gPSBldmVudCxcclxuICAgICAgICAgIHRleHREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFRFWFQpO1xyXG5cclxuICAgIGlmICh0ZXh0RGF0YSA9PT0gRU1QVFlfU1RSSU5HKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmICghc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0ZXh0RGF0YSwgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGluc2VydE9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBjb3B5SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gdGhpcy5wcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyh0aGlzLnByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCB1bmRvT3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICBpZiAodW5kb09wZXJhdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSB1bmRvT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnJldmVydChldmVudCwgZWxlbWVudCwgb3BlcmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZG8oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHJlZG9PcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIucmVkbygpO1xyXG5cclxuICAgIGlmIChyZWRvT3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHJlZG9PcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25GaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gZmluZEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZpbmQoZmluZEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBmaW5kSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uRmluZCwgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgb25TY3JvbGwgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbDsgLy8vXHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgZmluZEhhbmRsZXIgJiYgdGhpcy5vbkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsIHRoaXMuY29udGV4dG1lbnVIYW5kbGVyKTtcclxuXHJcbiAgICBkb2N1bWVudC5vbihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkZpbmQsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsOyAvLy9cclxuXHJcbiAgICBmaW5kSGFuZGxlciAmJiB0aGlzLm9mZkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uRmluZFwiLFxyXG4gICAgXCJvbkJsdXJcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgXCJvblNjcm9sbFwiLFxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbCxcclxuICAgICAgICAgIHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xyXG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsInNlbGVjdG9yIiwiZm9jdXNlZCIsInJlYWRPbmx5IiwidW5kb0J1ZmZlciIsInByZXZpb3VzQ29udGVudCIsInByZXZpb3VzU2VsZWN0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsInVuZG9hYmxlIiwiZXZlbnRUeXBlIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJjaGFuZ2VkIiwiY2FsbEhhbmRsZXJzIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJaX0tFWV9DT0RFIiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSIsInJlZG8iLCJ1bmRvIiwiRl9LRVlfQ09ERSIsImZpbmQiLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJTQ1JPTExfRVZFTlRfVFlQRSIsImZvY3VzSGFuZGxlciIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJibHVySGFuZGxlciIsIkJMVVJfRVZFTlRfVFlQRSIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwiZ2V0UHJldmlvdXNDb250ZW50IiwicHJldm91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNldEZvY3VzZWQiLCJzZXRSZWFkT25seSIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50Iiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiRklORF9FVkVOVF9UWVBFIiwidW5kb09wZXJhdGlvbiIsInJldmVydCIsInJlZG9PcGVyYXRpb24iLCJmcm9tT3BlcmF0aW9uIiwidHJhbnNmb3JtIiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtQ29udGVudCIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJhY3RpdmF0ZSIsIm9uIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwib25GaW5kIiwiZmluZEhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmRmluZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkJsdXIiLCJvZmZCbHVyIiwib25Gb2N1cyIsIm9mZkZvY3VzIiwib25TY3JvbGwiLCJvZmZTY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvZmZDaGFuZ2UiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiZG9jdW1lbnQiLCJTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzsyREFDSzsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDSTswQkFZSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLElBQUEsQUFBTUEsNkJBcWxCcEIsQUFybEJjO2NBQU1BOzhCQUFBQTthQUFBQSxhQUNQQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLGVBQWUsRUFBRUMsaUJBQWlCOzhCQURwRU47O2tDQUVYQztRQTZDUk0sK0NBQUFBLHVCQUFzQixTQUFDQyxPQUFPQyxTQUEyRztnQkFBbEdDLDRFQUFXLElBQUksRUFBRUMs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
704
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyBFbGVtZW50LCBkb2N1bWVudCB9IGZyb20gXCJlYXN5XCI7XHJcblxyXG5pbXBvcnQgU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvblwiXHJcbmltcG9ydCBVbmRvQnVmZmVyIGZyb20gXCIuL3VuZG9CdWZmZXJcIjtcclxuaW1wb3J0IEluc2VydE9wZXJhdGlvbiBmcm9tIFwiLi9vcGVyYXRpb24vaW5zZXJ0XCI7XHJcbmltcG9ydCBEZWxldGVPcGVyYXRpb24gZnJvbSBcIi4vb3BlcmF0aW9uL2RlbGV0ZVwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtQ29udGVudCBmcm9tIFwiLi90cmFuc2Zvcm0vY29udGVudFwiO1xyXG5pbXBvcnQgdHJhbnNmb3JtU2VsZWN0aW9uIGZyb20gXCIuL3RyYW5zZm9ybS9zZWxlY3Rpb25cIjtcclxuaW1wb3J0IGdlbmVyYXRlT3BlcmF0aW9ucyBmcm9tIFwiLi9vcGVyYXRpb25zL2dlbmVyYXRlXCI7XHJcblxyXG5pbXBvcnQgeyBURVhULCBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRl9LRVlfQ09ERSwgWl9LRVlfQ09ERSB9IGZyb20gXCIuL2tleUNvZGVzXCI7XHJcbmltcG9ydCB7IENVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDT1BZX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBQQVNURV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBJTlBVVF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBGT0NVU19FVkVOVF9UWVBFLFxyXG4gICAgICAgICBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0NST0xMX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEtFWURPV05fRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgU0VMRUNUSU9OQ0hBTkdFX0VWRU5UX1RZUEUgfSBmcm9tIFwiLi9ldmVudFR5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSaWNoVGV4dGFyZWEgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcihzZWxlY3RvciwgZm9jdXNlZCwgcmVhZE9ubHksIHVuZG9CdWZmZXIsIHByZXZpb3VzQ29udGVudCwgcHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHN1cGVyKHNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy51bmRvQnVmZmVyID0gdW5kb0J1ZmZlcjtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgaXNGb2N1c2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGlzUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkT25seTtcclxuICB9XHJcblxyXG4gIGdldFVuZG9CdWZmZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51bmRvQnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldm91c0NvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1NlbGVjdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXNlZChmb2N1c2VkKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVhZE9ubHkocmVhZE9ubHkpIHtcclxuICAgIHRoaXMucmVhZE9ubHkgPSByZWFkT25seTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzQ29udGVudChwcmV2aW91c0NvbnRlbnQpIHtcclxuICAgIHRoaXMucHJldmlvdXNDb250ZW50ID0gcHJldmlvdXNDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pIHtcclxuICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGludGVybWVkaWF0ZUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlID0gdHJ1ZSwgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsIHNlbGVjdGlvbkNoYW5nZWQgPSB0aGlzLmhhc1NlbGVjdGlvbkNoYW5nZWQoKSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJldmlvdXNDb250ZW50OyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnNldENvbnRlbnQoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodW5kb2FibGUpIHtcclxuICAgICAgaWYgKGNvbnRlbnRDaGFuZ2VkKSB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IGdlbmVyYXRlT3BlcmF0aW9ucyh0aGlzLnByZXZpb3VzQ29udGVudCwgY29udGVudCk7XHJcblxyXG4gICAgICAgIHRoaXMudW5kb0J1ZmZlci5hZGRPcGVyYXRpb25zKG9wZXJhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dG1lbnVIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGN0cmxLZXkgfHwgbWV0YUtleSkge1xyXG4gICAgICBjb25zdCB7IGtleUNvZGUgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgc3dpdGNoIChrZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSBGX0tFWV9DT0RFOiB7XHJcbiAgICAgICAgICB0aGlzLmZpbmQoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBaX0tFWV9DT0RFOiB7XHJcbiAgICAgICAgICBjb25zdCB7IHNoaWZ0S2V5IH0gPSBldmVudDtcclxuXHJcbiAgICAgICAgICBzaGlmdEtleSA/XHJcbiAgICAgICAgICAgIHRoaXMucmVkbyhldmVudCwgZWxlbWVudCkgOlxyXG4gICAgICAgICAgICAgIHRoaXMudW5kbyhldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGVmZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmNhbGxIYW5kbGVycyhldmVudFR5cGUsIGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGZvY3VzSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHJcbiAgICBkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVuZG9hYmxlID0gdHJ1ZSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUsIHNlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBibHVySGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgdW5kb2FibGUgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSwgZXZlbnRUeXBlLCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuICB9XHJcblxyXG4gIGlucHV0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHBhc3RlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBjbGlwYm9hcmREYXRhIH0gPSBldmVudCxcclxuICAgICAgICAgIHRleHREYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFRFWFQpO1xyXG5cclxuICAgIGlmICh0ZXh0RGF0YSA9PT0gRU1QVFlfU1RSSU5HKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW1wdHkgPSBzZWxlY3Rpb24uaXNFbXB0eSgpO1xyXG5cclxuICAgIGlmICghc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgICAgb3BlcmF0aW9uID0gZGVsZXRlT3BlcmF0aW9uO1xyXG5cclxuICAgICAgdGhpcy5hcHBseU9wZXJhdGlvbihvcGVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0ZXh0RGF0YSwgLy8vXHJcbiAgICAgICAgICBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGluc2VydE9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBjb3B5SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0SGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkVtcHR5ID0gc2VsZWN0aW9uLmlzRW1wdHkoKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uRW1wdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkQ29udGVudCA9IHRoaXMuZ2V0U2VsZWN0ZWRDb250ZW50KCk7XHJcblxyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc2VsZWN0ZWRDb250ZW50KTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSxcclxuICAgICAgICAgIG9wZXJhdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpO1xyXG5cclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZSgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaGFzQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgcmV0dXJuIGFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICB7IHZhbHVlIH0gPSBkb21FbGVtZW50LFxyXG4gICAgICAgICAgY29udGVudCA9IHZhbHVlOyAgLy8vXHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3Rpb24oKSB7XHJcbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCksXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbURPTUVsZW1lbnQoZG9tRWxlbWVudCk7XHJcblxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ29udGVudCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBzZWxlY3RlZENvbnRlbnQgPSBjb250ZW50LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBoYXNDb250ZW50Q2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnRQcmV2aW91c0NvbnRlbnQgPSAoY29udGVudCA9PT0gdGhpcy5wcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSAhY29udGVudFByZXZpb3VzQ29udGVudDtcclxuXHJcbiAgICByZXR1cm4gY29udGVudENoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICBoYXNTZWxlY3Rpb25DaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRXF1YWxUbyh0aGlzLnByZXZpb3VzU2VsZWN0aW9uKSxcclxuICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSAhc2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGRvbUVsZW1lbnQsIHtcclxuICAgICAgdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c0NvbnRlbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c0NvbnRlbnQgPSBjb250ZW50OyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGRvbUVsZW1lbnQgPSB0aGlzLmdldERPTUVsZW1lbnQoKTtcclxuXHJcbiAgICBkb21FbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xyXG5cclxuICAgIGlmIChzZXRQcmV2aW91c1NlbGVjdGlvbikge1xyXG4gICAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaW5kKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICB1bmRvKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCB1bmRvT3BlcmF0aW9uID0gdGhpcy51bmRvQnVmZmVyLnVuZG8oKTtcclxuXHJcbiAgICBpZiAodW5kb09wZXJhdGlvbiAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBvcGVyYXRpb24gPSB1bmRvT3BlcmF0aW9uOyAgLy8vXHJcblxyXG4gICAgICB0aGlzLnJldmVydChldmVudCwgZWxlbWVudCwgb3BlcmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZG8oZXZlbnQsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IHJlZG9PcGVyYXRpb24gPSB0aGlzLnVuZG9CdWZmZXIucmVkbygpO1xyXG5cclxuICAgIGlmIChyZWRvT3BlcmF0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHJlZG9PcGVyYXRpb247ICAvLy9cclxuXHJcbiAgICAgIHRoaXMucmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KGV2ZW50LCBlbGVtZW50LCBvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pLFxyXG4gICAgICAgICAgc2V0UHJldmlvdXNTZWxlY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5T3BlcmF0aW9uKG9wZXJhdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCB1bmRvYWJsZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0ob3BlcmF0aW9ucykge1xyXG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29udGVudCA9IHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCwgb3BlcmF0aW9ucyksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHRyYW5zZm9ybVNlbGVjdGlvbihzZWxlY3Rpb24sIG9wZXJhdGlvbnMpO1xyXG5cclxuICAgIGNvbnRlbnQgPSB0cmFuc2Zvcm1lZENvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHNlbGVjdGlvbiA9IHRyYW5zZm9ybWVkU2VsZWN0aW9uOyAvLy9cclxuXHJcbiAgICBjb25zdCBzZXRQcmV2aW91c0NvbnRlbnQgPSBmYWxzZSxcclxuICAgICAgICAgIHNldFByZXZpb3VzU2VsZWN0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQsIHNldFByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBzZXRQcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy51bmRvQnVmZmVyLnRyYW5zZm9ybShvcGVyYXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBldmVudCA9IG51bGwsXHJcbiAgICAgICAgICBlbGVtZW50ID0gdGhpcyxcclxuICAgICAgICAgIHVuZG9hYmxlID0gZmFsc2UsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICB0aGlzLmludGVybWVkaWF0ZUhhbmRsZXIoZXZlbnQsIGVsZW1lbnQsIHVuZG9hYmxlLCBldmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBsZXQgeyBlbGVtZW50IH0gPSBldmVudExpc3RlbmVyO1xyXG5cclxuICAgICAgY29uc3QgeyBoYW5kbGVyIH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICAgIGhhbmRsZXJFbGVtZW50ID0gZWxlbWVudDsgLy8vXHJcblxyXG4gICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlPcGVyYXRpb24ob3BlcmF0aW9uKSB7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtZWRDb250ZW50ID0gb3BlcmF0aW9uLnRyYW5zZm9ybUNvbnRlbnQoY29udGVudCksXHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IG9wZXJhdGlvbi50cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuXHJcbiAgICBjb250ZW50ID0gdHJhbnNmb3JtZWRDb250ZW50OyAvLy9cclxuXHJcbiAgICBzZWxlY3Rpb24gPSB0cmFuc2Zvcm1lZFNlbGVjdGlvbjsgLy8vXHJcblxyXG4gICAgY29uc3Qgc2V0UHJldmlvdXNDb250ZW50ID0gZmFsc2UsXHJcbiAgICAgICAgICBzZXRQcmV2aW91c1NlbGVjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50LCBzZXRQcmV2aW91c0NvbnRlbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2V0UHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25GaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBGSU5EX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gZmluZEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkZpbmQoZmluZEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBmaW5kSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IG9uRmluZCwgb25CbHVyLCBvbkZvY3VzLCBvbkNoYW5nZSwgb25TY3JvbGwgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyLCAvLy9cclxuICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbDsgLy8vXHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgZmluZEhhbmRsZXIgJiYgdGhpcy5vbkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub25CbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vblNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKENVVF9FVkVOVF9UWVBFLCB0aGlzLmN1dEhhbmRsZXIpO1xyXG5cclxuICAgIHRoaXMub24oQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKFBBU1RFX0VWRU5UX1RZUEUsIHRoaXMucGFzdGVIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9uKENPTlRFWFRNRU5VX0VWRU5UX1RZUEUsIHRoaXMuY29udGV4dG1lbnVIYW5kbGVyKTtcclxuXHJcbiAgICBkb2N1bWVudC5vbihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkZpbmQsIG9uQmx1ciwgb25Gb2N1cywgb25DaGFuZ2UsIG9uU2Nyb2xsIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGZpbmRIYW5kbGVyID0gb25GaW5kLCAvLy9cclxuICAgICAgICAgICAgYmx1ckhhbmRsZXIgPSBvbkJsdXIsIC8vL1xyXG4gICAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsOyAvLy9cclxuXHJcbiAgICBmaW5kSGFuZGxlciAmJiB0aGlzLm9mZkZpbmQoZmluZEhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGJsdXJIYW5kbGVyICYmIHRoaXMub2ZmQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub2ZmRm9jdXMoZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQ1VUX0VWRU5UX1RZUEUsIHRoaXMuY3V0SGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09QWV9FVkVOVF9UWVBFLCB0aGlzLmNvcHlIYW5kbGVyKTtcclxuXHJcbiAgICB0aGlzLm9mZihQQVNURV9FVkVOVF9UWVBFLCB0aGlzLnBhc3RlSGFuZGxlcik7XHJcblxyXG4gICAgdGhpcy5vZmYoQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSwgdGhpcy5jb250ZXh0bWVudUhhbmRsZXIpO1xyXG5cclxuICAgIGRvY3VtZW50Lm9mZihTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSwgdGhpcy5zZWxlY3RDaGFuZ2VIYW5kbGVyKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJ0ZXh0YXJlYVwiO1xyXG5cclxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXHJcbiAgICBcIm9uRmluZFwiLFxyXG4gICAgXCJvbkJsdXJcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgXCJvblNjcm9sbFwiLFxyXG4gIF07XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcclxuICAgIGNsYXNzTmFtZTogXCJyaWNoXCJcclxuICB9O1xyXG5cclxuICBzdGF0aWMgZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcclxuICAgIGNvbnN0IGZvY3VzZWQgPSBmYWxzZSxcclxuICAgICAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXHJcbiAgICAgICAgICB1bmRvQnVmZmVyID0gVW5kb0J1ZmZlci5mcm9tTm90aGluZygpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbCxcclxuICAgICAgICAgIHJpY2hUZXh0YXJlYSA9IEVsZW1lbnQuZnJvbUNsYXNzKENsYXNzLCBwcm9wZXJ0aWVzLCBmb2N1c2VkLCByZWFkT25seSwgdW5kb0J1ZmZlciwgcHJldmlvdXNDb250ZW50LCBwcmV2aW91c1NlbGVjdGlvbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcclxuXHJcbiAgICByZXR1cm4gcmljaFRleHRhcmVhO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xyXG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsInNlbGVjdG9yIiwiZm9jdXNlZCIsInJlYWRPbmx5IiwidW5kb0J1ZmZlciIsInByZXZpb3VzQ29udGVudCIsInByZXZpb3VzU2VsZWN0aW9uIiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsInVuZG9hYmxlIiwiZXZlbnRUeXBlIiwiQ0hBTkdFX0VWRU5UX1RZUEUiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiZ2V0Q29udGVudCIsInNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJjaGFuZ2VkIiwiY2FsbEhhbmRsZXJzIiwib3BlcmF0aW9ucyIsImdlbmVyYXRlT3BlcmF0aW9ucyIsImFkZE9wZXJhdGlvbnMiLCJzZWxlY3RDaGFuZ2VIYW5kbGVyIiwiY29udGV4dG1lbnVIYW5kbGVyIiwicHJldmVudERlZmF1bHQiLCJrZXlEb3duSGFuZGxlciIsImN0cmxLZXkiLCJtZXRhS2V5Iiwia2V5Q29kZSIsIkZfS0VZX0NPREUiLCJmaW5kIiwiWl9LRVlfQ09ERSIsInNoaWZ0S2V5IiwicmVkbyIsInVuZG8iLCJkZWZlciIsInNjcm9sbEhhbmRsZXIiLCJTQ1JPTExfRVZFTlRfVFlQRSIsImZvY3VzSGFuZGxlciIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJibHVySGFuZGxlciIsIkJMVVJfRVZFTlRfVFlQRSIsImlucHV0SGFuZGxlciIsInBhc3RlSGFuZGxlciIsImNsaXBib2FyZERhdGEiLCJ0ZXh0RGF0YSIsImdldERhdGEiLCJURVhUIiwiRU1QVFlfU1RSSU5HIiwic2VsZWN0aW9uRW1wdHkiLCJpc0VtcHR5IiwiZGVsZXRlT3BlcmF0aW9uIiwiRGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJvcGVyYXRpb24iLCJhcHBseU9wZXJhdGlvbiIsImluc2VydE9wZXJhdGlvbiIsIkluc2VydE9wZXJhdGlvbiIsImNvcHlIYW5kbGVyIiwic2VsZWN0ZWRDb250ZW50IiwiZ2V0U2VsZWN0ZWRDb250ZW50IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiY3V0SGFuZGxlciIsImlzRm9jdXNlZCIsImlzUmVhZE9ubHkiLCJnZXRVbmRvQnVmZmVyIiwiZ2V0UHJldmlvdXNDb250ZW50IiwicHJldm91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNldEZvY3VzZWQiLCJzZXRSZWFkT25seSIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsImVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInN0YXJ0IiwiZW5kIiwic2xpY2UiLCJjb250ZW50UHJldmlvdXNDb250ZW50Iiwic2VsZWN0aW9uUHJldmlvdXNTZWxlY3Rpb24iLCJpc0VxdWFsVG8iLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsInNldFNlbGVjdGlvblJhbmdlIiwiRklORF9FVkVOVF9UWVBFIiwidW5kb09wZXJhdGlvbiIsInJldmVydCIsInJlZG9PcGVyYXRpb24iLCJmcm9tT3BlcmF0aW9uIiwidHJhbnNmb3JtIiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtQ29udGVudCIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJhY3RpdmF0ZSIsIm9uIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiSU5QVVRfRVZFTlRfVFlQRSIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwib25GaW5kIiwiZmluZEhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmRmluZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkJsdXIiLCJvZmZCbHVyIiwib25Gb2N1cyIsIm9mZkZvY3VzIiwib25TY3JvbGwiLCJvZmZTY3JvbGwiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvZmZDaGFuZ2UiLCJkaWRNb3VudCIsInByb3BlcnRpZXMiLCJDVVRfRVZFTlRfVFlQRSIsIkNPUFlfRVZFTlRfVFlQRSIsIlBBU1RFX0VWRU5UX1RZUEUiLCJDT05URVhUTUVOVV9FVkVOVF9UWVBFIiwiZG9jdW1lbnQiLCJTRUxFQ1RJT05DSEFOR0VfRVZFTlRfVFlQRSIsIndpbGxVbm1vdW50IiwiZnJvbUNsYXNzIiwiQ2xhc3MiLCJFbGVtZW50IiwiVW5kb0J1ZmZlciIsImZyb21Ob3RoaW5nIiwicmljaFRleHRhcmVhIiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUEyQnFCQTs7O29CQXpCYTs4REFFWjsrREFDQzsyREFDSzsyREFDQTs0REFDQzsrREFDRTs2REFDQTt5QkFFSTt3QkFDSTswQkFZSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVCLElBQUEsQUFBTUEsNkJBbWxCcEIsQUFubEJjO2NBQU1BOzhCQUFBQTthQUFBQSxhQUNQQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLGVBQWUsRUFBRUMsaUJBQWlCOzhCQURwRU47O2tDQUVYQztRQTZDUk0sK0NBQUFBLHVCQUFzQixTQUFDQyxPQUFPQyxTQUEyRztnQkFBbEdDLDRFQUFXLElBQUksRUFBRUMsNkVBQVlDLDZCQUFpQixFQUFFQyxvRkFBbUIsTUFBS0MsbUJBQW1CO1lBQ2hJLElB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
package/lib/selection.js CHANGED
@@ -59,6 +59,13 @@ var Selection = /*#__PURE__*/ function() {
59
59
  return empty;
60
60
  }
61
61
  },
62
+ {
63
+ key: "getLength",
64
+ value: function getLength() {
65
+ var length = this.endPosition - this.startPosition;
66
+ return length;
67
+ }
68
+ },
62
69
  {
63
70
  key: "isEqualTo",
64
71
  value: function isEqualTo(selection) {
@@ -182,4 +189,4 @@ var Selection = /*#__PURE__*/ function() {
182
189
  return Selection;
183
190
  }();
184
191
 
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBpc0VxdWFsVG8oc2VsZWN0aW9uKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGlmIChzZWxlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25zRXF1YWwgPSAodGhpcy5zdGFydFBvc2l0aW9uID09PSBzZWxlY3Rpb25TdGFydFBvc2l0aW9uKSxcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uc0VxdWFsID0gKHRoaXMuZW5kUG9zaXRpb24gPT09IHNlbGVjdGlvbkVuZFBvc2l0aW9uKTtcblxuICAgICAgZXF1YWxUbyA9IChzdGFydFBvc2l0aW9uc0VxdWFsICYmIGVuZFBvc2l0aW9uc0VxdWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIHNldFN0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gIH1cblxuICBzZXRFbmRQb3NpdGlvbihlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSBlbmRQb3NpdGlvbjtcbiAgfVxuXG4gIHN0YXJ0UG9zaXRpb25TaGlmdGVkKHN0YXJ0T2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIHN0YXJ0T2Zmc2V0LFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBlbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBlbmRPZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQob3BlcmF0aW9ucykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gdHJhbnNmb3JtU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3BlcmF0aW9ucyk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRTZWxlY3Rpb247XG4gIH1cblxuICBzaGlmdGVkKG9mZnNldCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uICsgb2Zmc2V0LFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVtcHRpZWQoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHRoaXMuc3RhcnRQb3NpdGlvbiwgdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGNvbnN0IHsgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24gfSA9IGpzb24sXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSAwLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gMCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgICBjb25zdCBjb250ZW50ID0gb3BlcmF0aW9uLmdldENvbnRlbnQoKSxcbiAgICAgICAgICBwb3NpdGlvbiA9IG9wZXJhdGlvbi5nZXRQb3NpdGlvbigpLFxuICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBjb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcG9zaXRpb24gKyBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU2VsZWN0aW9uKHNlbGVjdGlvbikge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCk7XG5cbiAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsgIC8vL1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRE9NRWxlbWVudChkb21FbGVtZW50KSB7XG4gICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIH0gPSBkb21FbGVtZW50LFxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb25TdGFydCwgLy8vXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb25FbmQsIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcblxuICB9XG5cbiAgc3RhdGljIGZyb21TdGFydFBvc2l0aW9uQW5kRW5kUG9zaXRpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiU2VsZWN0aW9uIiwic3RhcnRQb3NpdGlvbiIsImVuZFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwiaXNFbXB0eSIsImVtcHR5IiwiaXNFcXVhbFRvIiwic2VsZWN0aW9uIiwiZXF1YWxUbyIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25zRXF1YWwiLCJlbmRQb3NpdGlvbnNFcXVhbCIsInNldFN0YXJ0UG9zaXRpb24iLCJzZXRFbmRQb3NpdGlvbiIsInN0YXJ0UG9zaXRpb25TaGlmdGVkIiwic3RhcnRPZmZzZXQiLCJlbmRQb3NpdGlvblNoaWZ0ZWQiLCJlbmRPZmZzZXQiLCJ0cmFuc2Zvcm1lZCIsIm9wZXJhdGlvbnMiLCJ0cmFuc2Zvcm1lZFNlbGVjdGlvbiIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNoaWZ0ZWQiLCJvZmZzZXQiLCJlbXB0aWVkIiwiY2xvbmUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tTm90aGluZyIsImZyb21PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJjb250ZW50IiwiZ2V0Q29udGVudCIsInBvc2l0aW9uIiwiZ2V0UG9zaXRpb24iLCJjb250ZW50TGVuZ3RoIiwibGVuZ3RoIiwiZnJvbVNlbGVjdGlvbiIsImZyb21ET01FbGVtZW50IiwiZG9tRWxlbWVudCIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiZnJvbVN0YXJ0UG9zaXRpb25BbmRFbmRQb3NpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFJcUJBOzs7OERBRlU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEIsSUFBQSxBQUFNQSwwQkFBTjthQUFNQSxVQUNQQyxhQUFhLEVBQUVDLFdBQVc7OEJBRG5CRjtRQUVqQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7UUFDckIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBOztpQkFIRkY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CO2dCQUNqQixPQUFPLElBQUksQ0FBQ0YsYUFBYTtZQUMzQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQ2YsT0FBTyxJQUFJLENBQUNGLFdBQVc7WUFDekI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixJQUFNQyxRQUFTLElBQUksQ0FBQ0wsYUFBYSxLQUFLLElBQUksQ0FBQ0MsV0FBVztnQkFFdEQsT0FBT0k7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxTQUFTLEVBQUU7Z0JBQ25CLElBQUlDLFVBQVUsS0FBSztnQkFFbkIsSUFBSUQsY0FBYyxJQUFJLEVBQUU7b0JBQ3RCLElBQU1FLHlCQUF5QkYsVUFBVUwsZ0JBQWdCLElBQ25EUSx1QkFBdUJILFVBQVVKLGNBQWMsSUFDL0NRLHNCQUF1QixJQUFJLENBQUNYLGFBQWEsS0FBS1Ms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
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWxlY3Rpb24uanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB0cmFuc2Zvcm1TZWxlY3Rpb24gZnJvbSBcIi4vdHJhbnNmb3JtL3NlbGVjdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0RW5kUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5kUG9zaXRpb247XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGVtcHR5ID0gKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gdGhpcy5lbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gKHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzZWxlY3Rpb24pIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHNlbGVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbnNFcXVhbCA9ICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24pLFxuICAgICAgICAgICAgZW5kUG9zaXRpb25zRXF1YWwgPSAodGhpcy5lbmRQb3NpdGlvbiA9PT0gc2VsZWN0aW9uRW5kUG9zaXRpb24pO1xuXG4gICAgICBlcXVhbFRvID0gKHN0YXJ0UG9zaXRpb25zRXF1YWwgJiYgZW5kUG9zaXRpb25zRXF1YWwpO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgc2V0U3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9uKSB7XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjtcbiAgfVxuXG4gIHNldEVuZFBvc2l0aW9uKGVuZFBvc2l0aW9uKSB7XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uO1xuICB9XG5cbiAgc3RhcnRQb3NpdGlvblNoaWZ0ZWQoc3RhcnRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uICsgc3RhcnRPZmZzZXQsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLmVuZFBvc2l0aW9uLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbiArIGVuZE9mZnNldCxcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICB0cmFuc2Zvcm1lZChvcGVyYXRpb25zKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uLCBvcGVyYXRpb25zKTtcblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcbiAgfVxuXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIG9mZnNldCxcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24gKyBvZmZzZXQsXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgZW1wdGllZCgpIHtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gdGhpcy5zdGFydFBvc2l0aW9uLFxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24odGhpcy5zdGFydFBvc2l0aW9uLCB0aGlzLmVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHRoaXMuc3RhcnRQb3NpdGlvbixcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRoaXMuZW5kUG9zaXRpb24sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgICBlbmRQb3NpdGlvblxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiB9ID0ganNvbixcbiAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSAwLFxuICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT3BlcmF0aW9uKG9wZXJhdGlvbikge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBvcGVyYXRpb24uZ2V0Q29udGVudCgpLFxuICAgICAgICAgIHBvc2l0aW9uID0gb3BlcmF0aW9uLmdldFBvc2l0aW9uKCksXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IGNvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXG4gICAgICAgICAgZW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKTtcblxuICAgIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOyAgLy8vXG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgfSA9IGRvbUVsZW1lbnQsXG4gICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvblN0YXJ0LCAvLy9cbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbkVuZCwgLy8vXG4gICAgICAgICAgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuXG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXJ0UG9zaXRpb25BbmRFbmRQb3NpdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJTZWxlY3Rpb24iLCJzdGFydFBvc2l0aW9uIiwiZW5kUG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJpc0VtcHR5IiwiZW1wdHkiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJpc0VxdWFsVG8iLCJzZWxlY3Rpb24iLCJlcXVhbFRvIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbnNFcXVhbCIsImVuZFBvc2l0aW9uc0VxdWFsIiwic2V0U3RhcnRQb3NpdGlvbiIsInNldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvblNoaWZ0ZWQiLCJzdGFydE9mZnNldCIsImVuZFBvc2l0aW9uU2hpZnRlZCIsImVuZE9mZnNldCIsInRyYW5zZm9ybWVkIiwib3BlcmF0aW9ucyIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2hpZnRlZCIsIm9mZnNldCIsImVtcHRpZWQiLCJjbG9uZSIsInRvSlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImZyb21Ob3RoaW5nIiwiZnJvbU9wZXJhdGlvbiIsIm9wZXJhdGlvbiIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwicG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsImNvbnRlbnRMZW5ndGgiLCJmcm9tU2VsZWN0aW9uIiwiZnJvbURPTUVsZW1lbnQiLCJkb21FbGVtZW50Iiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJmcm9tU3RhcnRQb3NpdGlvbkFuZEVuZFBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7Ozs4REFGVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVoQixJQUFBLEFBQU1BLDBCQUFOO2FBQU1BLFVBQ1BDLGFBQWEsRUFBRUMsV0FBVzs4QkFEbkJGO1FBRWpCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTtRQUNyQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7O2lCQUhGRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDRixhQUFhO1lBQzNCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQjtnQkFDZixPQUFPLElBQUksQ0FBQ0YsV0FBVztZQUN6Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLElBQU1DLFFBQVMsSUFBSSxDQUFDTCxhQUFhLEtBQUssSUFBSSxDQUFDQyxXQUFXO2dCQUV0RCxPQUFPSTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk7Z0JBQ1YsSUFBTUMsU0FBVSxJQUFJLENBQUNOLFdBQVcsR0FBRyxJ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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": "4.0.21",
4
+ "version": "4.0.23",
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.",
@@ -114,33 +114,31 @@ export default class RichTextarea extends Element {
114
114
  }
115
115
 
116
116
  keyDownHandler = (event, element) => {
117
- const { keyCode } = event;
117
+ const { ctrlKey, metaKey } = event;
118
118
 
119
- if (keyCode === Z_KEY_CODE) {
120
- const { ctrlKey, metaKey } = event;
119
+ if (ctrlKey || metaKey) {
120
+ const { keyCode } = event;
121
121
 
122
- if (ctrlKey || metaKey) {
123
- const { shiftKey } = event;
122
+ switch (keyCode) {
123
+ case F_KEY_CODE: {
124
+ this.find(event, element);
124
125
 
125
- shiftKey ?
126
- this.redo(event, element) :
127
- this.undo(event, element);
126
+ event.preventDefault();
128
127
 
129
- event.preventDefault();
128
+ return;
129
+ }
130
130
 
131
- return;
132
- }
133
- }
134
-
135
- if (keyCode === F_KEY_CODE) {
136
- const { ctrlKey, metaKey } = event;
131
+ case Z_KEY_CODE: {
132
+ const { shiftKey } = event;
137
133
 
138
- if (ctrlKey || metaKey) {
139
- this.find(event, element);
134
+ shiftKey ?
135
+ this.redo(event, element) :
136
+ this.undo(event, element);
140
137
 
141
- event.preventDefault();
138
+ event.preventDefault();
142
139
 
143
- return;
140
+ return;
141
+ }
144
142
  }
145
143
  }
146
144
 
package/src/selection.js CHANGED
@@ -22,6 +22,12 @@ export default class Selection {
22
22
  return empty;
23
23
  }
24
24
 
25
+ getLength() {
26
+ const length = (this.endPosition - this.startPosition);
27
+
28
+ return length;
29
+ }
30
+
25
31
  isEqualTo(selection) {
26
32
  let equalTo = false;
27
33