{"version":3,"file":"RevisionDiff-CEQUcTf9.cjs","sources":["../node_modules/diff/lib/diff/base.js","../node_modules/diff/lib/diff/character.js","../node_modules/diff/lib/util/params.js","../node_modules/diff/lib/diff/word.js","../node_modules/diff/lib/diff/line.js","../node_modules/diff/lib/diff/sentence.js","../node_modules/diff/lib/diff/css.js","../node_modules/diff/lib/diff/json.js","../node_modules/diff/lib/diff/array.js","../node_modules/diff/lib/patch/parse.js","../node_modules/diff/lib/util/distance-iterator.js","../node_modules/diff/lib/patch/apply.js","../node_modules/diff/lib/patch/create.js","../node_modules/diff/lib/util/array.js","../node_modules/diff/lib/patch/merge.js","../node_modules/diff/lib/patch/reverse.js","../node_modules/diff/lib/convert/dmp.js","../node_modules/diff/lib/convert/xml.js","../node_modules/diff/lib/index.js","../node_modules/unidiff/hunk.js","../node_modules/unidiff/index.js","../node_modules/react-diff-view/es/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/react-syntax-highlighter/dist/cjs/languages/hljs/sql.js","../src/app/pages/NodePage/RevisionDiff.jsx"],"sourcesContent":["/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  diff: function diff(oldString, newString) {\n    /*istanbul ignore start*/\n    var _options$timeout;\n\n    var\n    /*istanbul ignore end*/\n    options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var callback = options.callback;\n\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    this.options = options;\n    var self = this;\n\n    function done(value) {\n      if (callback) {\n        setTimeout(function () {\n          callback(undefined, value);\n        }, 0);\n        return true;\n      } else {\n        return value;\n      }\n    } // Allow subclasses to massage the input prior to running\n\n\n    oldString = this.castInput(oldString);\n    newString = this.castInput(newString);\n    oldString = this.removeEmpty(this.tokenize(oldString));\n    newString = this.removeEmpty(this.tokenize(newString));\n    var newLen = newString.length,\n        oldLen = oldString.length;\n    var editLength = 1;\n    var maxEditLength = newLen + oldLen;\n\n    if (options.maxEditLength) {\n      maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n    }\n\n    var maxExecutionTime =\n    /*istanbul ignore start*/\n    (_options$timeout =\n    /*istanbul ignore end*/\n    options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n    var abortAfterTimestamp = Date.now() + maxExecutionTime;\n    var bestPath = [{\n      oldPos: -1,\n      lastComponent: undefined\n    }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n    var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n    if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n      // Identity per the equality and tokenizer\n      return done([{\n        value: this.join(newString),\n        count: newString.length\n      }]);\n    } // Once we hit the right edge of the edit graph on some diagonal k, we can\n    // definitely reach the end of the edit graph in no more than k edits, so\n    // there's no point in considering any moves to diagonal k+1 any more (from\n    // which we're guaranteed to need at least k+1 more edits).\n    // Similarly, once we've reached the bottom of the edit graph, there's no\n    // point considering moves to lower diagonals.\n    // We record this fact by setting minDiagonalToConsider and\n    // maxDiagonalToConsider to some finite value once we've hit the edge of\n    // the edit graph.\n    // This optimization is not faithful to the original algorithm presented in\n    // Myers's paper, which instead pointlessly extends D-paths off the end of\n    // the edit graph - see page 7 of Myers's paper which notes this point\n    // explicitly and illustrates it with a diagram. This has major performance\n    // implications for some common scenarios. For instance, to compute a diff\n    // where the new text simply appends d characters on the end of the\n    // original text of length n, the true Myers algorithm will take O(n+d^2)\n    // time while this optimization needs only O(n+d) time.\n\n\n    var minDiagonalToConsider = -Infinity,\n        maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n    function execEditLength() {\n      for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n        var basePath =\n        /*istanbul ignore start*/\n        void 0\n        /*istanbul ignore end*/\n        ;\n        var removePath = bestPath[diagonalPath - 1],\n            addPath = bestPath[diagonalPath + 1];\n\n        if (removePath) {\n          // No one else is going to attempt to use this value, clear it\n          bestPath[diagonalPath - 1] = undefined;\n        }\n\n        var canAdd = false;\n\n        if (addPath) {\n          // what newPos will be after we do an insertion:\n          var addPathNewPos = addPath.oldPos - diagonalPath;\n          canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n        }\n\n        var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n        if (!canAdd && !canRemove) {\n          // If this path is a terminal then prune\n          bestPath[diagonalPath] = undefined;\n          continue;\n        } // Select the diagonal that we want to branch from. We select the prior\n        // path whose position in the old string is the farthest from the origin\n        // and does not pass the bounds of the diff graph\n        // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n        //       and prefer to order removals before insertions.\n\n\n        if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n          basePath = self.addToPath(addPath, true, undefined, 0);\n        } else {\n          basePath = self.addToPath(removePath, undefined, true, 1);\n        }\n\n        newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n        if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n          // If we have hit the end of both strings, then we are done\n          return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n        } else {\n          bestPath[diagonalPath] = basePath;\n\n          if (basePath.oldPos + 1 >= oldLen) {\n            maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n          }\n\n          if (newPos + 1 >= newLen) {\n            minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n          }\n        }\n      }\n\n      editLength++;\n    } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n    // sync and async mode which is never fun. Loops over execEditLength until a value\n    // is produced, or until the edit length exceeds options.maxEditLength (if given),\n    // in which case it will return undefined.\n\n\n    if (callback) {\n      (function exec() {\n        setTimeout(function () {\n          if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n            return callback();\n          }\n\n          if (!execEditLength()) {\n            exec();\n          }\n        }, 0);\n      })();\n    } else {\n      while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n        var ret = execEditLength();\n\n        if (ret) {\n          return ret;\n        }\n      }\n    }\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  addToPath: function addToPath(path, added, removed, oldPosInc) {\n    var last = path.lastComponent;\n\n    if (last && last.added === added && last.removed === removed) {\n      return {\n        oldPos: path.oldPos + oldPosInc,\n        lastComponent: {\n          count: last.count + 1,\n          added: added,\n          removed: removed,\n          previousComponent: last.previousComponent\n        }\n      };\n    } else {\n      return {\n        oldPos: path.oldPos + oldPosInc,\n        lastComponent: {\n          count: 1,\n          added: added,\n          removed: removed,\n          previousComponent: last\n        }\n      };\n    }\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n    var newLen = newString.length,\n        oldLen = oldString.length,\n        oldPos = basePath.oldPos,\n        newPos = oldPos - diagonalPath,\n        commonCount = 0;\n\n    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n      newPos++;\n      oldPos++;\n      commonCount++;\n    }\n\n    if (commonCount) {\n      basePath.lastComponent = {\n        count: commonCount,\n        previousComponent: basePath.lastComponent\n      };\n    }\n\n    basePath.oldPos = oldPos;\n    return newPos;\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  equals: function equals(left, right) {\n    if (this.options.comparator) {\n      return this.options.comparator(left, right);\n    } else {\n      return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n    }\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  removeEmpty: function removeEmpty(array) {\n    var ret = [];\n\n    for (var i = 0; i < array.length; i++) {\n      if (array[i]) {\n        ret.push(array[i]);\n      }\n    }\n\n    return ret;\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  castInput: function castInput(value) {\n    return value;\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  tokenize: function tokenize(value) {\n    return value.split('');\n  },\n\n  /*istanbul ignore start*/\n\n  /*istanbul ignore end*/\n  join: function join(chars) {\n    return chars.join('');\n  }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n  // First we convert our linked list of components in reverse order to an\n  // array in the right order:\n  var components = [];\n  var nextComponent;\n\n  while (lastComponent) {\n    components.push(lastComponent);\n    nextComponent = lastComponent.previousComponent;\n    delete lastComponent.previousComponent;\n    lastComponent = nextComponent;\n  }\n\n  components.reverse();\n  var componentPos = 0,\n      componentLen = components.length,\n      newPos = 0,\n      oldPos = 0;\n\n  for (; componentPos < componentLen; componentPos++) {\n    var component = components[componentPos];\n\n    if (!component.removed) {\n      if (!component.added && useLongestToken) {\n        var value = newString.slice(newPos, newPos + component.count);\n        value = value.map(function (value, i) {\n          var oldValue = oldString[oldPos + i];\n          return oldValue.length > value.length ? oldValue : value;\n        });\n        component.value = diff.join(value);\n      } else {\n        component.value = diff.join(newString.slice(newPos, newPos + component.count));\n      }\n\n      newPos += component.count; // Common case\n\n      if (!component.added) {\n        oldPos += component.count;\n      }\n    } else {\n      component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n      oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n      // The diffing algorithm is tied to add then remove output and this is the simplest\n      // route to get the desired output with minimal overhead.\n\n      if (componentPos && components[componentPos - 1].added) {\n        var tmp = components[componentPos - 1];\n        components[componentPos - 1] = components[componentPos];\n        components[componentPos] = tmp;\n      }\n    }\n  } // Special case handle for when one terminal is ignored (i.e. whitespace).\n  // For this case we merge the terminal into the prior string and drop the change.\n  // This is only available for string mode.\n\n\n  var finalComponent = components[componentLen - 1];\n\n  if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n    components[componentLen - 2].value += finalComponent.value;\n    components.pop();\n  }\n\n  return components;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJtYXhFeGVjdXRpb25UaW1lIiwidGltZW91dCIsIkluZmluaXR5IiwiYWJvcnRBZnRlclRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJiZXN0UGF0aCIsIm9sZFBvcyIsImxhc3RDb21wb25lbnQiLCJuZXdQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwibWluRGlhZ29uYWxUb0NvbnNpZGVyIiwibWF4RGlhZ29uYWxUb0NvbnNpZGVyIiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJtYXgiLCJiYXNlUGF0aCIsInJlbW92ZVBhdGgiLCJhZGRQYXRoIiwiY2FuQWRkIiwiYWRkUGF0aE5ld1BvcyIsImNhblJlbW92ZSIsImFkZFRvUGF0aCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsInBhdGgiLCJhZGRlZCIsInJlbW92ZWQiLCJvbGRQb3NJbmMiLCJsYXN0IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBv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IERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RXhlY3V0aW9uVGltZSA9IG9wdGlvbnMudGltZW91dCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBhYm9ydEFmdGVyVGltZXN0YW1wID0gRGF0ZS5ub3coKSArIG1heEV4ZWN1dGlvblRpbWU7XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBvbGRQb3M6IC0xLCBsYXN0Q29tcG9uZW50OiB1bmRlZmluZWQgfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBuZXdQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE9uY2Ugd2UgaGl0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBlZGl0IGdyYXBoIG9uIHNvbWUgZGlhZ29uYWwgaywgd2UgY2FuXG4gICAgLy8gZGVmaW5pdGVseSByZWFjaCB0aGUgZW5kIG9mIHRoZSBlZGl0IGdyYXBoIGluIG5vIG1vcmUgdGhhbiBrIGVkaXRzLCBzb1xuICAgIC8vIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY29uc2lkZXJpbmcgYW55IG1vdmVzIHRvIGRpYWdvbmFsIGsrMSBhbnkgbW9yZSAoZnJvbVxuICAgIC8vIHdoaWNoIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmVlZCBhdCBsZWFzdCBrKzEgbW9yZSBlZGl0cykuXG4gICAgLy8gU2ltaWxhcmx5LCBvbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBncmFwaCwgdGhlcmUncyBub1xuICAgIC8vIHBvaW50IGNvbnNpZGVyaW5nIG1vdmVzIHRvIGxvd2VyIGRpYWdvbmFscy5cbiAgICAvLyBXZSByZWNvcmQgdGhpcyBmYWN0IGJ5IHNldHRpbmcgbWluRGlhZ29uYWxUb0NvbnNpZGVyIGFuZFxuICAgIC8vIG1heERpYWdvbmFsVG9Db25zaWRlciB0byBzb21lIGZpbml0ZSB2YWx1ZSBvbmNlIHdlJ3ZlIGhpdCB0aGUgZWRnZSBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoLlxuICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzIG5vdCBmYWl0aGZ1bCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtIHByZXNlbnRlZCBpblxuICAgIC8vIE15ZXJzJ3MgcGFwZXIsIHdoaWNoIGluc3RlYWQgcG9pbnRsZXNzbHkgZXh0ZW5kcyBELXBhdGhzIG9mZiB0aGUgZW5kIG9mXG4gICAgLy8gdGhlIGVkaXQgZ3JhcGggLSBzZWUgcGFnZSA3IG9mIE15ZXJzJ3MgcGFwZXIgd2hpY2ggbm90ZXMgdGhpcyBwb2ludFxuICAgIC8vIGV4cGxpY2l0bHkgYW5kIGlsbHVzdHJhdGVzIGl0IHdpdGggYSBkaWFncmFtLiBUaGlzIGhhcyBtYWpvciBwZXJmb3JtYW5jZVxuICAgIC8vIGltcGxpY2F0aW9ucyBmb3Igc29tZSBjb21tb24gc2NlbmFyaW9zLiBGb3IgaW5zdGFuY2UsIHRvIGNvbXB1dGUgYSBkaWZmXG4gICAgLy8gd2hlcmUgdGhlIG5ldyB0ZXh0IHNpbXBseSBhcHBlbmRzIGQgY2hhcmFjdGVycyBvbiB0aGUgZW5kIG9mIHRoZVxuICAgIC8vIG9yaWdpbmFsIHRleHQgb2YgbGVuZ3RoIG4sIHRoZSB0cnVlIE15ZXJzIGFsZ29yaXRobSB3aWxsIHRha2UgTyhuK2ReMilcbiAgICAvLyB0aW1lIHdoaWxlIHRoaXMgb3B0aW1pemF0aW9uIG5lZWRzIG9ubHkgTyhuK2QpIHRpbWUuXG4gICAgbGV0IG1pbkRpYWdvbmFsVG9Db25zaWRlciA9IC1JbmZpbml0eSwgbWF4RGlhZ29uYWxUb0NvbnNpZGVyID0gSW5maW5pdHk7XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgZGlhZ29uYWxQYXRoID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCAtZWRpdExlbmd0aCk7XG4gICAgICAgIGRpYWdvbmFsUGF0aCA8PSBNYXRoLm1pbihtYXhEaWFnb25hbFRvQ29uc2lkZXIsIGVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggKz0gMlxuICAgICAgKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXTtcbiAgICAgICAgaWYgKHJlbW92ZVBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGZhbHNlO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIHdoYXQgbmV3UG9zIHdpbGwgYmUgYWZ0ZXIgd2UgZG8gYW4gaW5zZXJ0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZFBhdGhOZXdQb3MgPSBhZGRQYXRoLm9sZFBvcyAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgICBjYW5BZGQgPSBhZGRQYXRoICYmIDAgPD0gYWRkUGF0aE5ld1BvcyAmJiBhZGRQYXRoTmV3UG9zIDwgbmV3TGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgcmVtb3ZlUGF0aC5vbGRQb3MgKyAxIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBvbGQgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGArIDFgIGhlcmUgdG8gbWFrZSBiZWhhdmlvciBtYXRjaCBNeWVycyBhbGdvcml0aG1cbiAgICAgICAgLy8gICAgICAgYW5kIHByZWZlciB0byBvcmRlciByZW1vdmFscyBiZWZvcmUgaW5zZXJ0aW9ucy5cbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyArIDEgPCBhZGRQYXRoLm9sZFBvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IHNlbGYuYWRkVG9QYXRoKGFkZFBhdGgsIHRydWUsIHVuZGVmaW5lZCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBzZWxmLmFkZFRvUGF0aChyZW1vdmVQYXRoLCB1bmRlZmluZWQsIHRydWUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudH07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhcmF0b3IobGVmdCwgcmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHRcbiAgICAgICAgfHwgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcnKTtcbiAgfSxcbiAgam9pbihjaGFycykge1xuICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgbGFzdENvbXBvbmVudCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAvLyBGaXJzdCB3ZSBjb252ZXJ0IG91ciBsaW5rZWQgbGlzdCBvZiBjb21wb25lbnRzIGluIHJldmVyc2Ugb3JkZXIgdG8gYW5cbiAgLy8gYXJyYXkgaW4gdGhlIHJpZ2h0IG9yZGVyOlxuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCBuZXh0Q29tcG9uZW50O1xuICB3aGlsZSAobGFzdENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudHMucHVzaChsYXN0Q29tcG9uZW50KTtcbiAgICBuZXh0Q29tcG9uZW50ID0gbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBkZWxldGUgbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBsYXN0Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDtcbiAgfVxuICBjb21wb25lbnRzLnJldmVyc2UoKTtcblxuICBsZXQgY29tcG9uZW50UG9zID0gMCxcbiAgICAgIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLFxuICAgICAgbmV3UG9zID0gMCxcbiAgICAgIG9sZFBvcyA9IDA7XG5cbiAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICBsZXQgY29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICBsZXQgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSwgaSkge1xuICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IG9sZFN0cmluZ1tvbGRQb3MgKyBpXTtcbiAgICAgICAgICByZXR1cm4gb2xkVmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIH1cbiAgICAgIG5ld1BvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIENvbW1vbiBjYXNlXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgIGxldCB0bXAgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuICBsZXQgZmluYWxDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGZpbmFsQ29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGZpbmFsQ29tcG9uZW50LmFkZGVkIHx8IGZpbmFsQ29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgZmluYWxDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBmaW5hbENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n  return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n  if (typeof options === 'function') {\n    defaults.callback = options;\n  } else if (options) {\n    for (var name in options) {\n      /* istanbul ignore else */\n      if (options.hasOwnProperty(name)) {\n        defaults[name] = options[name];\n      }\n    }\n  }\n\n  return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n//  - U+00D7  × Multiplication sign\n//  - U+00F7  ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n//  - U+02C7  ˇ &#711;  Caron\n//  - U+02D8  ˘ &#728;  Breve\n//  - U+02D9  ˙ &#729;  Dot Above\n//  - U+02DA  ˚ &#730;  Ring Above\n//  - U+02DB  ˛ &#731;  Ogonek\n//  - U+02DC  ˜ &#732;  Small Tilde\n//  - U+02DD  ˝ &#733;  Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n  if (this.options.ignoreCase) {\n    left = left.toLowerCase();\n    right = right.toLowerCase();\n  }\n\n  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n  // All whitespace symbols except newline group into one token, each newline - in separate token\n  var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n  for (var i = 0; i < tokens.length - 1; i++) {\n    // If we have an empty string in the next field and we have only word chars before and after, merge\n    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n      tokens[i] += tokens[i + 2];\n      tokens.splice(i + 1, 2);\n      i--;\n    }\n  }\n\n  return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n  options =\n  /*istanbul ignore start*/\n  (0,\n  /*istanbul ignore end*/\n\n  /*istanbul ignore start*/\n  _params\n  /*istanbul ignore end*/\n  .\n  /*istanbul ignore start*/\n  generateOptions)\n  /*istanbul ignore end*/\n  (options, {\n    ignoreWhitespace: true\n  });\n  return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n  return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n  if (this.options.stripTrailingCr) {\n    // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n    value = value.replace(/\\r\\n/g, '\\n');\n  }\n\n  var retLines = [],\n      linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n  if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n    linesAndNewlines.pop();\n  } // Merge the content and line separators into single tokens\n\n\n  for (var i = 0; i < linesAndNewlines.length; i++) {\n    var line = linesAndNewlines[i];\n\n    if (i % 2 && !this.options.newlineIsToken) {\n      retLines[retLines.length - 1] += line;\n    } else {\n      if (this.options.ignoreWhitespace) {\n        line = line.trim();\n      }\n\n      retLines.push(line);\n    }\n  }\n\n  return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n  return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n  var options =\n  /*istanbul ignore start*/\n  (0,\n  /*istanbul ignore end*/\n\n  /*istanbul ignore start*/\n  _params\n  /*istanbul ignore end*/\n  .\n  /*istanbul ignore start*/\n  generateOptions)\n  /*istanbul ignore end*/\n  (callback, {\n    ignoreWhitespace: true\n  });\n  return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzdHJpcFRyYWlsaW5nQ3IiLCJyZXBsYWNlIiwicmV0TGluZXMiLCJsaW5lc0FuZE5ld2xpbmVzIiwic3BsaXQiLCJsZW5ndGgiLCJwb3AiLCJpIiwibGluZSIsIm5ld2xpbmVJc1Rva2VuIiwiaWdub3JlV2hpdGVzcGFjZSIsInRyaW0iLCJwdXNoIiwiZGlmZkxpbmVzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIiwiZGlmZlRyaW1tZWRMaW5lcyIsImdlbmVyYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRU8sSUFBTUEsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLFFBQVQsR0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtBQUNsQyxNQUFHLEtBQUtDLE9BQUwsQ0FBYUMsZUFBaEIsRUFBaUM7QUFDL0I7QUFDQUYsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU4sQ0FBYyxPQUFkLEVBQXVCLElBQXZCLENBQVI7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLE1BQ0lDLGdCQUFnQixHQUFHTCxLQUFLLENBQUNNLEtBQU4sQ0FBWSxXQUFaLENBRHZCLENBTmtDLENBU2xDOztBQUNBLE1BQUksQ0FBQ0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDRSxNQUFqQixHQUEwQixDQUEzQixDQUFyQixFQUFvRDtBQUNsREYsSUFBQUEsZ0JBQWdCLENBQUNHLEdBQWpCO0FBQ0QsR0FaaUMsQ0FjbEM7OztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQXJDLEVBQTZDRSxDQUFDLEVBQTlDLEVBQWtEO0FBQ2hELFFBQUlDLElBQUksR0FBR0wsZ0JBQWdCLENBQUNJLENBQUQsQ0FBM0I7O0FBRUEsUUFBSUEsQ0FBQyxHQUFHLENBQUosSUFBUyxDQUFDLEtBQUtSLE9BQUwsQ0FBYVUsY0FBM0IsRUFBMkM7QUFDekNQLE1BQUFBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQVIsSUFBaUNHLElBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSSxLQUFLVCxPQUFMLENBQWFXLGdCQUFqQixFQUFtQztBQUNqQ0YsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLElBQUwsRUFBUDtBQUNEOztBQUNEVCxNQUFBQSxRQUFRLENBQUNVLElBQVQsQ0FBY0osSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBN0JEOztBQStCTyxTQUFTVyxTQUFULENBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLFFBQW5DLEVBQTZDO0FBQUUsU0FBT3JCLFFBQVEsQ0FBQ3NCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJDLFFBQTlCLENBQVA7QUFBaUQ7O0FBQ2hHLFNBQVNFLGdCQUFULENBQTBCSixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlqQixPQUFPO0FBQUc7QUFBQTtBQUFBOztBQUFBb0I7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2YsUUFBUSxDQUFDc0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmhCLE9BQTlCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZih0aGlzLm9wdGlvbnMuc3RyaXBUcmFpbGluZ0NyKSB7XG4gICAgLy8gcmVtb3ZlIG9uZSBcXHIgYmVmb3JlIFxcbiB0byBtYXRjaCBHTlUgZGlmZidzIC0tc3RyaXAtdHJhaWxpbmctY3IgYmVoYXZpb3JcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gIH1cblxuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n  return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n  return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n  return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n  return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n  /*istanbul ignore start*/\n  var _this$options =\n  /*istanbul ignore end*/\n  this.options,\n      undefinedReplacement = _this$options.undefinedReplacement,\n      _this$options$stringi = _this$options.stringifyReplacer,\n      stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n  /*istanbul ignore start*/\n  {\n    return (\n      /*istanbul ignore end*/\n      typeof v === 'undefined' ? undefinedReplacement : v\n    );\n  } : _this$options$stringi;\n  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, '  ');\n};\n\njsonDiff.equals = function (left, right) {\n  return (\n    /*istanbul ignore start*/\n    _base\n    /*istanbul ignore end*/\n    [\n    /*istanbul ignore start*/\n    \"default\"\n    /*istanbul ignore end*/\n    ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n  );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n  return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n  stack = stack || [];\n  replacementStack = replacementStack || [];\n\n  if (replacer) {\n    obj = replacer(key, obj);\n  }\n\n  var i;\n\n  for (i = 0; i < stack.length; i += 1) {\n    if (stack[i] === obj) {\n      return replacementStack[i];\n    }\n  }\n\n  var canonicalizedObj;\n\n  if ('[object Array]' === objectPrototypeToString.call(obj)) {\n    stack.push(obj);\n    canonicalizedObj = new Array(obj.length);\n    replacementStack.push(canonicalizedObj);\n\n    for (i = 0; i < obj.length; i += 1) {\n      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n    }\n\n    stack.pop();\n    replacementStack.pop();\n    return canonicalizedObj;\n  }\n\n  if (obj && obj.toJSON) {\n    obj = obj.toJSON();\n  }\n\n  if (\n  /*istanbul ignore start*/\n  _typeof(\n  /*istanbul ignore end*/\n  obj) === 'object' && obj !== null) {\n    stack.push(obj);\n    canonicalizedObj = {};\n    replacementStack.push(canonicalizedObj);\n\n    var sortedKeys = [],\n        _key;\n\n    for (_key in obj) {\n      /* istanbul ignore else */\n      if (obj.hasOwnProperty(_key)) {\n        sortedKeys.push(_key);\n      }\n    }\n\n    sortedKeys.sort();\n\n    for (i = 0; i < sortedKeys.length; i += 1) {\n      _key = sortedKeys[i];\n      canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n    }\n\n    stack.pop();\n    replacementStack.pop();\n  } else {\n    canonicalizedObj = obj;\n  }\n\n  return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUMrRSxPQUFLQyxPQURwRjtBQUFBLE1BQzVCQyxvQkFENEIsaUJBQzVCQSxvQkFENEI7QUFBQSw0Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSxzQ0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFVLGFBQU9BLENBQVAsS0FBYSxXQUFiLEdBQTJCSCxvQkFBM0IsR0FBa0RHO0FBQTVEO0FBQUEsR0FEZDtBQUduQyxTQUFPLE9BQU9MLEtBQVAsS0FBaUIsUUFBakIsR0FBNEJBLEtBQTVCLEdBQW9DTSxJQUFJLENBQUNDLFNBQUwsQ0FBZUMsWUFBWSxDQUFDUixLQUFELEVBQVEsSUFBUixFQUFjLElBQWQsRUFBb0JHLGlCQUFwQixDQUEzQixFQUFtRUEsaUJBQW5FLEVBQXNGLElBQXRGLENBQTNDO0FBQ0QsQ0FKRDs7QUFLQVQsUUFBUSxDQUFDZSxNQUFULEdBQWtCLFVBQVNDLElBQVQsRUFBZUMsS0FBZixFQUFzQjtBQUN0QyxTQUFPaEI7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsTUFBS0gsU0FBTCxDQUFlaUIsTUFBZixDQUFzQkcsSUFBdEIsQ0FBMkJsQixRQUEzQixFQUFxQ2dCLElBQUksQ0FBQ0csT0FBTCxDQUFhLFlBQWIsRUFBMkIsSUFBM0IsQ0FBckMsRUFBdUVGLEtBQUssQ0FBQ0UsT0FBTixDQUFjLFlBQWQsRUFBNEIsSUFBNUIsQ0FBdkU7QUFBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0MsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEJDLE1BQTFCLEVBQWtDZixPQUFsQyxFQUEyQztBQUFFLFNBQU9QLFFBQVEsQ0FBQ3VCLElBQVQsQ0FBY0YsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJmLE9BQTlCLENBQVA7QUFBZ0QsQyxDQUVwRztBQUNBOzs7QUFDTyxTQUFTTyxZQUFULENBQXNCVSxHQUF0QixFQUEyQkMsS0FBM0IsRUFBa0NDLGdCQUFsQyxFQUFvREMsUUFBcEQsRUFBOERDLEdBQTlELEVBQW1FO0FBQ3hFSCxFQUFBQSxLQUFLLEdBQUdBLEtBQUssSUFBSSxFQUFqQjtBQUNBQyxFQUFBQSxnQkFBZ0IsR0FBR0EsZ0JBQWdCLElBQUksRUFBdkM7O0FBRUEsTUFBSUMsUUFBSixFQUFjO0FBQ1pILElBQUFBLEdBQUcsR0FBR0csUUFBUSxDQUFDQyxHQUFELEVBQU1KLEdBQU4sQ0FBZDtBQUNEOztBQUVELE1BQUlLLENBQUo7O0FBRUEsT0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHSixLQUFLLENBQUNLLE1BQXRCLEVBQThCRCxDQUFDLElBQUksQ0FBbkMsRUFBc0M7QUFDcEMsUUFBSUosS0FBSyxDQUFDSSxDQUFELENBQUwsS0FBYUwsR0FBakIsRUFBc0I7QUFDcEIsYUFBT0UsZ0JBQWdCLENBQUNHLENBQUQsQ0FBdkI7QUFDRDtBQUNGOztBQUVELE1BQUlFLGdCQUFKOztBQUVBLE1BQUkscUJBQXFCbkMsdUJBQXVCLENBQUNzQixJQUF4QixDQUE2Qk0sR0FBN0IsQ0FBekIsRUFBNEQ7QUFDMURDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLElBQUlFLEtBQUosQ0FBVVQsR0FBRyxDQUFDTSxNQUFkLENBQW5CO0FBQ0FKLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFNBQUtGLENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR0wsR0FBRyxDQUFDTSxNQUFwQixFQUE0QkQsQ0FBQyxJQUFJLENBQWpDLEVBQW9DO0FBQ2xDRSxNQUFBQSxnQkFBZ0IsQ0FBQ0YsQ0FBRCxDQUFoQixHQUFzQmYsWUFBWSxDQUFDVSxHQUFHLENBQUNLLENBQUQsQ0FBSixFQUFTSixLQUFULEVBQWdCQyxnQkFBaEIsRUFBa0NDLFFBQWxDLEVBQTRDQyxHQUE1QyxDQUFsQztBQUNEOztBQUNESCxJQUFBQSxLQUFLLENBQUNTLEdBQU47QUFDQVIsSUFBQUEsZ0JBQWdCLENBQUNRLEdBQWpCO0FBQ0EsV0FBT0gsZ0JBQVA7QUFDRDs7QUFFRCxNQUFJUCxHQUFHLElBQUlBLEdBQUcsQ0FBQ1csTUFBZixFQUF1QjtBQUNyQlgsSUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNXLE1BQUosRUFBTjtBQUNEOztBQUVEO0FBQUk7QUFBQTtBQUFBO0FBQU9YLEVBQUFBLEdBQVAsTUFBZSxRQUFmLElBQTJCQSxHQUFHLEtBQUssSUFBdkMsRUFBNkM7QUFDM0NDLElBQUFBLEtBQUssQ0FBQ08sSUFBTixDQUFXUixHQUFYO0FBQ0FPLElBQUFBLGdCQUFnQixHQUFHLEVBQW5CO0FBQ0FMLElBQUFBLGdCQUFnQixDQUFDTSxJQUFqQixDQUFzQkQsZ0JBQXRCOztBQUNBLFFBQUlLLFVBQVUsR0FBRyxFQUFqQjtBQUFBLFFBQ0lSLElBREo7O0FBRUEsU0FBS0EsSUFBTCxJQUFZSixHQUFaLEVBQWlCO0FBQ2Y7QUFDQSxVQUFJQSxHQUFHLENBQUNhLGNBQUosQ0FBbUJULElBQW5CLENBQUosRUFBNkI7QUFDM0JRLFFBQUFBLFVBQVUsQ0FBQ0osSUFBWCxDQUFnQkosSUFBaEI7QUFDRDtBQUNGOztBQUNEUSxJQUFBQSxVQUFVLENBQUNFLElBQVg7O0FBQ0EsU0FBS1QsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHTyxVQUFVLENBQUNOLE1BQTNCLEVBQW1DRCxDQUFDLElBQUksQ0FBeEMsRUFBMkM7QUFDekNELE1BQUFBLElBQUcsR0FBR1EsVUFBVSxDQUFDUCxDQUFELENBQWhCO0FBQ0FFLE1BQUFBLGdCQUFnQixDQUFDSCxJQUFELENBQWhCLEdBQXdCZCxZQUFZLENBQUNVLEdBQUcsQ0FBQ0ksSUFBRCxDQUFKLEVBQVdILEtBQVgsRUFBa0JDLGdCQUFsQixFQUFvQ0MsUUFBcEMsRUFBOENDLElBQTlDLENBQXBDO0FBQ0Q7O0FBQ0RILElBQUFBLEtBQUssQ0FBQ1MsR0FBTjtBQUNBUixJQUFBQSxnQkFBZ0IsQ0FBQ1EsR0FBakI7QUFDRCxHQW5CRCxNQW1CTztBQUNMSCxJQUFBQSxnQkFBZ0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n  return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n  return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n  return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n  /*istanbul ignore start*/\n  var\n  /*istanbul ignore end*/\n  options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n      delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n      list = [],\n      i = 0;\n\n  function parseIndex() {\n    var index = {};\n    list.push(index); // Parse diff metadata\n\n    while (i < diffstr.length) {\n      var line = diffstr[i]; // File header found, end parsing diff metadata\n\n      if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n        break;\n      } // Diff index\n\n\n      var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n      if (header) {\n        index.index = header[1];\n      }\n\n      i++;\n    } // Parse file headers if they are defined. Unified diff requires them, but\n    // there's no technical issues to have an isolated hunk without file header\n\n\n    parseFileHeader(index);\n    parseFileHeader(index); // Parse hunks\n\n    index.hunks = [];\n\n    while (i < diffstr.length) {\n      var _line = diffstr[i];\n\n      if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n        break;\n      } else if (/^@@/.test(_line)) {\n        index.hunks.push(parseHunk());\n      } else if (_line && options.strict) {\n        // Ignore unexpected content unless in strict mode\n        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n      } else {\n        i++;\n      }\n    }\n  } // Parses the --- and +++ headers, if none are found, no lines\n  // are consumed.\n\n\n  function parseFileHeader(index) {\n    var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n    if (fileHeader) {\n      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n      var data = fileHeader[2].split('\\t', 2);\n      var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n      if (/^\".*\"$/.test(fileName)) {\n        fileName = fileName.substr(1, fileName.length - 2);\n      }\n\n      index[keyPrefix + 'FileName'] = fileName;\n      index[keyPrefix + 'Header'] = (data[1] || '').trim();\n      i++;\n    }\n  } // Parses a hunk\n  // This assumes that we are at the start of a hunk.\n\n\n  function parseHunk() {\n    var chunkHeaderIndex = i,\n        chunkHeaderLine = diffstr[i++],\n        chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n    var hunk = {\n      oldStart: +chunkHeader[1],\n      oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n      newStart: +chunkHeader[3],\n      newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n      lines: [],\n      linedelimiters: []\n    }; // Unified Diff Format quirk: If the chunk size is 0,\n    // the first number is one lower than one would expect.\n    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n    if (hunk.oldLines === 0) {\n      hunk.oldStart += 1;\n    }\n\n    if (hunk.newLines === 0) {\n      hunk.newStart += 1;\n    }\n\n    var addCount = 0,\n        removeCount = 0;\n\n    for (; i < diffstr.length; i++) {\n      // Lines starting with '---' could be mistaken for the \"remove line\" operation\n      // But they could be the header for the next file. Therefore prune such cases out.\n      if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n        break;\n      }\n\n      var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n        hunk.lines.push(diffstr[i]);\n        hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n        if (operation === '+') {\n          addCount++;\n        } else if (operation === '-') {\n          removeCount++;\n        } else if (operation === ' ') {\n          addCount++;\n          removeCount++;\n        }\n      } else {\n        break;\n      }\n    } // Handle the empty block count case\n\n\n    if (!addCount && hunk.newLines === 1) {\n      hunk.newLines = 0;\n    }\n\n    if (!removeCount && hunk.oldLines === 1) {\n      hunk.oldLines = 0;\n    } // Perform optional sanity checking\n\n\n    if (options.strict) {\n      if (addCount !== hunk.newLines) {\n        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n      }\n\n      if (removeCount !== hunk.oldLines) {\n        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n      }\n    }\n\n    return hunk;\n  }\n\n  while (i < diffstr.length) {\n    parseIndex();\n  }\n\n  return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n  var wantForward = true,\n      backwardExhausted = false,\n      forwardExhausted = false,\n      localOffset = 1;\n  return function iterator() {\n    if (wantForward && !forwardExhausted) {\n      if (backwardExhausted) {\n        localOffset++;\n      } else {\n        wantForward = false;\n      } // Check if trying to fit beyond text length, and if not, check it fits\n      // after offset location (or desired location on first iteration)\n\n\n      if (start + localOffset <= maxLine) {\n        return localOffset;\n      }\n\n      forwardExhausted = true;\n    }\n\n    if (!backwardExhausted) {\n      if (!forwardExhausted) {\n        wantForward = true;\n      } // Check if trying to fit before text beginning, and if not, check it fits\n      // before offset location\n\n\n      if (minLine <= start - localOffset) {\n        return -localOffset++;\n      }\n\n      backwardExhausted = true;\n      return iterator();\n    } // We tried to fit hunk before text beginning and beyond text length, then\n    // hunk can't fit on the text. Return undefined\n\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n  /*istanbul ignore start*/\n  var\n  /*istanbul ignore end*/\n  options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof uniDiff === 'string') {\n    uniDiff =\n    /*istanbul ignore start*/\n    (0,\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    _parse\n    /*istanbul ignore end*/\n    .\n    /*istanbul ignore start*/\n    parsePatch)\n    /*istanbul ignore end*/\n    (uniDiff);\n  }\n\n  if (Array.isArray(uniDiff)) {\n    if (uniDiff.length > 1) {\n      throw new Error('applyPatch only works with a single input.');\n    }\n\n    uniDiff = uniDiff[0];\n  } // Apply the diff to the input\n\n\n  var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n      delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n      hunks = uniDiff.hunks,\n      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n  /*istanbul ignore start*/\n  {\n    return (\n      /*istanbul ignore end*/\n      line === patchContent\n    );\n  },\n      errorCount = 0,\n      fuzzFactor = options.fuzzFactor || 0,\n      minLine = 0,\n      offset = 0,\n      removeEOFNL,\n      addEOFNL;\n  /**\n   * Checks if the hunk exactly fits on the provided location\n   */\n\n\n  function hunkFits(hunk, toPos) {\n    for (var j = 0; j < hunk.lines.length; j++) {\n      var line = hunk.lines[j],\n          operation = line.length > 0 ? line[0] : ' ',\n          content = line.length > 0 ? line.substr(1) : line;\n\n      if (operation === ' ' || operation === '-') {\n        // Context sanity check\n        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n          errorCount++;\n\n          if (errorCount > fuzzFactor) {\n            return false;\n          }\n        }\n\n        toPos++;\n      }\n    }\n\n    return true;\n  } // Search best fit offsets for each hunk based on the previous ones\n\n\n  for (var i = 0; i < hunks.length; i++) {\n    var hunk = hunks[i],\n        maxLine = lines.length - hunk.oldLines,\n        localOffset = 0,\n        toPos = offset + hunk.oldStart - 1;\n    var iterator =\n    /*istanbul ignore start*/\n    (0,\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    _distanceIterator\n    /*istanbul ignore end*/\n    [\n    /*istanbul ignore start*/\n    \"default\"\n    /*istanbul ignore end*/\n    ])(toPos, minLine, maxLine);\n\n    for (; localOffset !== undefined; localOffset = iterator()) {\n      if (hunkFits(hunk, toPos + localOffset)) {\n        hunk.offset = offset += localOffset;\n        break;\n      }\n    }\n\n    if (localOffset === undefined) {\n      return false;\n    } // Set lower text limit to end of the current hunk, so next ones don't try\n    // to fit over already patched text\n\n\n    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n  } // Apply patch hunks\n\n\n  var diffOffset = 0;\n\n  for (var _i = 0; _i < hunks.length; _i++) {\n    var _hunk = hunks[_i],\n        _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n    diffOffset += _hunk.newLines - _hunk.oldLines;\n\n    for (var j = 0; j < _hunk.lines.length; j++) {\n      var line = _hunk.lines[j],\n          operation = line.length > 0 ? line[0] : ' ',\n          content = line.length > 0 ? line.substr(1) : line,\n          delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n      if (operation === ' ') {\n        _toPos++;\n      } else if (operation === '-') {\n        lines.splice(_toPos, 1);\n        delimiters.splice(_toPos, 1);\n        /* istanbul ignore else */\n      } else if (operation === '+') {\n        lines.splice(_toPos, 0, content);\n        delimiters.splice(_toPos, 0, delimiter);\n        _toPos++;\n      } else if (operation === '\\\\') {\n        var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n        if (previousOperation === '+') {\n          removeEOFNL = true;\n        } else if (previousOperation === '-') {\n          addEOFNL = true;\n        }\n      }\n    }\n  } // Handle EOFNL insertion/removal\n\n\n  if (removeEOFNL) {\n    while (!lines[lines.length - 1]) {\n      lines.pop();\n      delimiters.pop();\n    }\n  } else if (addEOFNL) {\n    lines.push('');\n    delimiters.push('\\n');\n  }\n\n  for (var _k = 0; _k < lines.length - 1; _k++) {\n    lines[_k] = lines[_k] + delimiters[_k];\n  }\n\n  return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n  if (typeof uniDiff === 'string') {\n    uniDiff =\n    /*istanbul ignore start*/\n    (0,\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    _parse\n    /*istanbul ignore end*/\n    .\n    /*istanbul ignore start*/\n    parsePatch)\n    /*istanbul ignore end*/\n    (uniDiff);\n  }\n\n  var currentIndex = 0;\n\n  function processIndex() {\n    var index = uniDiff[currentIndex++];\n\n    if (!index) {\n      return options.complete();\n    }\n\n    options.loadFile(index, function (err, data) {\n      if (err) {\n        return options.complete(err);\n      }\n\n      var updatedContent = applyPatch(data, index, options);\n      options.patched(index, updatedContent, function (err) {\n        if (err) {\n          return options.complete(err);\n        }\n\n        processIndex();\n      });\n    });\n  }\n\n  processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0JBLElBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osT0FBZCxDQUFKLEVBQTRCO0FBQzFCLFFBQUlBLE9BQU8sQ0FBQ0ssTUFBUixHQUFpQixDQUFyQixFQUF3QjtBQUN0QixZQUFNLElBQUlDLEtBQUosQ0FBVSw0Q0FBVixDQUFOO0FBQ0Q7O0FBRUROLElBQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDLENBQUQsQ0FBakI7QUFDRCxHQVh1RCxDQWF4RDs7O0FBQ0EsTUFBSU8sS0FBSyxHQUFHUixNQUFNLENBQUNTLEtBQVAsQ0FBYSxxQkFBYixDQUFaO0FBQUEsTUFDSUMsVUFBVSxHQUFHVixNQUFNLENBQUNXLEtBQVAsQ0FBYSxzQkFBYixLQUF3QyxFQUR6RDtBQUFBLE1BRUlDLEtBQUssR0FBR1gsT0FBTyxDQUFDVyxLQUZwQjtBQUFBLE1BSUlDLFdBQVcsR0FBR1gsT0FBTyxDQUFDVyxXQUFSLElBQXdCLFVBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsU0FBbkIsRUFBOEJDLFlBQTlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0NGLE1BQUFBLElBQUksS0FBS0U7QUFBeEQ7QUFBQSxHQUoxQztBQUFBLE1BS0lDLFVBQVUsR0FBRyxDQUxqQjtBQUFBLE1BTUlDLFVBQVUsR0FBR2pCLE9BQU8sQ0FBQ2lCLFVBQVIsSUFBc0IsQ0FOdkM7QUFBQSxNQU9JQyxPQUFPLEdBQUcsQ0FQZDtBQUFBLE1BUUlDLE1BQU0sR0FBRyxDQVJiO0FBQUEsTUFVSUMsV0FWSjtBQUFBLE1BV0lDLFFBWEo7QUFhQTs7Ozs7QUFHQSxXQUFTQyxRQUFULENBQWtCQyxJQUFsQixFQUF3QkMsS0FBeEIsRUFBK0I7QUFDN0IsU0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNqQixLQUFMLENBQVdGLE1BQS9CLEVBQXVDcUIsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQyxVQUFJWixJQUFJLEdBQUdVLElBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQVgsQ0FBWDtBQUFBLFVBQ0lYLFNBQVMsR0FBSUQsSUFBSSxDQUFDVCxNQUFMLEdBQWMsQ0FBZCxHQUFrQlMsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEIsR0FEN0M7QUFBQSxVQUVJYSxPQUFPLEdBQUliLElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQ2MsTUFBTCxDQUFZLENBQVosQ0FBbEIsR0FBbUNkLElBRmxEOztBQUlBLFVBQUlDLFNBQVMsS0FBSyxHQUFkLElBQXFCQSxTQUFTLEtBQUssR0FBdkMsRUFBNEM7QUFDMUM7QUFDQSxZQUFJLENBQUNILFdBQVcsQ0FBQ2EsS0FBSyxHQUFHLENBQVQsRUFBWWxCLEtBQUssQ0FBQ2tCLEtBQUQsQ0FBakIsRUFBMEJWLFNBQTFCLEVBQXFDWSxPQUFyQyxDQUFoQixFQUErRDtBQUM3RFYsVUFBQUEsVUFBVTs7QUFFVixjQUFJQSxVQUFVLEdBQUdDLFVBQWpCLEVBQTZCO0FBQzNCLG1CQUFPLEtBQVA7QUFDRDtBQUNGOztBQUNETyxRQUFBQSxLQUFLO0FBQ047QUFDRjs7QUFFRCxXQUFPLElBQVA7QUFDRCxHQWxEdUQsQ0FvRHhEOzs7QUFDQSxPQUFLLElBQUlJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdsQixLQUFLLENBQUNOLE1BQTFCLEVBQWtDd0IsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJTCxJQUFJLEdBQUdiLEtBQUssQ0FBQ2tCLENBQUQsQ0FBaEI7QUFBQSxRQUNJQyxPQUFPLEdBQUd2QixLQUFLLENBQUNGLE1BQU4sR0FBZW1CLElBQUksQ0FBQ08sUUFEbEM7QUFBQSxRQUVJQyxXQUFXLEdBQUcsQ0FGbEI7QUFBQSxRQUdJUCxLQUFLLEdBQUdMLE1BQU0sR0FBR0ksSUFBSSxDQUFDUyxRQUFkLEdBQXlCLENBSHJDO0FBS0EsUUFBSUMsUUFBUTtBQUFHO0FBQUE7QUFBQTs7QUFBQUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsT0FBaUJWLEtBQWpCLEVBQXdCTixPQUF4QixFQUFpQ1csT0FBakMsQ0FBZjs7QUFFQSxXQUFPRSxXQUFXLEtBQUtJLFNBQXZCLEVBQWtDSixXQUFXLEdBQUdFLFFBQVEsRUFBeEQsRUFBNEQ7QUFDMUQsVUFBSVgsUUFBUSxDQUFDQyxJQUFELEVBQU9DLEtBQUssR0FBR08sV0FBZixDQUFaLEVBQXlDO0FBQ3ZDUixRQUFBQSxJQUFJLENBQUNKLE1BQUwsR0FBY0EsTUFBTSxJQUFJWSxXQUF4QjtBQUNBO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQSxXQUFXLEtBQUtJLFNBQXBCLEVBQStCO0FBQzdCLGFBQU8sS0FBUDtBQUNELEtBakJvQyxDQW1CckM7QUFDQTs7O0FBQ0FqQixJQUFBQSxPQUFPLEdBQUdLLElBQUksQ0FBQ0osTUFBTCxHQUFjSSxJQUFJLENBQUNTLFFBQW5CLEdBQThCVCxJQUFJLENBQUNPLFFBQTdDO0FBQ0QsR0EzRXVELENBNkV4RDs7O0FBQ0EsTUFBSU0sVUFBVSxHQUFHLENBQWpCOztBQUNBLE9BQUssSUFBSVIsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBR2xCLEtBQUssQ0FBQ04sTUFBMUIsRUFBa0N3QixFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlMLEtBQUksR0FBR2IsS0FBSyxDQUFDa0IsRUFBRCxDQUFoQjtBQUFBLFFBQ0lKLE1BQUssR0FBR0QsS0FBSSxDQUFDUyxRQUFMLEdBQWdCVCxLQUFJLENBQUNKLE1BQXJCLEdBQThCaUIsVUFBOUIsR0FBMkMsQ0FEdkQ7O0FBRUFBLElBQUFBLFVBQVUsSUFBSWIsS0FBSSxDQUFDYyxRQUFMLEdBQWdCZCxLQUFJLENBQUNPLFFBQW5DOztBQUVBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsS0FBSSxDQUFDakIsS0FBTCxDQUFXRixNQUEvQixFQUF1Q3FCLENBQUMsRUFBeEMsRUFBNEM7QUFDMUMsVUFBSVosSUFBSSxHQUFHVSxLQUFJLENBQUNqQixLQUFMLENBQVdtQixDQUFYLENBQVg7QUFBQSxVQUNJWCxTQUFTLEdBQUlELElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCLEdBRDdDO0FBQUEsVUFFSWEsT0FBTyxHQUFJYixJQUFJLENBQUNULE1BQUwsR0FBYyxDQUFkLEdBQWtCUyxJQUFJLENBQUNjLE1BQUwsQ0FBWSxDQUFaLENBQWxCLEdBQW1DZCxJQUZsRDtBQUFBLFVBR0l5QixTQUFTLEdBQUdmLEtBQUksQ0FBQ2dCLGNBQUwsSUFBdUJoQixLQUFJLENBQUNnQixjQUFMLENBQW9CZCxDQUFwQixDQUF2QixJQUFpRCxJQUhqRTs7QUFLQSxVQUFJWCxTQUFTLEtBQUssR0FBbEIsRUFBdUI7QUFDckJVLFFBQUFBLE1BQUs7QUFDTixPQUZELE1BRU8sSUFBSVYsU0FBUyxLQUFLLEdBQWxCLEVBQXVCO0FBQzVCUixRQUFBQSxLQUFLLENBQUNrQyxNQUFOLENBQWFoQixNQUFiLEVBQW9CLENBQXBCO0FBQ0FoQixRQUFBQSxVQUFVLENBQUNnQyxNQUFYLENBQWtCaEIsTUFBbEIsRUFBeUIsQ0FBekI7QUFDRjtBQUNDLE9BSk0sTUFJQSxJQUFJVixTQUFTLEtBQUssR0FBbEIsRUFBdUI7QUFDNUJSLFFBQUFBLEtBQUssQ0FBQ2tDLE1BQU4sQ0FBYWhCLE1BQWIsRUFBb0IsQ0FBcEIsRUFBdUJFLE9BQXZCO0FBQ0FsQixRQUFBQSxVQUFVLENBQUNnQyxNQUFYLENBQWtCaEIsTUFBbEIsRUFBeUIsQ0FBekIsRUFBNEJjLFNBQTVCO0FBQ0FkLFFBQUFBLE1BQUs7QUFDTixPQUpNLE1BSUEsSUFBSVYsU0FBUyxLQUFLLElBQWxCLEVBQXdCO0FBQzdCLFlBQUkyQixpQkFBaUIsR0FBR2xCLEtBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQUMsR0FBRyxDQUFmLElBQW9CRixLQUFJLENBQUNqQixLQUFMLENBQVdtQixDQUFDLEdBQUcsQ0FBZixFQUFrQixDQUFsQixDQUFwQixHQUEyQyxJQUFuRTs7QUFDQSxZQUFJZ0IsaUJBQWlCLEtBQUssR0FBMUIsRUFBK0I7QUFDN0JyQixVQUFBQSxXQUFXLEdBQUcsSUFBZDtBQUNELFNBRkQsTUFFTyxJQUFJcUIsaUJBQWlCLEtBQUssR0FBMUIsRUFBK0I7QUFDcENwQixVQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNEO0FBQ0Y7QUFDRjtBQUNGLEdBN0d1RCxDQStHeEQ7OztBQUNBLE1BQUlELFdBQUosRUFBaUI7QUFDZixXQUFPLENBQUNkLEtBQUssQ0FBQ0EsS0FBSyxDQUFDRixNQUFOLEdBQWUsQ0FBaEIsQ0FBYixFQUFpQztBQUMvQkUsTUFBQUEsS0FBSyxDQUFDb0MsR0FBTjtBQUNBbEMsTUFBQUEsVUFBVSxDQUFDa0MsR0FBWDtBQUNEO0FBQ0YsR0FMRCxNQUtPLElBQUlyQixRQUFKLEVBQWM7QUFDbkJmLElBQUFBLEtBQUssQ0FBQ3FDLElBQU4sQ0FBVyxFQUFYO0FBQ0FuQyxJQUFBQSxVQUFVLENBQUNtQyxJQUFYLENBQWdCLElBQWhCO0FBQ0Q7O0FBQ0QsT0FBSyxJQUFJQyxFQUFFLEdBQUcsQ0FBZCxFQUFpQkEsRUFBRSxHQUFHdEMsS0FBSyxDQUFDRixNQUFOLEdBQWUsQ0FBckMsRUFBd0N3QyxFQUFFLEVBQTFDLEVBQThDO0FBQzVDdEMsSUFBQUEsS0FBSyxDQUFDc0MsRUFBRCxDQUFMLEdBQVl0QyxLQUFLLENBQUNzQyxFQUFELENBQUwsR0FBWXBDLFVBQVUsQ0FBQ29DLEVBQUQsQ0FBbEM7QUFDRDs7QUFDRCxTQUFPdEMsS0FBSyxDQUFDdUMsSUFBTixDQUFXLEVBQVgsQ0FBUDtBQUNELEMsQ0FFRDs7O0FBQ08sU0FBU0MsWUFBVCxDQUFzQi9DLE9BQXRCLEVBQStCQyxPQUEvQixFQUF3QztBQUM3QyxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0JBLElBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJZ0QsWUFBWSxHQUFHLENBQW5COztBQUNBLFdBQVNDLFlBQVQsR0FBd0I7QUFDdEIsUUFBSUMsS0FBSyxHQUFHbEQsT0FBTyxDQUFDZ0QsWUFBWSxFQUFiLENBQW5COztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBT2pELE9BQU8sQ0FBQ2tELFFBQVIsRUFBUDtBQUNEOztBQUVEbEQsSUFBQUEsT0FBTyxDQUFDbUQsUUFBUixDQUFpQkYsS0FBakIsRUFBd0IsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsY0FBYyxHQUFHekQsVUFBVSxDQUFDd0QsSUFBRCxFQUFPSixLQUFQLEVBQWNqRCxPQUFkLENBQS9CO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ3VELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRURKLFFBQUFBLFlBQVk7QUFDYixPQU5EO0FBT0QsS0FiRDtBQWNEOztBQUNEQSxFQUFBQSxZQUFZO0FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gc291cmNlLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGh1bmtzID0gdW5pRGlmZi5odW5rcyxcblxuICAgICAgY29tcGFyZUxpbmUgPSBvcHRpb25zLmNvbXBhcmVMaW5lIHx8ICgobGluZU51bWJlciwgbGluZSwgb3BlcmF0aW9uLCBwYXRjaENvbnRlbnQpID0+IGxpbmUgPT09IHBhdGNoQ29udGVudCksXG4gICAgICBlcnJvckNvdW50ID0gMCxcbiAgICAgIGZ1enpGYWN0b3IgPSBvcHRpb25zLmZ1enpGYWN0b3IgfHwgMCxcbiAgICAgIG1pbkxpbmUgPSAwLFxuICAgICAgb2Zmc2V0ID0gMCxcblxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGV4YWN0bHkgZml0cyBvbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGh1bmtGaXRzKGh1bmssIHRvUG9zKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmVbMF0gOiAnICcpLFxuICAgICAgICAgIGNvbnRlbnQgPSAobGluZS5sZW5ndGggPiAwID8gbGluZS5zdWJzdHIoMSkgOiBsaW5lKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBsZXQgZGlmZk9mZnNldCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaHVuayA9IGh1bmtzW2ldLFxuICAgICAgICB0b1BvcyA9IGh1bmsub2xkU3RhcnQgKyBodW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuICAgIGRpZmZPZmZzZXQgKz0gaHVuay5uZXdMaW5lcyAtIGh1bmsub2xkTGluZXM7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpLFxuICAgICAgICAgIGRlbGltaXRlciA9IGh1bmsubGluZWRlbGltaXRlcnMgJiYgaHVuay5saW5lZGVsaW1pdGVyc1tqXSB8fCAnXFxuJztcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n  if (!options) {\n    options = {};\n  }\n\n  if (typeof options.context === 'undefined') {\n    options.context = 4;\n  }\n\n  var diff =\n  /*istanbul ignore start*/\n  (0,\n  /*istanbul ignore end*/\n\n  /*istanbul ignore start*/\n  _line\n  /*istanbul ignore end*/\n  .\n  /*istanbul ignore start*/\n  diffLines)\n  /*istanbul ignore end*/\n  (oldStr, newStr, options);\n\n  if (!diff) {\n    return;\n  }\n\n  diff.push({\n    value: '',\n    lines: []\n  }); // Append an empty value to make cleanup easier\n\n  function contextLines(lines) {\n    return lines.map(function (entry) {\n      return ' ' + entry;\n    });\n  }\n\n  var hunks = [];\n  var oldRangeStart = 0,\n      newRangeStart = 0,\n      curRange = [],\n      oldLine = 1,\n      newLine = 1;\n\n  /*istanbul ignore start*/\n  var _loop = function _loop(\n  /*istanbul ignore end*/\n  i) {\n    var current = diff[i],\n        lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n    current.lines = lines;\n\n    if (current.added || current.removed) {\n      /*istanbul ignore start*/\n      var _curRange;\n\n      /*istanbul ignore end*/\n      // If we have previous context, start with that\n      if (!oldRangeStart) {\n        var prev = diff[i - 1];\n        oldRangeStart = oldLine;\n        newRangeStart = newLine;\n\n        if (prev) {\n          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n          oldRangeStart -= curRange.length;\n          newRangeStart -= curRange.length;\n        }\n      } // Output our changes\n\n\n      /*istanbul ignore start*/\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      (_curRange =\n      /*istanbul ignore end*/\n      curRange).push.apply(\n      /*istanbul ignore start*/\n      _curRange\n      /*istanbul ignore end*/\n      ,\n      /*istanbul ignore start*/\n      _toConsumableArray(\n      /*istanbul ignore end*/\n      lines.map(function (entry) {\n        return (current.added ? '+' : '-') + entry;\n      }))); // Track the updated file position\n\n\n      if (current.added) {\n        newLine += lines.length;\n      } else {\n        oldLine += lines.length;\n      }\n    } else {\n      // Identical context lines. Track line changes\n      if (oldRangeStart) {\n        // Close out any changes that have been output (or join overlapping)\n        if (lines.length <= options.context * 2 && i < diff.length - 2) {\n          /*istanbul ignore start*/\n          var _curRange2;\n\n          /*istanbul ignore end*/\n          // Overlapping\n\n          /*istanbul ignore start*/\n\n          /*istanbul ignore end*/\n\n          /*istanbul ignore start*/\n          (_curRange2 =\n          /*istanbul ignore end*/\n          curRange).push.apply(\n          /*istanbul ignore start*/\n          _curRange2\n          /*istanbul ignore end*/\n          ,\n          /*istanbul ignore start*/\n          _toConsumableArray(\n          /*istanbul ignore end*/\n          contextLines(lines)));\n        } else {\n          /*istanbul ignore start*/\n          var _curRange3;\n\n          /*istanbul ignore end*/\n          // end the range and output\n          var contextSize = Math.min(lines.length, options.context);\n\n          /*istanbul ignore start*/\n\n          /*istanbul ignore end*/\n\n          /*istanbul ignore start*/\n          (_curRange3 =\n          /*istanbul ignore end*/\n          curRange).push.apply(\n          /*istanbul ignore start*/\n          _curRange3\n          /*istanbul ignore end*/\n          ,\n          /*istanbul ignore start*/\n          _toConsumableArray(\n          /*istanbul ignore end*/\n          contextLines(lines.slice(0, contextSize))));\n\n          var hunk = {\n            oldStart: oldRangeStart,\n            oldLines: oldLine - oldRangeStart + contextSize,\n            newStart: newRangeStart,\n            newLines: newLine - newRangeStart + contextSize,\n            lines: curRange\n          };\n\n          if (i >= diff.length - 2 && lines.length <= options.context) {\n            // EOF is inside this hunk\n            var oldEOFNewline = /\\n$/.test(oldStr);\n            var newEOFNewline = /\\n$/.test(newStr);\n            var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n            if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n              // special case: old has no eol and no trailing context; no-nl can end up before adds\n              // however, if the old file is empty, do not output the no-nl line\n              curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n            }\n\n            if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n              curRange.push('\\\\ No newline at end of file');\n            }\n          }\n\n          hunks.push(hunk);\n          oldRangeStart = 0;\n          newRangeStart = 0;\n          curRange = [];\n        }\n      }\n\n      oldLine += lines.length;\n      newLine += lines.length;\n    }\n  };\n\n  for (var i = 0; i < diff.length; i++) {\n    /*istanbul ignore start*/\n    _loop(\n    /*istanbul ignore end*/\n    i);\n  }\n\n  return {\n    oldFileName: oldFileName,\n    newFileName: newFileName,\n    oldHeader: oldHeader,\n    newHeader: newHeader,\n    hunks: hunks\n  };\n}\n\nfunction formatPatch(diff) {\n  if (Array.isArray(diff)) {\n    return diff.map(formatPatch).join('\\n');\n  }\n\n  var ret = [];\n\n  if (diff.oldFileName == diff.newFileName) {\n    ret.push('Index: ' + diff.oldFileName);\n  }\n\n  ret.push('===================================================================');\n  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n  for (var i = 0; i < diff.hunks.length; i++) {\n    var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n    // the first number is one lower than one would expect.\n    // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n    if (hunk.oldLines === 0) {\n      hunk.oldStart -= 1;\n    }\n\n    if (hunk.newLines === 0) {\n      hunk.newStart -= 1;\n    }\n\n    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n    ret.push.apply(ret, hunk.lines);\n  }\n\n  return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n  return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXQiLCJhcHBseSIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtB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QUNuRixTQUFPNEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmxELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRpZmYpKSB7XG4gICAgcmV0dXJuIGRpZmYubWFwKGZvcm1hdFBhdGNoKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n  if (start.length > array.length) {\n    return false;\n  }\n\n  for (var i = 0; i < start.length; i++) {\n    if (start[i] !== array[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n  /*istanbul ignore start*/\n  var _calcOldNewLineCount =\n  /*istanbul ignore end*/\n  calcOldNewLineCount(hunk.lines),\n      oldLines = _calcOldNewLineCount.oldLines,\n      newLines = _calcOldNewLineCount.newLines;\n\n  if (oldLines !== undefined) {\n    hunk.oldLines = oldLines;\n  } else {\n    delete hunk.oldLines;\n  }\n\n  if (newLines !== undefined) {\n    hunk.newLines = newLines;\n  } else {\n    delete hunk.newLines;\n  }\n}\n\nfunction merge(mine, theirs, base) {\n  mine = loadPatch(mine, base);\n  theirs = loadPatch(theirs, base);\n  var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n  // Leaving sanity checks on this to the API consumer that may know more about the\n  // meaning in their own context.\n\n  if (mine.index || theirs.index) {\n    ret.index = mine.index || theirs.index;\n  }\n\n  if (mine.newFileName || theirs.newFileName) {\n    if (!fileNameChanged(mine)) {\n      // No header or no change in ours, use theirs (and ours if theirs does not exist)\n      ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n      ret.newFileName = theirs.newFileName || mine.newFileName;\n      ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n      ret.newHeader = theirs.newHeader || mine.newHeader;\n    } else if (!fileNameChanged(theirs)) {\n      // No header or no change in theirs, use ours\n      ret.oldFileName = mine.oldFileName;\n      ret.newFileName = mine.newFileName;\n      ret.oldHeader = mine.oldHeader;\n      ret.newHeader = mine.newHeader;\n    } else {\n      // Both changed... figure it out\n      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n    }\n  }\n\n  ret.hunks = [];\n  var mineIndex = 0,\n      theirsIndex = 0,\n      mineOffset = 0,\n      theirsOffset = 0;\n\n  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n    var mineCurrent = mine.hunks[mineIndex] || {\n      oldStart: Infinity\n    },\n        theirsCurrent = theirs.hunks[theirsIndex] || {\n      oldStart: Infinity\n    };\n\n    if (hunkBefore(mineCurrent, theirsCurrent)) {\n      // This patch does not overlap with any of the others, yay.\n      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n      mineIndex++;\n      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n    } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n      // This patch does not overlap with any of the others, yay.\n      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n      theirsIndex++;\n      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n    } else {\n      // Overlap, merge as best we can\n      var mergedHunk = {\n        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n        oldLines: 0,\n        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n        newLines: 0,\n        lines: []\n      };\n      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n      theirsIndex++;\n      mineIndex++;\n      ret.hunks.push(mergedHunk);\n    }\n  }\n\n  return ret;\n}\n\nfunction loadPatch(param, base) {\n  if (typeof param === 'string') {\n    if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n      return (\n        /*istanbul ignore start*/\n        (0,\n        /*istanbul ignore end*/\n\n        /*istanbul ignore start*/\n        _parse\n        /*istanbul ignore end*/\n        .\n        /*istanbul ignore start*/\n        parsePatch)\n        /*istanbul ignore end*/\n        (param)[0]\n      );\n    }\n\n    if (!base) {\n      throw new Error('Must provide a base reference or pass in a patch');\n    }\n\n    return (\n      /*istanbul ignore start*/\n      (0,\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      _create\n      /*istanbul ignore end*/\n      .\n      /*istanbul ignore start*/\n      structuredPatch)\n      /*istanbul ignore end*/\n      (undefined, undefined, base, param)\n    );\n  }\n\n  return param;\n}\n\nfunction fileNameChanged(patch) {\n  return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n  if (mine === theirs) {\n    return mine;\n  } else {\n    index.conflict = true;\n    return {\n      mine: mine,\n      theirs: theirs\n    };\n  }\n}\n\nfunction hunkBefore(test, check) {\n  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n  return {\n    oldStart: hunk.oldStart,\n    oldLines: hunk.oldLines,\n    newStart: hunk.newStart + offset,\n    newLines: hunk.newLines,\n    lines: hunk.lines\n  };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n  // This will generally result in a conflicted hunk, but there are cases where the context\n  // is the only overlap where we can successfully merge the content here.\n  var mine = {\n    offset: mineOffset,\n    lines: mineLines,\n    index: 0\n  },\n      their = {\n    offset: theirOffset,\n    lines: theirLines,\n    index: 0\n  }; // Handle any leading content\n\n  insertLeading(hunk, mine, their);\n  insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n  while (mine.index < mine.lines.length && their.index < their.lines.length) {\n    var mineCurrent = mine.lines[mine.index],\n        theirCurrent = their.lines[their.index];\n\n    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n      // Both modified ...\n      mutualChange(hunk, mine, their);\n    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n      /*istanbul ignore start*/\n      var _hunk$lines;\n\n      /*istanbul ignore end*/\n      // Mine inserted\n\n      /*istanbul ignore start*/\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      (_hunk$lines =\n      /*istanbul ignore end*/\n      hunk.lines).push.apply(\n      /*istanbul ignore start*/\n      _hunk$lines\n      /*istanbul ignore end*/\n      ,\n      /*istanbul ignore start*/\n      _toConsumableArray(\n      /*istanbul ignore end*/\n      collectChange(mine)));\n    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n      /*istanbul ignore start*/\n      var _hunk$lines2;\n\n      /*istanbul ignore end*/\n      // Theirs inserted\n\n      /*istanbul ignore start*/\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      (_hunk$lines2 =\n      /*istanbul ignore end*/\n      hunk.lines).push.apply(\n      /*istanbul ignore start*/\n      _hunk$lines2\n      /*istanbul ignore end*/\n      ,\n      /*istanbul ignore start*/\n      _toConsumableArray(\n      /*istanbul ignore end*/\n      collectChange(their)));\n    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n      // Mine removed or edited\n      removal(hunk, mine, their);\n    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n      // Their removed or edited\n      removal(hunk, their, mine, true);\n    } else if (mineCurrent === theirCurrent) {\n      // Context identity\n      hunk.lines.push(mineCurrent);\n      mine.index++;\n      their.index++;\n    } else {\n      // Context mismatch\n      conflict(hunk, collectChange(mine), collectChange(their));\n    }\n  } // Now push anything that may be remaining\n\n\n  insertTrailing(hunk, mine);\n  insertTrailing(hunk, their);\n  calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n  var myChanges = collectChange(mine),\n      theirChanges = collectChange(their);\n\n  if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n    // Special case for remove changes that are supersets of one another\n    if (\n    /*istanbul ignore start*/\n    (0,\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    _array\n    /*istanbul ignore end*/\n    .\n    /*istanbul ignore start*/\n    arrayStartsWith)\n    /*istanbul ignore end*/\n    (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n      /*istanbul ignore start*/\n      var _hunk$lines3;\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      (_hunk$lines3 =\n      /*istanbul ignore end*/\n      hunk.lines).push.apply(\n      /*istanbul ignore start*/\n      _hunk$lines3\n      /*istanbul ignore end*/\n      ,\n      /*istanbul ignore start*/\n      _toConsumableArray(\n      /*istanbul ignore end*/\n      myChanges));\n\n      return;\n    } else if (\n    /*istanbul ignore start*/\n    (0,\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    _array\n    /*istanbul ignore end*/\n    .\n    /*istanbul ignore start*/\n    arrayStartsWith)\n    /*istanbul ignore end*/\n    (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n      /*istanbul ignore start*/\n      var _hunk$lines4;\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n\n      /*istanbul ignore end*/\n\n      /*istanbul ignore start*/\n      (_hunk$lines4 =\n      /*istanbul ignore end*/\n      hunk.lines).push.apply(\n      /*istanbul ignore start*/\n      _hunk$lines4\n      /*istanbul ignore end*/\n      ,\n      /*istanbul ignore start*/\n      _toConsumableArray(\n      /*istanbul ignore end*/\n      theirChanges));\n\n      return;\n    }\n  } else if (\n  /*istanbul ignore start*/\n  (0,\n  /*istanbul ignore end*/\n\n  /*istanbul ignore start*/\n  _array\n  /*istanbul ignore end*/\n  .\n  /*istanbul ignore start*/\n  arrayEqual)\n  /*istanbul ignore end*/\n  (myChanges, theirChanges)) {\n    /*istanbul ignore start*/\n    var _hunk$lines5;\n\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    (_hunk$lines5 =\n    /*istanbul ignore end*/\n    hunk.lines).push.apply(\n    /*istanbul ignore start*/\n    _hunk$lines5\n    /*istanbul ignore end*/\n    ,\n    /*istanbul ignore start*/\n    _toConsumableArray(\n    /*istanbul ignore end*/\n    myChanges));\n\n    return;\n  }\n\n  conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n  var myChanges = collectChange(mine),\n      theirChanges = collectContext(their, myChanges);\n\n  if (theirChanges.merged) {\n    /*istanbul ignore start*/\n    var _hunk$lines6;\n\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n\n    /*istanbul ignore end*/\n\n    /*istanbul ignore start*/\n    (_hunk$lines6 =\n    /*istanbul ignore end*/\n    hunk.lines).push.apply(\n    /*istanbul ignore start*/\n    _hunk$lines6\n    /*istanbul ignore end*/\n    ,\n    /*istanbul ignore start*/\n    _toConsumableArray(\n    /*istanbul ignore end*/\n    theirChanges.merged));\n  } else {\n    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n  }\n}\n\nfunction conflict(hunk, mine, their) {\n  hunk.conflict = true;\n  hunk.lines.push({\n    conflict: true,\n    mine: mine,\n    theirs: their\n  });\n}\n\nfunction insertLeading(hunk, insert, their) {\n  while (insert.offset < their.offset && insert.index < insert.lines.length) {\n    var line = insert.lines[insert.index++];\n    hunk.lines.push(line);\n    insert.offset++;\n  }\n}\n\nfunction insertTrailing(hunk, insert) {\n  while (insert.index < insert.lines.length) {\n    var line = insert.lines[insert.index++];\n    hunk.lines.push(line);\n  }\n}\n\nfunction collectChange(state) {\n  var ret = [],\n      operation = state.lines[state.index][0];\n\n  while (state.index < state.lines.length) {\n    var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n    if (operation === '-' && line[0] === '+') {\n      operation = '+';\n    }\n\n    if (operation === line[0]) {\n      ret.push(line);\n      state.index++;\n    } else {\n      break;\n    }\n  }\n\n  return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n  var changes = [],\n      merged = [],\n      matchIndex = 0,\n      contextChanges = false,\n      conflicted = false;\n\n  while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n    var change = state.lines[state.index],\n        match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n    if (match[0] === '+') {\n      break;\n    }\n\n    contextChanges = contextChanges || change[0] !== ' ';\n    merged.push(match);\n    matchIndex++; // Consume any additions in the other block as a conflict to attempt\n    // to pull in the remaining context after this\n\n    if (change[0] === '+') {\n      conflicted = true;\n\n      while (change[0] === '+') {\n        changes.push(change);\n        change = state.lines[++state.index];\n      }\n    }\n\n    if (match.substr(1) === change.substr(1)) {\n      changes.push(change);\n      state.index++;\n    } else {\n      conflicted = true;\n    }\n  }\n\n  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n    conflicted = true;\n  }\n\n  if (conflicted) {\n    return changes;\n  }\n\n  while (matchIndex < matchChanges.length) {\n    merged.push(matchChanges[matchIndex++]);\n  }\n\n  return {\n    merged: merged,\n    changes: changes\n  };\n}\n\nfunction allRemoves(changes) {\n  return changes.reduce(function (prev, change) {\n    return prev && change[0] === '-';\n  }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n  for (var i = 0; i < delta; i++) {\n    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n    if (state.lines[state.index + i] !== ' ' + changeContent) {\n      return false;\n    }\n  }\n\n  state.index += delta;\n  return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n  var oldLines = 0;\n  var newLines = 0;\n  lines.forEach(function (line) {\n    if (typeof line !== 'string') {\n      var myCount = calcOldNewLineCount(line.mine);\n      var theirCount = calcOldNewLineCount(line.theirs);\n\n      if (oldLines !== undefined) {\n        if (myCount.oldLines === theirCount.oldLines) {\n          oldLines += myCount.oldLines;\n        } else {\n          oldLines = undefined;\n        }\n      }\n\n      if (newLines !== undefined) {\n        if (myCount.newLines === theirCount.newLines) {\n          newLines += myCount.newLines;\n        } else {\n          newLines = undefined;\n        }\n      }\n    } else {\n      if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n        newLines++;\n      }\n\n      if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n        oldLines++;\n      }\n    }\n  });\n  return {\n    oldLines: oldLines,\n    newLines: newLines\n  };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndD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QUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.reversePatch = reversePatch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*istanbul ignore end*/\nfunction reversePatch(structuredPatch) {\n  if (Array.isArray(structuredPatch)) {\n    return structuredPatch.map(reversePatch).reverse();\n  }\n\n  return (\n    /*istanbul ignore start*/\n    _objectSpread(_objectSpread({},\n    /*istanbul ignore end*/\n    structuredPatch), {}, {\n      oldFileName: structuredPatch.newFileName,\n      oldHeader: structuredPatch.newHeader,\n      newFileName: structuredPatch.oldFileName,\n      newHeader: structuredPatch.oldHeader,\n      hunks: structuredPatch.hunks.map(function (hunk) {\n        return {\n          oldLines: hunk.newLines,\n          oldStart: hunk.newStart,\n          newLines: hunk.oldLines,\n          newStart: hunk.oldStart,\n          linedelimiters: hunk.linedelimiters,\n          lines: hunk.lines.map(function (l) {\n            if (l.startsWith('-')) {\n              return (\n                /*istanbul ignore start*/\n                \"+\".concat(\n                /*istanbul ignore end*/\n                l.slice(1))\n              );\n            }\n\n            if (l.startsWith('+')) {\n              return (\n                /*istanbul ignore start*/\n                \"-\".concat(\n                /*istanbul ignore end*/\n                l.slice(1))\n              );\n            }\n\n            return l;\n          })\n        };\n      })\n    })\n  );\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sIm5hbWVzIjpbInJldmVyc2VQYXRjaCIsInN0cnVjdHVyZWRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJldmVyc2UiLCJvbGRGaWxlTmFtZSIsIm5ld0ZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwiaHVua3MiLCJodW5rIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsIm9sZFN0YXJ0IiwibmV3U3RhcnQiLCJsaW5lZGVsaW1pdGVycyIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsWUFBVCxDQUFzQkMsZUFBdEIsRUFBdUM7QUFDNUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxXQUFPQSxlQUFlLENBQUNHLEdBQWhCLENBQW9CSixZQUFwQixFQUFrQ0ssT0FBbEMsRUFBUDtBQUNEOztBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQ0tKLElBQUFBLGVBREw7QUFFRUssTUFBQUEsV0FBVyxFQUFFTCxlQUFlLENBQUNNLFdBRi9CO0FBR0VDLE1BQUFBLFNBQVMsRUFBRVAsZUFBZSxDQUFDUSxTQUg3QjtBQUlFRixNQUFBQSxXQUFXLEVBQUVOLGVBQWUsQ0FBQ0ssV0FKL0I7QUFLRUcsTUFBQUEsU0FBUyxFQUFFUixlQUFlLENBQUNPLFNBTDdCO0FBTUVFLE1BQUFBLEtBQUssRUFBRVQsZUFBZSxDQUFDUyxLQUFoQixDQUFzQk4sR0FBdEIsQ0FBMEIsVUFBQU8sSUFBSSxFQUFJO0FBQ3ZDLGVBQU87QUFDTEMsVUFBQUEsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBRFY7QUFFTEMsVUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNJLFFBRlY7QUFHTEYsVUFBQUEsUUFBUSxFQUFFRixJQUFJLENBQUNDLFFBSFY7QUFJTEcsVUFBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBSlY7QUFLTEUsVUFBQUEsY0FBYyxFQUFFTCxJQUFJLENBQUNLLGNBTGhCO0FBTUxDLFVBQUFBLEtBQUssRUFBRU4sSUFBSSxDQUFDTSxLQUFMLENBQVdiLEdBQVgsQ0FBZSxVQUFBYyxDQUFDLEVBQUk7QUFDekIsZ0JBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsZ0JBQUlGLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsbUJBQU9GLENBQVA7QUFDRCxXQUpNO0FBTkYsU0FBUDtBQVlELE9BYk07QUFOVDtBQUFBO0FBcUJEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RydWN0dXJlZFBhdGNoKSkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2gubWFwKHJldmVyc2VQYXRjaCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdHJ1Y3R1cmVkUGF0Y2gsXG4gICAgb2xkRmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5uZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5uZXdIZWFkZXIsXG4gICAgbmV3RmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5vbGRGaWxlTmFtZSxcbiAgICBuZXdIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5vbGRIZWFkZXIsXG4gICAgaHVua3M6IHN0cnVjdHVyZWRQYXRjaC5odW5rcy5tYXAoaHVuayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICAgICAgb2xkU3RhcnQ6IGh1bmsubmV3U3RhcnQsXG4gICAgICAgIG5ld0xpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgICAgICBuZXdTdGFydDogaHVuay5vbGRTdGFydCxcbiAgICAgICAgbGluZWRlbGltaXRlcnM6IGh1bmsubGluZWRlbGltaXRlcnMsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n  var ret = [],\n      change,\n      operation;\n\n  for (var i = 0; i < changes.length; i++) {\n    change = changes[i];\n\n    if (change.added) {\n      operation = 1;\n    } else if (change.removed) {\n      operation = -1;\n    } else {\n      operation = 0;\n    }\n\n    ret.push([operation, change.value]);\n  }\n\n  return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n  var ret = [];\n\n  for (var i = 0; i < changes.length; i++) {\n    var change = changes[i];\n\n    if (change.added) {\n      ret.push('<ins>');\n    } else if (change.removed) {\n      ret.push('<del>');\n    }\n\n    ret.push(escapeHTML(change.value));\n\n    if (change.added) {\n      ret.push('</ins>');\n    } else if (change.removed) {\n      ret.push('</del>');\n    }\n  }\n\n  return ret.join('');\n}\n\nfunction escapeHTML(s) {\n  var n = s;\n  n = n.replace(/&/g, '&amp;');\n  n = n.replace(/</g, '&lt;');\n  n = n.replace(/>/g, '&gt;');\n  n = n.replace(/\"/g, '&quot;');\n  return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n  enumerable: true,\n  get: function get() {\n    return _base[\"default\"];\n  }\n});\nObject.defineProperty(exports, \"diffChars\", {\n  enumerable: true,\n  get: function get() {\n    return _character.diffChars;\n  }\n});\nObject.defineProperty(exports, \"diffWords\", {\n  enumerable: true,\n  get: function get() {\n    return _word.diffWords;\n  }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n  enumerable: true,\n  get: function get() {\n    return _word.diffWordsWithSpace;\n  }\n});\nObject.defineProperty(exports, \"diffLines\", {\n  enumerable: true,\n  get: function get() {\n    return _line.diffLines;\n  }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n  enumerable: true,\n  get: function get() {\n    return _line.diffTrimmedLines;\n  }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n  enumerable: true,\n  get: function get() {\n    return _sentence.diffSentences;\n  }\n});\nObject.defineProperty(exports, \"diffCss\", {\n  enumerable: true,\n  get: function get() {\n    return _css.diffCss;\n  }\n});\nObject.defineProperty(exports, \"diffJson\", {\n  enumerable: true,\n  get: function get() {\n    return _json.diffJson;\n  }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n  enumerable: true,\n  get: function get() {\n    return _json.canonicalize;\n  }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n  enumerable: true,\n  get: function get() {\n    return _array.diffArrays;\n  }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n  enumerable: true,\n  get: function get() {\n    return _apply.applyPatch;\n  }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n  enumerable: true,\n  get: function get() {\n    return _apply.applyPatches;\n  }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n  enumerable: true,\n  get: function get() {\n    return _parse.parsePatch;\n  }\n});\nObject.defineProperty(exports, \"merge\", {\n  enumerable: true,\n  get: function get() {\n    return _merge.merge;\n  }\n});\nObject.defineProperty(exports, \"reversePatch\", {\n  enumerable: true,\n  get: function get() {\n    return _reverse.reversePatch;\n  }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n  enumerable: true,\n  get: function get() {\n    return _create.structuredPatch;\n  }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n  enumerable: true,\n  get: function get() {\n    return _create.createTwoFilesPatch;\n  }\n});\nObject.defineProperty(exports, \"createPatch\", {\n  enumerable: true,\n  get: function get() {\n    return _create.createPatch;\n  }\n});\nObject.defineProperty(exports, \"formatPatch\", {\n  enumerable: true,\n  get: function get() {\n    return _create.formatPatch;\n  }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n  enumerable: true,\n  get: function get() {\n    return _dmp.convertChangesToDMP;\n  }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n  enumerable: true,\n  get: function get() {\n    return _xml.convertChangesToXML;\n  }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_reverse = require(\"./patch/reverse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","// objects and functions for formatting diffs with partial context.  see the 'makeHunks()' documentation, below\n// for details.\n\n'use strict'\n\nfunction calcLen (linechanges, ab) {\n    let len = 0\n    for (let ci = 0; ci < linechanges.length; ci++) {\n        switch (linechanges[ci].type) {\n            case REMOVED:\n                len += ab[0]\n                break\n            case ADDED:\n                len += ab[1]\n                break\n            case UNMODIFIED:\n                len++\n                break\n            default:\n                throw Error('unknown change type: ' + linechanges[ci].type)\n        }\n    }\n    return len\n}\n\nfunction Hunk (aoff, boff, changes) {\n    this.changes = changes\n    this.aoff = aoff\n    this.boff = boff\n    this._alen = -1\n    this._blen = -1\n}\n\nObject.defineProperty (Hunk.prototype, 'alen', {\n    get: function () { return this._alen === -1 ? (this._alen = calcLen(this.changes, [1,0])) : this._alen }\n})\n\nObject.defineProperty (Hunk.prototype, 'blen', {\n    get: function () { return this._blen === -1 ? (this._blen = calcLen(this.changes, [0,1])) : this._blen }\n})\n\nHunk.prototype.unified = function () {\n    let ret = [this.unifiedHeader()]\n    this.changes.forEach(function(c) {\n        ret.push(c.unified())\n    })\n    // console.log(\"expect:\\n'\" + ret.join(\"'\\n'\") + \"'\")   // useful for creating test output\n    return ret.join('\\n')\n}\n\nHunk.prototype.unifiedHeader = function () {\n    let alen = this.alen === 1 ? '' : ',' + this.alen\n    let blen = this.blen === 1 ? '' : ',' + this.blen\n    // empty hunks show zeroith line (prior).  hunks with lines show first line number\n    let afudg = this.alen === 0 ? 0 : 1\n    let bfudg = this.blen === 0 ? 0 : 1\n    return '@@ -' + (this.aoff+afudg) + alen + ' +' + (this.boff+bfudg) + blen + ' @@'\n}\n\nHunk.prototype.shorthand = function () {\n    return this.changes.reduce(function(s,c){ return s + c.type }, '')\n}\n\nHunk.prototype.toString = function () {\n    return \"{\" + this.shorthand() + \"} \" + this.unifiedHeader()\n}\n\nconst ADDED = '+'\nconst REMOVED = '-'\nconst UNMODIFIED = 's'\n\nfunction type2unified (type) { return type === 's' ? ' ' : type }\n\n// LineChange objects represent a single line of change.  Converting diff.diffLine() result array into LineChange\n// object array:\n//\n//    1.  simplifies logic that needs work with lines\n//    2.  separates this extension module from specific dependency on the diff library\nfunction LineChange (type, text) {\n    this.type = type   // ADDED, REMOVED, UNMODIFIED\n    this.text = text\n}\nLineChange.prototype.unified = function () {\n    return type2unified(this.type) + this.text\n}\nLineChange.prototype.toString = function () {  return this.unified() }\n\n// convert a single change from diff.diffLines() into a single line string\n// (handy for debugging)\nfunction change2string (c, maxwidth) {\n    maxwidth = maxwidth || 60\n    let ret = c.count + ': ' + type2unified(c.type)\n    let lim = Math.min(maxwidth - ret.length, c.value.length-1) // remove last newline\n    let txt = c.value.substring(0,lim).replace(/\\n/g, ',') + (c.value.length > (lim+1) ? '...' : '')\n    return  ret + txt\n}\n\n// Convert a change as returned from diff.diffLines() into an LineChange objects with offset information.\n//\n//     change    - object returned from diff.diffLines() containing one or more lines of change info\n//     select    - (int)\n//                  positive, return up to this many lines from the start of change.\n//                  negative, return up to this many lines from the end of the change.\n//                  zero, return empty array\n//                  undefined, return all lines\n//\nfunction lineChanges (change, select) {\n    // debug:\n    // console.log(change2str(change) + (select === undefined ? '' : '  (select:' + select + ')'))\n    if (select === 0) {\n        return []\n    }\n    let lines = []\n    let v = change.value\n    if (select === undefined) {\n        lines = v.split('\\n')\n        if (!lines[lines.length-1]) { lines.pop() }  // remove terminating new line\n    } else if(select > 0) {\n        let i = nthIndexOf(v, '\\n', 0, select, false)\n        lines = v.substring(0,i).split('\\n')\n    } else {\n        let len = v[v.length-1] === '\\n' ? v.length-1 : v.length\n        let i = nthIndexOf(v, '\\n', len-1, -select, true)\n        lines = v.substring(i+1, len).split('\\n')\n    }\n    return lines.map(function (line){ return new LineChange(change.type, line)})\n}\n\n// convert a list of changes into a shorthand notation like 'ss--+++ss-+ss'\nfunction changes2shorthand (changes) {\n    return '{' + changes.reduce(function (s,c) { for(let i=0; i< c.count; i++) s += c.type; return s }, '') + '}'\n}\n\n// concat-in-place, a -> b and return b\nfunction concatTo (a, b) {\n    Array.prototype.push.apply(b, a)\n    return b\n}\n\n// Make Hunk objects from changes as returned from a call to unidiff.lineChanges().  Hunks are collections\n// of continuous line changes, therefore every hunk after the first marks a gap\n// where unmodified context lines are skipped.\n//\n//      let 's' represent an unmodifed line 'same'\n//          '-' represent a removed line\n//          '+' represent an added line\n//\n//      then hunks with a context of 2 could might like this:\n//\n//             hunk                hunk         hunk\n//           ___|____            ___|__        ___|___\n//          |        |          |       |     |       |\n//       sssss----++ssssssssssssss-ss--sssssssss+++++ssssssssss\n//\n//      or this:\n//\n//             hunk              hunk             hunk\n//           ___|____       ______|_______     ____|___\n//          |        |     |              |   |        |\n//          ++++++++sssssssss+++ssss---++sssssss--++++++\n//\n//      notice that with a context of 2, series of 4 or fewer unmodified lines are included in the same hunk.\n//\n// basic algo with context of 3, for illustration:\n//\n//     0. loop (over each block change)\n//        modified block:\n//           add all modified lines, continue loop 0\n//\n//        unmodified block:\n//           first hunk: collect tail portion, continue\n//           subsequent hunks: get head portion, and tail (iff there are more changes)\n//              head + tail <= 6 ?\n//                 add all to current hunk, continue loop 0\n//              head + tail > 6 ?\n//                 finish hunk with head portion\n//                 start new hunk with tail portion (iff there are more changes), continue loop 0\n//\nfunction makeHunks (changes, precontext, postcontext) {\n\n    //console.log('--------\\nmakeHunks(' + [changes2shorthand(changes), precontext, postcontext].join(', ') + ')')\n    let ret = []        // completed hunks to return\n    let lchanges = []   // accumulated line changes (continous/no-gap) to put into next hunk\n    let lskipped = 0    // skipped context to take into account in next hunk line numbers\n    function finishHunk () {\n        if (lchanges.length) {\n            let aoff = lskipped, boff = lskipped\n            if (ret.length) {\n                let prev = ret[ret.length-1]\n                aoff += prev.aoff + prev.alen\n                boff += prev.boff + prev.blen\n            }\n            // add hunk and reset state\n            ret.push(new Hunk(aoff, boff, lchanges))\n            lchanges = []\n            lskipped = 0\n        }\n        // else keep state (lskipped) and continue\n    }\n\n    for (let ci=0; ci < changes.length; ci++) {\n        let change = changes[ci]\n        if (change.type === UNMODIFIED) {\n            // add context\n            let ctx_after  = ci > 0 ? postcontext : 0              // context lines following previous change\n            let ctx_before = ci < changes.length - 1 ? precontext : 0  // context lines preceding next change (iff there are more changes)\n            let skip = Math.max(change.count - (ctx_after + ctx_before), 0)\n            if (skip > 0) {\n                concatTo(lineChanges(change, ctx_after), lchanges)          // finish up previous hunk\n                finishHunk()\n                concatTo(lineChanges(change, -ctx_before), lchanges)\n                lskipped = skip                                             // remember skipped for next hunk\n            } else {\n                concatTo(lineChanges(change), lchanges)                     // add all context\n            }\n        } else {\n            concatTo(lineChanges(change), lchanges)                         // add all modifications\n        }\n    }\n    finishHunk()\n    //console.log(ret.map(function(h){ return h.toString() }).join('\\n'))\n    return ret\n}\n\n// no safty checks. caller knows that there are at least n occurances of v in s to be found.\n// reverse will search from high to low using lastIndexOf().\nfunction nthIndexOf (s, v, from, n, reverse) {\n    let d = reverse ? -1 : 1\n    from -= d\n    for (let c=0; c<n; c++) {\n        from = reverse ? s.lastIndexOf(v, from + d) : s.indexOf(v, from + d)\n    }\n    return from\n}\n\n// for testing and debugging\nexports.hunk = function (aoff, boff, lchanges) { return new Hunk(aoff, boff, lchanges) }\nexports.linechange = function (type, text) { return new LineChange(type, text)}\nexports.lineChanges = lineChanges\nexports.change2string = change2string\nexports.changes2shorthand = changes2shorthand\nexports.nthIndexOf = nthIndexOf\n\n// main API\nexports.makeHunks = makeHunks\nexports.ADDED = ADDED\nexports.REMOVED = REMOVED\nexports.UNMODIFIED = UNMODIFIED\n\n\n\n","'use strict'\n\nlet jdiff = require('diff')\nlet hunk = require('./hunk')\n\n\n// return a change type code for the change (returned from diff.diffLines())\nfunction changeType (change) {\n    if (change.added) {\n        return hunk.ADDED\n    } else if (change.removed) {\n        return hunk.REMOVED\n    } else {\n        return hunk.UNMODIFIED\n    }\n}\n\n// Given changes from a call to diff.diffLines(), assign each change a type code and\n// check that no two of same type occur in a row\nfunction checkAndAssignTypes (changes) {\n    if (changes.length === 0) { return [] }\n\n    changes[0].type = changeType(changes[0])\n    return changes.reduce(function (a, b, i) {\n        b.type = changeType(b)\n        if (a.type === b.type) {\n            throw Error('repeating change types are not handled: ' + a.type  + ' (at ' + (i-1) + ' and ' + i + ')')\n        }\n        return b\n    })\n}\n\n\n// convert an array of results from diff.diffLines() into text in unified diff format.\n// return empty string if there are no changes.\nfunction formatLines (changes, opt) {\n    checkAndAssignTypes(changes)\n    opt = opt || {}\n    opt.aname = opt.aname || 'a'\n    opt.bname = opt.bname || 'b'\n    let context = (opt.context || opt.context === 0) ? opt.context : 0\n    opt.pre_context = (opt.pre_context || opt.pre_context === 0) ? opt.pre_context : context\n    opt.post_context = (opt.post_context || opt.post_context === 0) ? opt.post_context : context\n\n    let hunks = hunk.makeHunks(changes, opt.pre_context, opt.post_context)\n    if (hunks.length) {\n        let ret = []\n        ret.push('--- ' + opt.aname)\n        ret.push('+++ ' + opt.bname)\n        hunks.forEach(function (h) {\n            ret.push(h.unified())\n        })\n        return ret.join('\\n')\n    } else {\n        return ''\n    }\n}\n\n// same as jsdiff.diffLines, but returns empty array when there are no changes (instead of an array with a single\n// unmodified change object)\nfunction diffLines (a, b, cb) {\n    a = Array.isArray(a) ? a.join('\\n') + '\\n' : a\n    b = Array.isArray(b) ? b.join('\\n') + '\\n' : b\n    let ret = jdiff.diffLines(a, b, cb)\n    if (ret.length === 1 && !ret[0].added && !ret[0].removed) {\n        return []\n    } else {\n        return ret\n    }\n}\n\nfunction diffAsText (a, b, opt) {\n    return formatLines(diffLines(a, b), opt)\n}\n\n// handy assertion function that asserts that two arrays or two multi-line strings are the same and reports\n// differences to console.log in unified format if there are differences.\n//\n//     actual - array or multi-line string to compare\n//     expected - array or multi-line string to compare\n//     label - label to clarify output if there are differences\n//     okFn - function like tape.ok that takes two arguments:\n//         expression - true if OK, false if failed test\n//         msg - a one-line message that prints upon failure\n//     logFn - function to call with diff output when there are differences (defaults to console.log)\n//\nfunction assertEqual (actual, expected, okFn, label, logFn) {\n    logFn = logFn || console.log\n    okFn = okFn.ok || okFn\n    let diff = diffAsText(actual, expected, {context: 3, aname: label + \" (actual)\", bname: label + ' (expected)'})\n    okFn(!diff, label)\n    if (diff) {\n        diff.split('\\n').forEach(function (line) {\n            logFn('  ' + line)\n        })\n    }\n}\n\nexports.assertEqual = assertEqual\nexports.diffAsText = diffAsText\nexports.formatLines = formatLines\nexports.diffLines = diffLines\n\nObject.keys(jdiff).forEach(function (k) {\n    if (!exports[k]) {\n        exports[k] = jdiff[k]\n    }\n})\n","import{jsx,jsxs}from\"react/jsx-runtime\";import{createContext,useContext,memo,useMemo,useState,useCallback,useRef,Children,useReducer,useEffect}from\"react\";function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread2(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty$1(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty$1(obj,key,value){return(key=function(arg){var key=function(input,hint){if(\"object\"!=typeof input||null===input)return input;var prim=input[Symbol.toPrimitive];if(void 0!==prim){var res=prim.call(input,hint||\"default\");if(\"object\"!=typeof res)return res;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===hint?String:Number)(input)}(arg,\"string\");return\"symbol\"==typeof key?key:String(key)}(key))in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _objectWithoutProperties(source,excluded){if(null==source)return{};var key,i,target=function(source,excluded){if(null==source)return{};var key,i,target={},sourceKeys=Object.keys(source);for(i=0;i<sourceKeys.length;i++)key=sourceKeys[i],excluded.indexOf(key)>=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++)key=sourceSymbolKeys[i],excluded.indexOf(key)>=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||function(r,l){var t=null==r?null:\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}function _toConsumableArray(arr){return function(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArray(iter){if(\"undefined\"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter[\"@@iterator\"])return Array.from(iter)}function _unsupportedIterableToArray(o,minLen){if(o){if(\"string\"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return\"Object\"===n&&o.constructor&&(n=o.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(o):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function _createForOfIteratorHelper(o,allowArrayLike){var it=\"undefined\"!=typeof Symbol&&o[Symbol.iterator]||o[\"@@iterator\"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&\"number\"==typeof o.length){it&&(o=it);var i=0,F=function(){};return{s:F,n:function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(e){throw e},f:F}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(e){didErr=!0,err=e},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}var commonjsGlobal=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var classnames=createCommonjsModule((function(module){\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n!function(){var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i<arguments.length;i++){var arg=arguments[i];if(arg){var argType=typeof arg;if(\"string\"===argType||\"number\"===argType)classes.push(arg);else if(Array.isArray(arg)){if(arg.length){var inner=classNames.apply(null,arg);inner&&classes.push(inner)}}else if(\"object\"===argType){if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes(\"[native code]\")){classes.push(arg.toString());continue}for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&classes.push(key)}}}return classes.join(\" \")}module.exports?(classNames.default=classNames,module.exports=classNames):window.classNames=classNames}()})),DEFAULT_CONTEXT_VALUE={hunkClassName:\"\",lineClassName:\"\",gutterClassName:\"\",codeClassName:\"\",monotonous:!1,gutterType:\"default\",viewType:\"split\",widgets:{},hideGutter:!1,selectedChanges:[],generateAnchorID:function(){},renderGutter:function(_ref){var renderDefault=_ref.renderDefault;return(0,_ref.wrapInAnchor)(renderDefault())},codeEvents:{},gutterEvents:{}},ContextType=createContext(DEFAULT_CONTEXT_VALUE),Provider=ContextType.Provider,useDiffSettings=function(){return useContext(ContextType)},gitdiffParser=createCommonjsModule((function(module,exports){!function(root){function parsePathFromFirstLine(line){var filesStr=line.slice(11),oldPath=null,newPath=null;switch(filesStr.indexOf('\"')){case-1:oldPath=(segs=filesStr.split(\" \"))[0].slice(2),newPath=segs[1].slice(2);break;case 0:var nextQuoteIndex=filesStr.indexOf('\"',2);oldPath=filesStr.slice(3,nextQuoteIndex);var newQuoteIndex=filesStr.indexOf('\"',nextQuoteIndex+1);newPath=newQuoteIndex<0?filesStr.slice(nextQuoteIndex+4):filesStr.slice(newQuoteIndex+3,-1);break;default:var segs;oldPath=(segs=filesStr.split(\" \"))[0].slice(2),newPath=segs[1].slice(3,-1)}return{oldPath:oldPath,newPath:newPath}}var parser={parse:function(source){for(var currentInfo,currentHunk,changeOldLine,changeNewLine,paths,infos=[],stat=2,lines=source.split(\"\\n\"),linesLen=lines.length,i=0;i<linesLen;){var line=lines[i];if(0===line.indexOf(\"diff --git\")){currentInfo={hunks:[],oldEndingNewLine:!0,newEndingNewLine:!0,oldPath:(paths=parsePathFromFirstLine(line)).oldPath,newPath:paths.newPath},infos.push(currentInfo);var simiLine,currentInfoType=null;simiLoop:for(;simiLine=lines[++i];){var spaceIndex=simiLine.indexOf(\" \"),infoType=spaceIndex>-1?simiLine.slice(0,spaceIndex):infoType;switch(infoType){case\"diff\":i--;break simiLoop;case\"deleted\":case\"new\":var leftStr=simiLine.slice(spaceIndex+1);0===leftStr.indexOf(\"file mode\")&&(currentInfo[\"new\"===infoType?\"newMode\":\"oldMode\"]=leftStr.slice(10));break;case\"similarity\":currentInfo.similarity=parseInt(simiLine.split(\" \")[2],10);break;case\"index\":var segs=simiLine.slice(spaceIndex+1).split(\" \"),revs=segs[0].split(\"..\");currentInfo.oldRevision=revs[0],currentInfo.newRevision=revs[1],segs[1]&&(currentInfo.oldMode=currentInfo.newMode=segs[1]);break;case\"copy\":case\"rename\":var infoStr=simiLine.slice(spaceIndex+1);0===infoStr.indexOf(\"from\")?currentInfo.oldPath=infoStr.slice(5):currentInfo.newPath=infoStr.slice(3),currentInfoType=infoType;break;case\"---\":var oldPath=simiLine.slice(spaceIndex+1),newPath=lines[++i].slice(4);\"/dev/null\"===oldPath?(newPath=newPath.slice(2),currentInfoType=\"add\"):\"/dev/null\"===newPath?(oldPath=oldPath.slice(2),currentInfoType=\"delete\"):(currentInfoType=\"modify\",oldPath=oldPath.slice(2),newPath=newPath.slice(2)),oldPath&&(currentInfo.oldPath=oldPath),newPath&&(currentInfo.newPath=newPath),stat=5;break simiLoop}}currentInfo.type=currentInfoType||\"modify\"}else if(0===line.indexOf(\"Binary\"))currentInfo.isBinary=!0,currentInfo.type=line.indexOf(\"/dev/null and\")>=0?\"add\":line.indexOf(\"and /dev/null\")>=0?\"delete\":\"modify\",stat=2,currentInfo=null;else if(5===stat)if(0===line.indexOf(\"@@\")){var match=/^@@\\s+-([0-9]+)(,([0-9]+))?\\s+\\+([0-9]+)(,([0-9]+))?/.exec(line);currentHunk={content:line,oldStart:match[1]-0,newStart:match[4]-0,oldLines:match[3]-0||1,newLines:match[6]-0||1,changes:[]},currentInfo.hunks.push(currentHunk),changeOldLine=currentHunk.oldStart,changeNewLine=currentHunk.newStart}else{var typeChar=line.slice(0,1),change={content:line.slice(1)};switch(typeChar){case\"+\":change.type=\"insert\",change.isInsert=!0,change.lineNumber=changeNewLine,changeNewLine++;break;case\"-\":change.type=\"delete\",change.isDelete=!0,change.lineNumber=changeOldLine,changeOldLine++;break;case\" \":change.type=\"normal\",change.isNormal=!0,change.oldLineNumber=changeOldLine,change.newLineNumber=changeNewLine,changeOldLine++,changeNewLine++;break;case\"\\\\\":var lastChange=currentHunk.changes[currentHunk.changes.length-1];lastChange.isDelete||(currentInfo.newEndingNewLine=!1),lastChange.isInsert||(currentInfo.oldEndingNewLine=!1)}change.type&&currentHunk.changes.push(change)}i++}return infos}};module.exports=parser}()}));function isInsert(change){return\"insert\"===change.type}function isDelete(change){return\"delete\"===change.type}function isNormal(change){return\"normal\"===change.type}function mapHunk(hunk,options){var changes=\"zip\"===options.nearbySequences?function(changes){var _changes$reduce=changes.reduce((function(_ref,current,i){var _ref2=_slicedToArray(_ref,3),result=_ref2[0],last=_ref2[1],lastDeletionIndex=_ref2[2];return last?isInsert(current)&&lastDeletionIndex>=0?(result.splice(lastDeletionIndex+1,0,current),[result,current,lastDeletionIndex+2]):(result.push(current),[result,current,isDelete(current)&&isDelete(last)?lastDeletionIndex:i]):(result.push(current),[result,current,isDelete(current)?i:-1])}),[[],null,-1]);return _slicedToArray(_changes$reduce,1)[0]}(hunk.changes):hunk.changes;return _objectSpread2(_objectSpread2({},hunk),{},{isPlain:!1,changes:changes})}function parseDiff(text){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},diffText=function(text){if(text.startsWith(\"diff --git\"))return text;var indexOfFirstLineBreak=text.indexOf(\"\\n\"),indexOfSecondLineBreak=text.indexOf(\"\\n\",indexOfFirstLineBreak+1),firstLine=text.slice(0,indexOfFirstLineBreak),secondLine=text.slice(indexOfFirstLineBreak+1,indexOfSecondLineBreak),oldPath=firstLine.split(\" \").slice(1,-3).join(\" \"),newPath=secondLine.split(\" \").slice(1,-3).join(\" \");return[\"diff --git a/\".concat(oldPath,\" b/\").concat(newPath),\"index 1111111..2222222 100644\",\"--- a/\".concat(oldPath),\"+++ b/\".concat(newPath),text.slice(indexOfSecondLineBreak+1)].join(\"\\n\")}(text.trimStart());return gitdiffParser.parse(diffText).map((function(file){return function(file,options){var hunks=file.hunks.map((function(hunk){return mapHunk(hunk,options)}));return _objectSpread2(_objectSpread2({},file),{},{hunks:hunks})}(file,options)}))}function first(array){return array[0]}function last$1(array){return array[array.length-1]}function sideToProperty(side){return[\"\".concat(side,\"Start\"),\"\".concat(side,\"Lines\")]}function computeLineNumberFactory(side){return\"old\"===side?function(change){return isInsert(change)?-1:isNormal(change)?change.oldLineNumber:change.lineNumber}:function(change){return isDelete(change)?-1:isNormal(change)?change.newLineNumber:change.lineNumber}}function isInHunkFactory(startProperty,linesProperty){return function(hunk,lineNumber){var start=hunk[startProperty],end=start+hunk[linesProperty];return lineNumber>=start&&lineNumber<end}}function isBetweenHunksFactory(startProperty,linesProperty){return function(previousHunk,nextHunk,lineNumber){var start=previousHunk[startProperty]+previousHunk[linesProperty],end=nextHunk[startProperty];return lineNumber>=start&&lineNumber<end}}function findChangeByLineNumberFactory(side){var computeLineNumber=computeLineNumberFactory(side),findContainerHunk=function(side){var _sideToProperty2=_slicedToArray(sideToProperty(side),2),isInHunk=isInHunkFactory(_sideToProperty2[0],_sideToProperty2[1]);return function(hunks,lineNumber){return hunks.find((function(hunk){return isInHunk(hunk,lineNumber)}))}}(side);return function(hunks,lineNumber){var containerHunk=findContainerHunk(hunks,lineNumber);if(containerHunk)return containerHunk.changes.find((function(change){return computeLineNumber(change)===lineNumber}))}}function getCorrespondingLineNumberFactory(baseSide){var anotherSide=\"old\"===baseSide?\"new\":\"old\",_sideToProperty4=_slicedToArray(sideToProperty(baseSide),2),baseStart=_sideToProperty4[0],baseLines=_sideToProperty4[1],_sideToProperty6=_slicedToArray(sideToProperty(anotherSide),2),correspondingStart=_sideToProperty6[0],correspondingLines=_sideToProperty6[1],baseLineNumber=computeLineNumberFactory(baseSide),correspondingLineNumber=computeLineNumberFactory(anotherSide),isInHunk=isInHunkFactory(baseStart,baseLines),isBetweenHunks=isBetweenHunksFactory(baseStart,baseLines);return function(hunks,lineNumber){var firstHunk=first(hunks);if(lineNumber<firstHunk[baseStart]){var spanFromStart=firstHunk[baseStart]-lineNumber;return firstHunk[correspondingStart]-spanFromStart}var lastHunk=last$1(hunks);if(lastHunk[baseStart]+lastHunk[baseLines]<=lineNumber){var spanFromEnd=lineNumber-lastHunk[baseStart]-lastHunk[baseLines];return lastHunk[correspondingStart]+lastHunk[correspondingLines]+spanFromEnd}for(var i=0;i<hunks.length;i++){var currentHunk=hunks[i],nextHunk=hunks[i+1];if(isInHunk(currentHunk,lineNumber)){var changeIndex=currentHunk.changes.findIndex((function(change){return baseLineNumber(change)===lineNumber})),change=currentHunk.changes[changeIndex];if(isNormal(change))return correspondingLineNumber(change);var possibleCorrespondingChangeIndex=isDelete(change)?changeIndex+1:changeIndex-1,possibleCorrespondingChange=currentHunk.changes[possibleCorrespondingChangeIndex];if(!possibleCorrespondingChange)return-1;var negativeChangeType=isInsert(change)?\"delete\":\"insert\";return possibleCorrespondingChange.type===negativeChangeType?correspondingLineNumber(possibleCorrespondingChange):-1}if(isBetweenHunks(currentHunk,nextHunk,lineNumber)){var _spanFromEnd=lineNumber-currentHunk[baseStart]-currentHunk[baseLines];return currentHunk[correspondingStart]+currentHunk[correspondingLines]+_spanFromEnd}}throw new Error(\"Unexpected line position \".concat(lineNumber))}}var _baseFindIndex=function(array,predicate,fromIndex,fromRight){for(var length=array.length,index=fromIndex+(fromRight?1:-1);fromRight?index--:++index<length;)if(predicate(array[index],index,array))return index;return-1};var _listCacheClear=function(){this.__data__=[],this.size=0};var eq_1=function(value,other){return value===other||value!=value&&other!=other};var _assocIndexOf=function(array,key){for(var length=array.length;length--;)if(eq_1(array[length][0],key))return length;return-1},splice=Array.prototype.splice;var _listCacheDelete=function(key){var data=this.__data__,index=_assocIndexOf(data,key);return!(index<0)&&(index==data.length-1?data.pop():splice.call(data,index,1),--this.size,!0)};var _listCacheGet=function(key){var data=this.__data__,index=_assocIndexOf(data,key);return index<0?void 0:data[index][1]};var _listCacheHas=function(key){return _assocIndexOf(this.__data__,key)>-1};var _listCacheSet=function(key,value){var data=this.__data__,index=_assocIndexOf(data,key);return index<0?(++this.size,data.push([key,value])):data[index][1]=value,this};function ListCache(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}ListCache.prototype.clear=_listCacheClear,ListCache.prototype.delete=_listCacheDelete,ListCache.prototype.get=_listCacheGet,ListCache.prototype.has=_listCacheHas,ListCache.prototype.set=_listCacheSet;var _ListCache=ListCache;var _stackClear=function(){this.__data__=new _ListCache,this.size=0};var _stackDelete=function(key){var data=this.__data__,result=data.delete(key);return this.size=data.size,result};var _stackGet=function(key){return this.__data__.get(key)};var _stackHas=function(key){return this.__data__.has(key)},_freeGlobal=\"object\"==typeof commonjsGlobal&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,freeSelf=\"object\"==typeof self&&self&&self.Object===Object&&self,_root=_freeGlobal||freeSelf||Function(\"return this\")(),_Symbol=_root.Symbol,objectProto$d=Object.prototype,hasOwnProperty$a=objectProto$d.hasOwnProperty,nativeObjectToString$1=objectProto$d.toString,symToStringTag$1=_Symbol?_Symbol.toStringTag:void 0;var _getRawTag=function(value){var isOwn=hasOwnProperty$a.call(value,symToStringTag$1),tag=value[symToStringTag$1];try{value[symToStringTag$1]=void 0;var unmasked=!0}catch(e){}var result=nativeObjectToString$1.call(value);return unmasked&&(isOwn?value[symToStringTag$1]=tag:delete value[symToStringTag$1]),result},nativeObjectToString=Object.prototype.toString;var _objectToString=function(value){return nativeObjectToString.call(value)},symToStringTag=_Symbol?_Symbol.toStringTag:void 0;var _baseGetTag=function(value){return null==value?void 0===value?\"[object Undefined]\":\"[object Null]\":symToStringTag&&symToStringTag in Object(value)?_getRawTag(value):_objectToString(value)};var isObject_1=function(value){var type=typeof value;return null!=value&&(\"object\"==type||\"function\"==type)};var isFunction_1=function(value){if(!isObject_1(value))return!1;var tag=_baseGetTag(value);return\"[object Function]\"==tag||\"[object GeneratorFunction]\"==tag||\"[object AsyncFunction]\"==tag||\"[object Proxy]\"==tag},_coreJsData=_root[\"__core-js_shared__\"],maskSrcKey=function(){var uid=/[^.]+$/.exec(_coreJsData&&_coreJsData.keys&&_coreJsData.keys.IE_PROTO||\"\");return uid?\"Symbol(src)_1.\"+uid:\"\"}();var _isMasked=function(func){return!!maskSrcKey&&maskSrcKey in func},funcToString$1=Function.prototype.toString;var _toSource=function(func){if(null!=func){try{return funcToString$1.call(func)}catch(e){}try{return func+\"\"}catch(e){}}return\"\"},reIsHostCtor=/^\\[object .+?Constructor\\]$/,funcProto=Function.prototype,objectProto$b=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$9=objectProto$b.hasOwnProperty,reIsNative=RegExp(\"^\"+funcToString.call(hasOwnProperty$9).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");var _baseIsNative=function(value){return!(!isObject_1(value)||_isMasked(value))&&(isFunction_1(value)?reIsNative:reIsHostCtor).test(_toSource(value))};var _getValue=function(object,key){return null==object?void 0:object[key]};var _getNative=function(object,key){var value=_getValue(object,key);return _baseIsNative(value)?value:void 0},_Map=_getNative(_root,\"Map\"),_nativeCreate=_getNative(Object,\"create\");var _hashClear=function(){this.__data__=_nativeCreate?_nativeCreate(null):{},this.size=0};var _hashDelete=function(key){var result=this.has(key)&&delete this.__data__[key];return this.size-=result?1:0,result},hasOwnProperty$8=Object.prototype.hasOwnProperty;var _hashGet=function(key){var data=this.__data__;if(_nativeCreate){var result=data[key];return\"__lodash_hash_undefined__\"===result?void 0:result}return hasOwnProperty$8.call(data,key)?data[key]:void 0},hasOwnProperty$7=Object.prototype.hasOwnProperty;var _hashHas=function(key){var data=this.__data__;return _nativeCreate?void 0!==data[key]:hasOwnProperty$7.call(data,key)};var _hashSet=function(key,value){var data=this.__data__;return this.size+=this.has(key)?0:1,data[key]=_nativeCreate&&void 0===value?\"__lodash_hash_undefined__\":value,this};function Hash(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}Hash.prototype.clear=_hashClear,Hash.prototype.delete=_hashDelete,Hash.prototype.get=_hashGet,Hash.prototype.has=_hashHas,Hash.prototype.set=_hashSet;var _Hash=Hash;var _mapCacheClear=function(){this.size=0,this.__data__={hash:new _Hash,map:new(_Map||_ListCache),string:new _Hash}};var _isKeyable=function(value){var type=typeof value;return\"string\"==type||\"number\"==type||\"symbol\"==type||\"boolean\"==type?\"__proto__\"!==value:null===value};var _getMapData=function(map,key){var data=map.__data__;return _isKeyable(key)?data[\"string\"==typeof key?\"string\":\"hash\"]:data.map};var _mapCacheDelete=function(key){var result=_getMapData(this,key).delete(key);return this.size-=result?1:0,result};var _mapCacheGet=function(key){return _getMapData(this,key).get(key)};var _mapCacheHas=function(key){return _getMapData(this,key).has(key)};var _mapCacheSet=function(key,value){var data=_getMapData(this,key),size=data.size;return data.set(key,value),this.size+=data.size==size?0:1,this};function MapCache(entries){var index=-1,length=null==entries?0:entries.length;for(this.clear();++index<length;){var entry=entries[index];this.set(entry[0],entry[1])}}MapCache.prototype.clear=_mapCacheClear,MapCache.prototype.delete=_mapCacheDelete,MapCache.prototype.get=_mapCacheGet,MapCache.prototype.has=_mapCacheHas,MapCache.prototype.set=_mapCacheSet;var _MapCache=MapCache;var _stackSet=function(key,value){var data=this.__data__;if(data instanceof _ListCache){var pairs=data.__data__;if(!_Map||pairs.length<199)return pairs.push([key,value]),this.size=++data.size,this;data=this.__data__=new _MapCache(pairs)}return data.set(key,value),this.size=data.size,this};function Stack(entries){var data=this.__data__=new _ListCache(entries);this.size=data.size}Stack.prototype.clear=_stackClear,Stack.prototype.delete=_stackDelete,Stack.prototype.get=_stackGet,Stack.prototype.has=_stackHas,Stack.prototype.set=_stackSet;var _Stack=Stack;var _setCacheAdd=function(value){return this.__data__.set(value,\"__lodash_hash_undefined__\"),this};var _setCacheHas=function(value){return this.__data__.has(value)};function SetCache(values){var index=-1,length=null==values?0:values.length;for(this.__data__=new _MapCache;++index<length;)this.add(values[index])}SetCache.prototype.add=SetCache.prototype.push=_setCacheAdd,SetCache.prototype.has=_setCacheHas;var _SetCache=SetCache;var _arraySome=function(array,predicate){for(var index=-1,length=null==array?0:array.length;++index<length;)if(predicate(array[index],index,array))return!0;return!1};var _cacheHas=function(cache,key){return cache.has(key)};var _equalArrays=function(array,other,bitmask,customizer,equalFunc,stack){var isPartial=1&bitmask,arrLength=array.length,othLength=other.length;if(arrLength!=othLength&&!(isPartial&&othLength>arrLength))return!1;var arrStacked=stack.get(array),othStacked=stack.get(other);if(arrStacked&&othStacked)return arrStacked==other&&othStacked==array;var index=-1,result=!0,seen=2&bitmask?new _SetCache:void 0;for(stack.set(array,other),stack.set(other,array);++index<arrLength;){var arrValue=array[index],othValue=other[index];if(customizer)var compared=isPartial?customizer(othValue,arrValue,index,other,array,stack):customizer(arrValue,othValue,index,array,other,stack);if(void 0!==compared){if(compared)continue;result=!1;break}if(seen){if(!_arraySome(other,(function(othValue,othIndex){if(!_cacheHas(seen,othIndex)&&(arrValue===othValue||equalFunc(arrValue,othValue,bitmask,customizer,stack)))return seen.push(othIndex)}))){result=!1;break}}else if(arrValue!==othValue&&!equalFunc(arrValue,othValue,bitmask,customizer,stack)){result=!1;break}}return stack.delete(array),stack.delete(other),result},_Uint8Array=_root.Uint8Array;var _mapToArray=function(map){var index=-1,result=Array(map.size);return map.forEach((function(value,key){result[++index]=[key,value]})),result};var _setToArray=function(set){var index=-1,result=Array(set.size);return set.forEach((function(value){result[++index]=value})),result},symbolProto$1=_Symbol?_Symbol.prototype:void 0,symbolValueOf=symbolProto$1?symbolProto$1.valueOf:void 0;var _equalByTag=function(object,other,tag,bitmask,customizer,equalFunc,stack){switch(tag){case\"[object DataView]\":if(object.byteLength!=other.byteLength||object.byteOffset!=other.byteOffset)return!1;object=object.buffer,other=other.buffer;case\"[object ArrayBuffer]\":return!(object.byteLength!=other.byteLength||!equalFunc(new _Uint8Array(object),new _Uint8Array(other)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return eq_1(+object,+other);case\"[object Error]\":return object.name==other.name&&object.message==other.message;case\"[object RegExp]\":case\"[object String]\":return object==other+\"\";case\"[object Map]\":var convert=_mapToArray;case\"[object Set]\":var isPartial=1&bitmask;if(convert||(convert=_setToArray),object.size!=other.size&&!isPartial)return!1;var stacked=stack.get(object);if(stacked)return stacked==other;bitmask|=2,stack.set(object,other);var result=_equalArrays(convert(object),convert(other),bitmask,customizer,equalFunc,stack);return stack.delete(object),result;case\"[object Symbol]\":if(symbolValueOf)return symbolValueOf.call(object)==symbolValueOf.call(other)}return!1};var _arrayPush=function(array,values){for(var index=-1,length=values.length,offset=array.length;++index<length;)array[offset+index]=values[index];return array},isArray_1=Array.isArray;var _baseGetAllKeys=function(object,keysFunc,symbolsFunc){var result=keysFunc(object);return isArray_1(object)?result:_arrayPush(result,symbolsFunc(object))};var _arrayFilter=function(array,predicate){for(var index=-1,length=null==array?0:array.length,resIndex=0,result=[];++index<length;){var value=array[index];predicate(value,index,array)&&(result[resIndex++]=value)}return result};var stubArray_1=function(){return[]},propertyIsEnumerable$1=Object.prototype.propertyIsEnumerable,nativeGetSymbols=Object.getOwnPropertySymbols,_getSymbols=nativeGetSymbols?function(object){return null==object?[]:(object=Object(object),_arrayFilter(nativeGetSymbols(object),(function(symbol){return propertyIsEnumerable$1.call(object,symbol)})))}:stubArray_1;var _baseTimes=function(n,iteratee){for(var index=-1,result=Array(n);++index<n;)result[index]=iteratee(index);return result};var isObjectLike_1=function(value){return null!=value&&\"object\"==typeof value};var _baseIsArguments=function(value){return isObjectLike_1(value)&&\"[object Arguments]\"==_baseGetTag(value)},objectProto$7=Object.prototype,hasOwnProperty$6=objectProto$7.hasOwnProperty,propertyIsEnumerable=objectProto$7.propertyIsEnumerable,isArguments_1=_baseIsArguments(function(){return arguments}())?_baseIsArguments:function(value){return isObjectLike_1(value)&&hasOwnProperty$6.call(value,\"callee\")&&!propertyIsEnumerable.call(value,\"callee\")};var stubFalse_1=function(){return!1},isBuffer_1=createCommonjsModule((function(module,exports){var freeExports=exports&&!exports.nodeType&&exports,freeModule=freeExports&&module&&!module.nodeType&&module,Buffer=freeModule&&freeModule.exports===freeExports?_root.Buffer:void 0,isBuffer=(Buffer?Buffer.isBuffer:void 0)||stubFalse_1;module.exports=isBuffer})),reIsUint=/^(?:0|[1-9]\\d*)$/;var _isIndex=function(value,length){var type=typeof value;return!!(length=null==length?9007199254740991:length)&&(\"number\"==type||\"symbol\"!=type&&reIsUint.test(value))&&value>-1&&value%1==0&&value<length};var isLength_1=function(value){return\"number\"==typeof value&&value>-1&&value%1==0&&value<=9007199254740991},typedArrayTags={};typedArrayTags[\"[object Float32Array]\"]=typedArrayTags[\"[object Float64Array]\"]=typedArrayTags[\"[object Int8Array]\"]=typedArrayTags[\"[object Int16Array]\"]=typedArrayTags[\"[object Int32Array]\"]=typedArrayTags[\"[object Uint8Array]\"]=typedArrayTags[\"[object Uint8ClampedArray]\"]=typedArrayTags[\"[object Uint16Array]\"]=typedArrayTags[\"[object Uint32Array]\"]=!0,typedArrayTags[\"[object Arguments]\"]=typedArrayTags[\"[object Array]\"]=typedArrayTags[\"[object ArrayBuffer]\"]=typedArrayTags[\"[object Boolean]\"]=typedArrayTags[\"[object DataView]\"]=typedArrayTags[\"[object Date]\"]=typedArrayTags[\"[object Error]\"]=typedArrayTags[\"[object Function]\"]=typedArrayTags[\"[object Map]\"]=typedArrayTags[\"[object Number]\"]=typedArrayTags[\"[object Object]\"]=typedArrayTags[\"[object RegExp]\"]=typedArrayTags[\"[object Set]\"]=typedArrayTags[\"[object String]\"]=typedArrayTags[\"[object WeakMap]\"]=!1;var _baseIsTypedArray=function(value){return isObjectLike_1(value)&&isLength_1(value.length)&&!!typedArrayTags[_baseGetTag(value)]};var _baseUnary=function(func){return function(value){return func(value)}},_nodeUtil=createCommonjsModule((function(module,exports){var freeExports=exports&&!exports.nodeType&&exports,freeModule=freeExports&&module&&!module.nodeType&&module,freeProcess=freeModule&&freeModule.exports===freeExports&&_freeGlobal.process,nodeUtil=function(){try{var types=freeModule&&freeModule.require&&freeModule.require(\"util\").types;return types||freeProcess&&freeProcess.binding&&freeProcess.binding(\"util\")}catch(e){}}();module.exports=nodeUtil})),nodeIsTypedArray=_nodeUtil&&_nodeUtil.isTypedArray,isTypedArray_1=nodeIsTypedArray?_baseUnary(nodeIsTypedArray):_baseIsTypedArray,hasOwnProperty$5=Object.prototype.hasOwnProperty;var _arrayLikeKeys=function(value,inherited){var isArr=isArray_1(value),isArg=!isArr&&isArguments_1(value),isBuff=!isArr&&!isArg&&isBuffer_1(value),isType=!isArr&&!isArg&&!isBuff&&isTypedArray_1(value),skipIndexes=isArr||isArg||isBuff||isType,result=skipIndexes?_baseTimes(value.length,String):[],length=result.length;for(var key in value)!inherited&&!hasOwnProperty$5.call(value,key)||skipIndexes&&(\"length\"==key||isBuff&&(\"offset\"==key||\"parent\"==key)||isType&&(\"buffer\"==key||\"byteLength\"==key||\"byteOffset\"==key)||_isIndex(key,length))||result.push(key);return result},objectProto$5=Object.prototype;var _isPrototype=function(value){var Ctor=value&&value.constructor;return value===(\"function\"==typeof Ctor&&Ctor.prototype||objectProto$5)};var _nativeKeys=function(func,transform){return function(arg){return func(transform(arg))}}(Object.keys,Object),hasOwnProperty$4=Object.prototype.hasOwnProperty;var _baseKeys=function(object){if(!_isPrototype(object))return _nativeKeys(object);var result=[];for(var key in Object(object))hasOwnProperty$4.call(object,key)&&\"constructor\"!=key&&result.push(key);return result};var isArrayLike_1=function(value){return null!=value&&isLength_1(value.length)&&!isFunction_1(value)};var keys_1=function(object){return isArrayLike_1(object)?_arrayLikeKeys(object):_baseKeys(object)};var _getAllKeys=function(object){return _baseGetAllKeys(object,keys_1,_getSymbols)},hasOwnProperty$3=Object.prototype.hasOwnProperty;var _equalObjects=function(object,other,bitmask,customizer,equalFunc,stack){var isPartial=1&bitmask,objProps=_getAllKeys(object),objLength=objProps.length;if(objLength!=_getAllKeys(other).length&&!isPartial)return!1;for(var index=objLength;index--;){var key=objProps[index];if(!(isPartial?key in other:hasOwnProperty$3.call(other,key)))return!1}var objStacked=stack.get(object),othStacked=stack.get(other);if(objStacked&&othStacked)return objStacked==other&&othStacked==object;var result=!0;stack.set(object,other),stack.set(other,object);for(var skipCtor=isPartial;++index<objLength;){var objValue=object[key=objProps[index]],othValue=other[key];if(customizer)var compared=isPartial?customizer(othValue,objValue,key,other,object,stack):customizer(objValue,othValue,key,object,other,stack);if(!(void 0===compared?objValue===othValue||equalFunc(objValue,othValue,bitmask,customizer,stack):compared)){result=!1;break}skipCtor||(skipCtor=\"constructor\"==key)}if(result&&!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;objCtor==othCtor||!(\"constructor\"in object)||!(\"constructor\"in other)||\"function\"==typeof objCtor&&objCtor instanceof objCtor&&\"function\"==typeof othCtor&&othCtor instanceof othCtor||(result=!1)}return stack.delete(object),stack.delete(other),result},_DataView=_getNative(_root,\"DataView\"),_Promise=_getNative(_root,\"Promise\"),_Set=_getNative(_root,\"Set\"),_WeakMap=_getNative(_root,\"WeakMap\"),dataViewCtorString=_toSource(_DataView),mapCtorString=_toSource(_Map),promiseCtorString=_toSource(_Promise),setCtorString=_toSource(_Set),weakMapCtorString=_toSource(_WeakMap),getTag=_baseGetTag;(_DataView&&\"[object DataView]\"!=getTag(new _DataView(new ArrayBuffer(1)))||_Map&&\"[object Map]\"!=getTag(new _Map)||_Promise&&\"[object Promise]\"!=getTag(_Promise.resolve())||_Set&&\"[object Set]\"!=getTag(new _Set)||_WeakMap&&\"[object WeakMap]\"!=getTag(new _WeakMap))&&(getTag=function(value){var result=_baseGetTag(value),Ctor=\"[object Object]\"==result?value.constructor:void 0,ctorString=Ctor?_toSource(Ctor):\"\";if(ctorString)switch(ctorString){case dataViewCtorString:return\"[object DataView]\";case mapCtorString:return\"[object Map]\";case promiseCtorString:return\"[object Promise]\";case setCtorString:return\"[object Set]\";case weakMapCtorString:return\"[object WeakMap]\"}return result});var _getTag=getTag,objectTag=\"[object Object]\",hasOwnProperty$2=Object.prototype.hasOwnProperty;var _baseIsEqualDeep=function(object,other,bitmask,customizer,equalFunc,stack){var objIsArr=isArray_1(object),othIsArr=isArray_1(other),objTag=objIsArr?\"[object Array]\":_getTag(object),othTag=othIsArr?\"[object Array]\":_getTag(other),objIsObj=(objTag=\"[object Arguments]\"==objTag?objectTag:objTag)==objectTag,othIsObj=(othTag=\"[object Arguments]\"==othTag?objectTag:othTag)==objectTag,isSameTag=objTag==othTag;if(isSameTag&&isBuffer_1(object)){if(!isBuffer_1(other))return!1;objIsArr=!0,objIsObj=!1}if(isSameTag&&!objIsObj)return stack||(stack=new _Stack),objIsArr||isTypedArray_1(object)?_equalArrays(object,other,bitmask,customizer,equalFunc,stack):_equalByTag(object,other,objTag,bitmask,customizer,equalFunc,stack);if(!(1&bitmask)){var objIsWrapped=objIsObj&&hasOwnProperty$2.call(object,\"__wrapped__\"),othIsWrapped=othIsObj&&hasOwnProperty$2.call(other,\"__wrapped__\");if(objIsWrapped||othIsWrapped){var objUnwrapped=objIsWrapped?object.value():object,othUnwrapped=othIsWrapped?other.value():other;return stack||(stack=new _Stack),equalFunc(objUnwrapped,othUnwrapped,bitmask,customizer,stack)}}return!!isSameTag&&(stack||(stack=new _Stack),_equalObjects(object,other,bitmask,customizer,equalFunc,stack))};var _baseIsEqual=function baseIsEqual(value,other,bitmask,customizer,stack){return value===other||(null==value||null==other||!isObjectLike_1(value)&&!isObjectLike_1(other)?value!=value&&other!=other:_baseIsEqualDeep(value,other,bitmask,customizer,baseIsEqual,stack))};var _baseIsMatch=function(object,source,matchData,customizer){var index=matchData.length,length=index,noCustomizer=!customizer;if(null==object)return!length;for(object=Object(object);index--;){var data=matchData[index];if(noCustomizer&&data[2]?data[1]!==object[data[0]]:!(data[0]in object))return!1}for(;++index<length;){var key=(data=matchData[index])[0],objValue=object[key],srcValue=data[1];if(noCustomizer&&data[2]){if(void 0===objValue&&!(key in object))return!1}else{var stack=new _Stack;if(customizer)var result=customizer(objValue,srcValue,key,object,source,stack);if(!(void 0===result?_baseIsEqual(srcValue,objValue,3,customizer,stack):result))return!1}}return!0};var _isStrictComparable=function(value){return value==value&&!isObject_1(value)};var _getMatchData=function(object){for(var result=keys_1(object),length=result.length;length--;){var key=result[length],value=object[key];result[length]=[key,value,_isStrictComparable(value)]}return result};var _matchesStrictComparable=function(key,srcValue){return function(object){return null!=object&&(object[key]===srcValue&&(void 0!==srcValue||key in Object(object)))}};var _baseMatches=function(source){var matchData=_getMatchData(source);return 1==matchData.length&&matchData[0][2]?_matchesStrictComparable(matchData[0][0],matchData[0][1]):function(object){return object===source||_baseIsMatch(object,source,matchData)}};var isSymbol_1=function(value){return\"symbol\"==typeof value||isObjectLike_1(value)&&\"[object Symbol]\"==_baseGetTag(value)},reIsDeepProp=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,reIsPlainProp=/^\\w*$/;var _isKey=function(value,object){if(isArray_1(value))return!1;var type=typeof value;return!(\"number\"!=type&&\"symbol\"!=type&&\"boolean\"!=type&&null!=value&&!isSymbol_1(value))||(reIsPlainProp.test(value)||!reIsDeepProp.test(value)||null!=object&&value in Object(object))};function memoize(func,resolver){if(\"function\"!=typeof func||null!=resolver&&\"function\"!=typeof resolver)throw new TypeError(\"Expected a function\");var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key))return cache.get(key);var result=func.apply(this,args);return memoized.cache=cache.set(key,result)||cache,result};return memoized.cache=new(memoize.Cache||_MapCache),memoized}memoize.Cache=_MapCache;var memoize_1=memoize;var rePropName=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,reEscapeChar=/\\\\(\\\\)?/g,_stringToPath=function(func){var result=memoize_1(func,(function(key){return 500===cache.size&&cache.clear(),key})),cache=result.cache;return result}((function(string){var result=[];return 46===string.charCodeAt(0)&&result.push(\"\"),string.replace(rePropName,(function(match,number,quote,subString){result.push(quote?subString.replace(reEscapeChar,\"$1\"):number||match)})),result}));var _arrayMap=function(array,iteratee){for(var index=-1,length=null==array?0:array.length,result=Array(length);++index<length;)result[index]=iteratee(array[index],index,array);return result},symbolProto=_Symbol?_Symbol.prototype:void 0,symbolToString=symbolProto?symbolProto.toString:void 0;var _baseToString=function baseToString(value){if(\"string\"==typeof value)return value;if(isArray_1(value))return _arrayMap(value,baseToString)+\"\";if(isSymbol_1(value))return symbolToString?symbolToString.call(value):\"\";var result=value+\"\";return\"0\"==result&&1/value==-Infinity?\"-0\":result};var toString_1=function(value){return null==value?\"\":_baseToString(value)};var _castPath=function(value,object){return isArray_1(value)?value:_isKey(value,object)?[value]:_stringToPath(toString_1(value))};var _toKey=function(value){if(\"string\"==typeof value||isSymbol_1(value))return value;var result=value+\"\";return\"0\"==result&&1/value==-Infinity?\"-0\":result};var _baseGet=function(object,path){for(var index=0,length=(path=_castPath(path,object)).length;null!=object&&index<length;)object=object[_toKey(path[index++])];return index&&index==length?object:void 0};var get_1=function(object,path,defaultValue){var result=null==object?void 0:_baseGet(object,path);return void 0===result?defaultValue:result};var _baseHasIn=function(object,key){return null!=object&&key in Object(object)};var _hasPath=function(object,path,hasFunc){for(var index=-1,length=(path=_castPath(path,object)).length,result=!1;++index<length;){var key=_toKey(path[index]);if(!(result=null!=object&&hasFunc(object,key)))break;object=object[key]}return result||++index!=length?result:!!(length=null==object?0:object.length)&&isLength_1(length)&&_isIndex(key,length)&&(isArray_1(object)||isArguments_1(object))};var hasIn_1=function(object,path){return null!=object&&_hasPath(object,path,_baseHasIn)};var _baseMatchesProperty=function(path,srcValue){return _isKey(path)&&_isStrictComparable(srcValue)?_matchesStrictComparable(_toKey(path),srcValue):function(object){var objValue=get_1(object,path);return void 0===objValue&&objValue===srcValue?hasIn_1(object,path):_baseIsEqual(srcValue,objValue,3)}};var identity_1=function(value){return value};var _baseProperty=function(key){return function(object){return null==object?void 0:object[key]}};var _basePropertyDeep=function(path){return function(object){return _baseGet(object,path)}};var property_1=function(path){return _isKey(path)?_baseProperty(_toKey(path)):_basePropertyDeep(path)};var _baseIteratee=function(value){return\"function\"==typeof value?value:null==value?identity_1:\"object\"==typeof value?isArray_1(value)?_baseMatchesProperty(value[0],value[1]):_baseMatches(value):property_1(value)},reWhitespace=/\\s/;var _trimmedEndIndex=function(string){for(var index=string.length;index--&&reWhitespace.test(string.charAt(index)););return index},reTrimStart=/^\\s+/;var _baseTrim=function(string){return string?string.slice(0,_trimmedEndIndex(string)+1).replace(reTrimStart,\"\"):string},reIsBadHex=/^[-+]0x[0-9a-f]+$/i,reIsBinary=/^0b[01]+$/i,reIsOctal=/^0o[0-7]+$/i,freeParseInt=parseInt;var toNumber_1=function(value){if(\"number\"==typeof value)return value;if(isSymbol_1(value))return NaN;if(isObject_1(value)){var other=\"function\"==typeof value.valueOf?value.valueOf():value;value=isObject_1(other)?other+\"\":other}if(\"string\"!=typeof value)return 0===value?value:+value;value=_baseTrim(value);var isBinary=reIsBinary.test(value);return isBinary||reIsOctal.test(value)?freeParseInt(value.slice(2),isBinary?2:8):reIsBadHex.test(value)?NaN:+value};var toFinite_1=function(value){return value?Infinity===(value=toNumber_1(value))||-Infinity===value?17976931348623157e292*(value<0?-1:1):value==value?value:0:0===value?value:0};var toInteger_1=function(value){var result=toFinite_1(value),remainder=result%1;return result==result?remainder?result-remainder:result:0},nativeMax$1=Math.max,nativeMin=Math.min;var findLastIndex_1=function(array,predicate,fromIndex){var length=null==array?0:array.length;if(!length)return-1;var index=length-1;return void 0!==fromIndex&&(index=toInteger_1(fromIndex),index=fromIndex<0?nativeMax$1(length+index,0):nativeMin(index,length-1)),_baseFindIndex(array,_baseIteratee(predicate),index,!0)},computeOldLineNumber$2=computeLineNumberFactory(\"old\"),computeNewLineNumber$1=computeLineNumberFactory(\"new\");function getOldRangeFromHunk(_ref){var oldStart=_ref.oldStart;return[oldStart,oldStart+_ref.oldLines-1]}function createHunkFromChanges(changes){if(!changes.length)return null;var hunk=changes.reduce((function(hunk,change){return isNormal(change)||(hunk.isPlain=!1),isInsert(change)||(hunk.oldLines=hunk.oldLines+1,-1===hunk.oldStart&&(hunk.oldStart=computeOldLineNumber$2(change))),isDelete(change)||(hunk.newLines=hunk.newLines+1,-1===hunk.newStart&&(hunk.newStart=computeNewLineNumber$1(change))),hunk}),{isPlain:!0,content:\"\",oldStart:-1,oldLines:0,newStart:-1,newLines:0}),oldStart=hunk.oldStart,oldLines=hunk.oldLines,newStart=hunk.newStart,newLines=hunk.newLines;return _objectSpread2(_objectSpread2({},hunk),{},{content:\"@@ -\".concat(oldStart,\",\").concat(oldLines,\" +\").concat(newStart,\",\").concat(newLines),changes:changes})}function textLinesToHunk(lines,oldStartLine,newStartLine){return createHunkFromChanges(lines.map((function(line,i){return{type:\"normal\",isNormal:!0,oldLineNumber:oldStartLine+i,newLineNumber:newStartLine+i,content:\"\"+line}})))}function sliceHunk(_ref2,oldStartLine,oldEndLine){var changes=_ref2.changes,changeIndex=changes.findIndex((function(change){return computeOldLineNumber$2(change)>=oldStartLine}));if(-1===changeIndex)return null;var startIndex=function(){if(0===changeIndex)return changeIndex;var nearestHeadingNocmalChangeIndex=findLastIndex_1(changes,(function(change){return!isInsert(change)}),changeIndex-1);return-1===nearestHeadingNocmalChangeIndex?changeIndex:nearestHeadingNocmalChangeIndex+1}();if(void 0===oldEndLine)return createHunkFromChanges(changes.slice(startIndex));var endIndex=findLastIndex_1(changes,(function(change){return computeOldLineNumber$2(change)<=oldEndLine}));return createHunkFromChanges(changes.slice(startIndex,-1===endIndex?void 0:endIndex))}function mergeHunk(previousHunk,nextHunk){if(!previousHunk)return nextHunk;if(!nextHunk)return previousHunk;var _getOldRangeFromHunk2=_slicedToArray(getOldRangeFromHunk(previousHunk),2),previousStart=_getOldRangeFromHunk2[0],previousEnd=_getOldRangeFromHunk2[1],_getOldRangeFromHunk4=_slicedToArray(getOldRangeFromHunk(nextHunk),2),nextStart=_getOldRangeFromHunk4[0],nextEnd=_getOldRangeFromHunk4[1];if(previousEnd+1===nextStart)return createHunkFromChanges([].concat(_toConsumableArray(previousHunk.changes),_toConsumableArray(nextHunk.changes)));if(previousStart<=nextStart&&previousEnd>=nextEnd){if(previousHunk.isPlain&&!nextHunk.isPlain){var head=sliceHunk(previousHunk,previousStart,nextStart),_tail=sliceHunk(previousHunk,nextEnd+1);return mergeHunk(mergeHunk(head,nextHunk),_tail)}return previousHunk}return previousHunk.isPlain?mergeHunk(sliceHunk(previousHunk,previousStart,nextStart),nextHunk):mergeHunk(previousHunk,sliceHunk(nextHunk,previousEnd+1))}function appendOrMergeHunk(hunks,nextHunk){var lastHunk=last$1(hunks);if(!lastHunk)return[nextHunk];if(lastHunk.oldStart+lastHunk.oldLines<nextHunk.oldStart)return hunks.concat(nextHunk);var mergedHunk=mergeHunk(lastHunk,nextHunk);return mergedHunk?[].concat(_toConsumableArray(hunks.slice(0,-1)),[mergedHunk]):hunks}function insertHunk(hunks,insertion){var insertionOldLineNumber=computeOldLineNumber$2(insertion.changes[0]),insertPosition=hunks.findIndex((function(_ref3){var changes=_ref3.changes;return!!changes.length&&computeOldLineNumber$2(changes[0])>=insertionOldLineNumber}));return(-1===insertPosition?hunks.concat(insertion):[].concat(_toConsumableArray(hunks.slice(0,insertPosition)),[insertion],_toConsumableArray(hunks.slice(insertPosition)))).reduce(appendOrMergeHunk,[])}function getChangeKey(change){if(!change)throw new Error(\"change is not provided\");if(isNormal(change))return\"N\".concat(change.oldLineNumber);var prefix=isInsert(change)?\"I\":\"D\";return\"\".concat(prefix).concat(change.lineNumber)}var getCorrespondingNewLineNumber$1=getCorrespondingLineNumberFactory(\"old\"),computeOldLineNumber$1=computeLineNumberFactory(\"old\"),isOldLineNumberInHunk=isInHunkFactory(\"oldStart\",\"oldLines\"),isOldLineNumberBetweenHunks=isBetweenHunksFactory(\"oldStart\",\"oldLines\");function splitRangeToValidOnes(hunks,start,end){var correspondingHunkIndex=function(hunks,oldLineNumber){if(!hunks.length)return-1;var firstHunk=first(hunks);if(oldLineNumber<firstHunk.oldStart||isOldLineNumberInHunk(firstHunk,oldLineNumber))return 0;for(var i=1;i<hunks.length;i++){var currentHunk=hunks[i];if(isOldLineNumberInHunk(currentHunk,oldLineNumber))return i;var previousHunk=hunks[i-1];if(isOldLineNumberBetweenHunks(previousHunk,currentHunk,oldLineNumber))return i}return-1}(hunks,start);if(-1===correspondingHunkIndex)return[[start,end]];var correspondingHunk=hunks[correspondingHunkIndex];if(start<correspondingHunk.oldStart){var headingChangesCount=correspondingHunk.changes.findIndex((function(change){return!isNormal(change)})),_validEnd=correspondingHunk.oldStart+Math.max(headingChangesCount,0);return _validEnd>=end?[[start,end]]:[[start,_validEnd]].concat(_toConsumableArray(splitRangeToValidOnes(hunks,_validEnd+1,end)))}var changes=correspondingHunk.changes,nearestNormalChangeIndex=function(_ref,start){var changes=_ref.changes,index=changes.findIndex((function(change){return computeOldLineNumber$1(change)===start}));if(index<0)return-1;for(var i=index;i<changes.length;i++)if(isNormal(changes[i]))return i;return-1}(correspondingHunk,start);if(-1===nearestNormalChangeIndex)return[];var validStartChange=changes[nearestNormalChangeIndex],validStart=computeOldLineNumber$1(validStartChange),adjacentChangesCount=changes.slice(nearestNormalChangeIndex+1).findIndex((function(change){return!isNormal(change)})),validEnd=computeOldLineNumber$1(validStartChange)+Math.max(adjacentChangesCount,0);return validEnd>=end?[[validStart,end]]:[[validStart,validEnd]].concat(_toConsumableArray(splitRangeToValidOnes(hunks,validEnd+1,end)))}function expandFromRawCode(hunks,source,start,end){return splitRangeToValidOnes(hunks,start,end).reduce((function(hunks,range){return function(hunks,source,_ref2){var _ref3=_slicedToArray(_ref2,2),start=_ref3[0],end=_ref3[1],slicedLines=(\"string\"==typeof source?source.split(\"\\n\"):source).slice(Math.max(start,1)-1,end-1);if(!slicedLines.length)return hunks;var slicedHunk=textLinesToHunk(slicedLines,start,getCorrespondingNewLineNumber$1(hunks,start));return slicedHunk?insertHunk(hunks,slicedHunk):hunks}(hunks,source,range)}),hunks)}function getCollapsedLinesCountBetween(previousHunk,nextHunk){if(!previousHunk)return nextHunk.oldStart-1;var previousEnd=previousHunk.oldStart+previousHunk.oldLines;return nextHunk.oldStart-previousEnd}function expandCollapsedBlockBy(hunks,source,predicate){var linesOfCode=\"string\"==typeof source?source.split(\"\\n\"):source,firstHunk=first(hunks),initialExpandingBlocks=predicate(firstHunk.oldStart-1,1,1)?[[1,firstHunk.oldStart]]:[],expandingBlocks=hunks.reduce((function(expandingBlocks,currentHunk,index,hunks){var nextHunk=hunks[index+1],oldStart=currentHunk.oldStart+currentHunk.oldLines,newStart=currentHunk.newStart+currentHunk.newLines,lines=nextHunk?getCollapsedLinesCountBetween(currentHunk,nextHunk):linesOfCode.length-oldStart+1;return predicate(lines,oldStart,newStart)&&expandingBlocks.push([oldStart,oldStart+lines]),expandingBlocks}),initialExpandingBlocks);return expandingBlocks.reduce((function(hunks,_ref4){var _ref5=_slicedToArray(_ref4,2),start=_ref5[0],end=_ref5[1];return expandFromRawCode(hunks,linesOfCode,start,end)}),hunks)}var computeOldLineNumber=computeLineNumberFactory(\"old\"),computeNewLineNumber=computeLineNumberFactory(\"new\"),findChangeByOldLineNumber=findChangeByLineNumberFactory(\"old\"),findChangeByNewLineNumber=findChangeByLineNumberFactory(\"new\"),getCorrespondingOldLineNumber=getCorrespondingLineNumberFactory(\"new\"),getCorrespondingNewLineNumber=getCorrespondingLineNumberFactory(\"old\"),_defineProperty=function(){try{var func=_getNative(Object,\"defineProperty\");return func({},\"\",{}),func}catch(e){}}();var _baseAssignValue=function(object,key,value){\"__proto__\"==key&&_defineProperty?_defineProperty(object,key,{configurable:!0,enumerable:!0,value:value,writable:!0}):object[key]=value};var _createBaseFor=function(fromRight){return function(object,iteratee,keysFunc){for(var index=-1,iterable=Object(object),props=keysFunc(object),length=props.length;length--;){var key=props[fromRight?length:++index];if(!1===iteratee(iterable[key],key,iterable))break}return object}},_baseFor=_createBaseFor();var _baseForOwn=function(object,iteratee){return object&&_baseFor(object,iteratee,keys_1)};var mapValues_1=function(object,iteratee){var result={};return iteratee=_baseIteratee(iteratee),_baseForOwn(object,(function(value,key,object){_baseAssignValue(result,key,iteratee(value,key,object))})),result},_excluded$7=[\"changeKey\",\"text\",\"tokens\",\"renderToken\"],defaultRenderToken=function defaultRenderToken(_ref,i){var type=_ref.type,value=_ref.value,markType=_ref.markType,properties=_ref.properties,className=_ref.className,children=_ref.children,renderWithClassName=function(className){return jsx(\"span\",{className:className,children:value||children&&children.map(defaultRenderToken)},i)};switch(type){case\"text\":return value;case\"mark\":return renderWithClassName(\"diff-code-mark diff-code-mark-\".concat(markType));case\"edit\":return renderWithClassName(\"diff-code-edit\");default:var legacyClassName=properties&&properties.className;return renderWithClassName(classnames(className||legacyClassName))}};function isEmptyToken(tokens){if(tokens.length>1)return!1;var token=_slicedToArray(tokens,1)[0];return\"text\"===token.type&&!token.value}function CodeCell(props){var changeKey=props.changeKey,text=props.text,tokens=props.tokens,renderToken=props.renderToken,attributes=_objectWithoutProperties(props,_excluded$7),actualRenderToken=renderToken?function(token,i){return renderToken(token,defaultRenderToken,i)}:defaultRenderToken;return jsx(\"td\",_objectSpread2(_objectSpread2({},attributes),{},{\"data-change-key\":changeKey,children:tokens?isEmptyToken(tokens)?\" \":tokens.map(actualRenderToken):text||\" \"}))}var CodeCell$1=memo(CodeCell);function renderDefaultBy(change,side){return function(){var lineNumber=\"old\"===side?computeOldLineNumber(change):computeNewLineNumber(change);return-1===lineNumber?void 0:lineNumber}}function wrapInAnchorBy(gutterAnchor,anchorTarget){return function(element){return gutterAnchor&&element?jsx(\"a\",{href:anchorTarget?\"#\"+anchorTarget:void 0,children:element}):element}}function composeCallback(own,custom){return custom?function(e){own(),custom(e)}:own}function useBoundCallbacks(callbacks,arg,hoverOn,hoverOff){return useMemo((function(){var output=mapValues_1(callbacks,(function(fn){return function(e){return fn&&fn(arg,e)}}));return output.onMouseEnter=composeCallback(hoverOn,output.onMouseEnter),output.onMouseLeave=composeCallback(hoverOff,output.onMouseLeave),output}),[callbacks,hoverOn,hoverOff,arg])}function renderGutterCell(className,change,changeKey,side,gutterAnchor,anchorTarget,events,inHoverState,renderGutter){var gutterOptions={change:change,side:side,inHoverState:inHoverState,renderDefault:renderDefaultBy(change,side),wrapInAnchor:wrapInAnchorBy(gutterAnchor,anchorTarget)};return jsx(\"td\",_objectSpread2(_objectSpread2({className:className},events),{},{\"data-change-key\":changeKey,children:renderGutter(gutterOptions)}))}function UnifiedChange(props){var _useState2,value,setValue,change=props.change,selected=props.selected,tokens=props.tokens,className=props.className,gutterClassName=props.gutterClassName,codeClassName=props.codeClassName,gutterEvents=props.gutterEvents,codeEvents=props.codeEvents,hideGutter=props.hideGutter,gutterAnchor=props.gutterAnchor,generateAnchorID=props.generateAnchorID,renderToken=props.renderToken,renderGutter=props.renderGutter,type=change.type,content=change.content,changeKey=getChangeKey(change),_useBoolean=(_useState2=_slicedToArray(useState(!1),2),value=_useState2[0],setValue=_useState2[1],[value,useCallback((function(){return setValue(!0)}),[]),useCallback((function(){return setValue(!1)}),[])]),_useBoolean2=_slicedToArray(_useBoolean,3),hover=_useBoolean2[0],hoverOn=_useBoolean2[1],hoverOff=_useBoolean2[2],eventArg=useMemo((function(){return{change:change}}),[change]),boundGutterEvents=useBoundCallbacks(gutterEvents,eventArg,hoverOn,hoverOff),boundCodeEvents=useBoundCallbacks(codeEvents,eventArg,hoverOn,hoverOff),anchorID=generateAnchorID(change),gutterClassNameValue=classnames(\"diff-gutter\",\"diff-gutter-\".concat(type),gutterClassName,{\"diff-gutter-selected\":selected}),codeClassNameValue=classnames(\"diff-code\",\"diff-code-\".concat(type),codeClassName,{\"diff-code-selected\":selected});return jsxs(\"tr\",{id:anchorID,className:classnames(\"diff-line\",className),children:[!hideGutter&&renderGutterCell(gutterClassNameValue,change,changeKey,\"old\",gutterAnchor,anchorID,boundGutterEvents,hover,renderGutter),!hideGutter&&renderGutterCell(gutterClassNameValue,change,changeKey,\"new\",gutterAnchor,anchorID,boundGutterEvents,hover,renderGutter),jsx(CodeCell$1,_objectSpread2({className:codeClassNameValue,changeKey:changeKey,text:content,tokens:tokens,renderToken:renderToken},boundCodeEvents))]})}var UnifiedChange$1=memo(UnifiedChange);function UnifiedWidget(_ref){var hideGutter=_ref.hideGutter,element=_ref.element;return jsx(\"tr\",{className:\"diff-widget\",children:jsx(\"td\",{colSpan:hideGutter?1:3,className:\"diff-widget-content\",children:element})})}var _excluded$6=[\"hideGutter\",\"selectedChanges\",\"tokens\",\"lineClassName\"],_excluded2$2=[\"hunk\",\"widgets\",\"className\"];function UnifiedHunk(props){var hunk=props.hunk,widgets=props.widgets,className=props.className,childrenProps=_objectWithoutProperties(props,_excluded2$2),elements=function(changes,widgets){return changes.reduce((function(elements,change){var key=getChangeKey(change);elements.push([\"change\",key,change]);var widget=widgets[key];return widget&&elements.push([\"widget\",key,widget]),elements}),[])}(hunk.changes,widgets);return jsx(\"tbody\",{className:classnames(\"diff-hunk\",className),children:elements.map((function(element){return function(_ref,props){var _ref2=_slicedToArray(_ref,3),type=_ref2[0],key=_ref2[1],value=_ref2[2],hideGutter=props.hideGutter,selectedChanges=props.selectedChanges,tokens=props.tokens,lineClassName=props.lineClassName,changeProps=_objectWithoutProperties(props,_excluded$6);if(\"change\"===type){var side=isDelete(value)?\"old\":\"new\",lineNumber=isDelete(value)?computeOldLineNumber(value):computeNewLineNumber(value),tokensOfLine=tokens?tokens[side][lineNumber-1]:null;return jsx(UnifiedChange$1,_objectSpread2({className:lineClassName,change:value,hideGutter:hideGutter,selected:selectedChanges.includes(key),tokens:tokensOfLine},changeProps),\"change\".concat(key))}return\"widget\"===type?jsx(UnifiedWidget,{hideGutter:hideGutter,element:value},\"widget\".concat(key)):null}(element,childrenProps)}))})}var SIDE_OLD=0;function useCallbackOnSide(side,setHover,change,customCallbacks){var markHover=useCallback((function(){return setHover(side)}),[side,setHover]),unmarkHover=useCallback((function(){return setHover(\"\")}),[setHover]);return useMemo((function(){var callbacks=mapValues_1(customCallbacks,(function(fn){return function(e){return fn&&fn({side:side,change:change},e)}}));return callbacks.onMouseEnter=composeCallback(markHover,callbacks.onMouseEnter),callbacks.onMouseLeave=composeCallback(unmarkHover,callbacks.onMouseLeave),callbacks}),[change,customCallbacks,markHover,side,unmarkHover])}function renderCells(args){var change=args.change,side=args.side,selected=args.selected,tokens=args.tokens,gutterClassName=args.gutterClassName,codeClassName=args.codeClassName,gutterEvents=args.gutterEvents,codeEvents=args.codeEvents,anchorID=args.anchorID,gutterAnchor=args.gutterAnchor,gutterAnchorTarget=args.gutterAnchorTarget,hideGutter=args.hideGutter,hover=args.hover,renderToken=args.renderToken,renderGutter=args.renderGutter;if(!change){var _gutterClassNameValue=classnames(\"diff-gutter\",\"diff-gutter-omit\",gutterClassName),_codeClassNameValue=classnames(\"diff-code\",\"diff-code-omit\",codeClassName);return[!hideGutter&&jsx(\"td\",{className:_gutterClassNameValue},\"gutter\"),jsx(\"td\",{className:_codeClassNameValue},\"code\")]}var type=change.type,content=change.content,changeKey=getChangeKey(change),sideName=side===SIDE_OLD?\"old\":\"new\",gutterProps=_objectSpread2({id:anchorID||void 0,className:classnames(\"diff-gutter\",\"diff-gutter-\".concat(type),_defineProperty$1({\"diff-gutter-selected\":selected},\"diff-line-hover-\"+sideName,hover),gutterClassName),children:renderGutter({change:change,side:sideName,inHoverState:hover,renderDefault:renderDefaultBy(change,sideName),wrapInAnchor:wrapInAnchorBy(gutterAnchor,gutterAnchorTarget)})},gutterEvents),codeClassNameValue=classnames(\"diff-code\",\"diff-code-\".concat(type),_defineProperty$1({\"diff-code-selected\":selected},\"diff-line-hover-\"+sideName,hover),codeClassName);return[!hideGutter&&jsx(\"td\",_objectSpread2(_objectSpread2({},gutterProps),{},{\"data-change-key\":changeKey}),\"gutter\"),jsx(CodeCell$1,_objectSpread2({className:codeClassNameValue,changeKey:changeKey,text:content,tokens:tokens,renderToken:renderToken},codeEvents),\"code\")]}function SplitChange(props){var className=props.className,oldChange=props.oldChange,newChange=props.newChange,oldSelected=props.oldSelected,newSelected=props.newSelected,oldTokens=props.oldTokens,newTokens=props.newTokens,monotonous=props.monotonous,gutterClassName=props.gutterClassName,codeClassName=props.codeClassName,gutterEvents=props.gutterEvents,codeEvents=props.codeEvents,hideGutter=props.hideGutter,generateAnchorID=props.generateAnchorID,gutterAnchor=props.gutterAnchor,renderToken=props.renderToken,renderGutter=props.renderGutter,_useState2=_slicedToArray(useState(\"\"),2),hover=_useState2[0],setHover=_useState2[1],oldGutterEvents=useCallbackOnSide(\"old\",setHover,oldChange,gutterEvents),newGutterEvents=useCallbackOnSide(\"new\",setHover,newChange,gutterEvents),oldCodeEvents=useCallbackOnSide(\"old\",setHover,oldChange,codeEvents),newCodeEvents=useCallbackOnSide(\"new\",setHover,newChange,codeEvents),oldAnchorID=oldChange&&generateAnchorID(oldChange),newAnchorID=newChange&&generateAnchorID(newChange),commons={monotonous:monotonous,hideGutter:hideGutter,gutterClassName:gutterClassName,codeClassName:codeClassName,gutterEvents:gutterEvents,codeEvents:codeEvents,renderToken:renderToken,renderGutter:renderGutter},oldArgs=_objectSpread2(_objectSpread2({},commons),{},{change:oldChange,side:SIDE_OLD,selected:oldSelected,tokens:oldTokens,gutterEvents:oldGutterEvents,codeEvents:oldCodeEvents,anchorID:oldAnchorID,gutterAnchor:gutterAnchor,gutterAnchorTarget:oldAnchorID,hover:\"old\"===hover}),newArgs=_objectSpread2(_objectSpread2({},commons),{},{change:newChange,side:1,selected:newSelected,tokens:newTokens,gutterEvents:newGutterEvents,codeEvents:newCodeEvents,anchorID:oldChange===newChange?null:newAnchorID,gutterAnchor:gutterAnchor,gutterAnchorTarget:oldChange===newChange?oldAnchorID:newAnchorID,hover:\"new\"===hover});if(monotonous)return jsx(\"tr\",{className:classnames(\"diff-line\",className),children:renderCells(oldChange?oldArgs:newArgs)});var lineTypeClassName=function(oldChange,newChange){return oldChange&&!newChange?\"diff-line-old-only\":!oldChange&&newChange?\"diff-line-new-only\":oldChange===newChange?\"diff-line-normal\":\"diff-line-compare\"}(oldChange,newChange);return jsxs(\"tr\",{className:classnames(\"diff-line\",lineTypeClassName,className),children:[renderCells(oldArgs),renderCells(newArgs)]})}var SplitChange$1=memo(SplitChange);function SplitWidget(_ref){var hideGutter=_ref.hideGutter,oldElement=_ref.oldElement,newElement=_ref.newElement;return _ref.monotonous?jsx(\"tr\",{className:\"diff-widget\",children:jsx(\"td\",{colSpan:hideGutter?1:2,className:\"diff-widget-content\",children:oldElement||newElement})}):oldElement===newElement?jsx(\"tr\",{className:\"diff-widget\",children:jsx(\"td\",{colSpan:hideGutter?2:4,className:\"diff-widget-content\",children:oldElement})}):jsxs(\"tr\",{className:\"diff-widget\",children:[jsx(\"td\",{colSpan:hideGutter?1:2,className:\"diff-widget-content\",children:oldElement}),jsx(\"td\",{colSpan:hideGutter?1:2,className:\"diff-widget-content\",children:newElement})]})}var _excluded$5=[\"selectedChanges\",\"monotonous\",\"hideGutter\",\"tokens\",\"lineClassName\"],_excluded2$1=[\"hunk\",\"widgets\",\"className\"];function keyForPair(x,y){return(x?getChangeKey(x):\"00\")+(y?getChangeKey(y):\"00\")}function SplitHunk(props){var hunk=props.hunk,widgets=props.widgets,className=props.className,childrenProps=_objectWithoutProperties(props,_excluded2$1),elements=function(changes,widgets){for(var findWidget=function(change){if(!change)return null;var key=getChangeKey(change);return widgets[key]||null},elements=[],i=0;i<changes.length;i++){var current=changes[i];if(isNormal(current))elements.push([\"change\",keyForPair(current,current),current,current]);else if(isDelete(current)){var next=changes[i+1];next&&isInsert(next)?(i+=1,elements.push([\"change\",keyForPair(current,next),current,next])):elements.push([\"change\",keyForPair(current,null),current,null])}else elements.push([\"change\",keyForPair(null,current),null,current]);var rowChanges=elements[elements.length-1],oldWidget=findWidget(rowChanges[2]),newWidget=findWidget(rowChanges[3]);if(oldWidget||newWidget){var key=rowChanges[1];elements.push([\"widget\",key,oldWidget,newWidget])}}return elements}(hunk.changes,widgets);return jsx(\"tbody\",{className:classnames(\"diff-hunk\",className),children:elements.map((function(item){return function(_ref,props){var _ref2=_slicedToArray(_ref,4),type=_ref2[0],key=_ref2[1],oldValue=_ref2[2],newValue=_ref2[3],selectedChanges=props.selectedChanges,monotonous=props.monotonous,hideGutter=props.hideGutter,tokens=props.tokens,lineClassName=props.lineClassName,changeProps=_objectWithoutProperties(props,_excluded$5);if(\"change\"===type){var oldSelected=!!oldValue&&selectedChanges.includes(getChangeKey(oldValue)),newSelected=!!newValue&&selectedChanges.includes(getChangeKey(newValue)),oldTokens=oldValue&&tokens?tokens.old[computeOldLineNumber(oldValue)-1]:null,newTokens=newValue&&tokens?tokens.new[computeNewLineNumber(newValue)-1]:null;return jsx(SplitChange$1,_objectSpread2({className:lineClassName,oldChange:oldValue,newChange:newValue,monotonous:monotonous,hideGutter:hideGutter,oldSelected:oldSelected,newSelected:newSelected,oldTokens:oldTokens,newTokens:newTokens},changeProps),\"change\".concat(key))}return\"widget\"===type?jsx(SplitWidget,{monotonous:monotonous,hideGutter:hideGutter,oldElement:oldValue,newElement:newValue},\"widget\".concat(key)):null}(item,childrenProps)}))})}var _excluded$4=[\"gutterType\",\"hunkClassName\"];function Hunk(_ref){var hunk=_ref.hunk,_useDiffSettings=useDiffSettings(),gutterType=_useDiffSettings.gutterType,hunkClassName=_useDiffSettings.hunkClassName,context=_objectWithoutProperties(_useDiffSettings,_excluded$4),hideGutter=\"none\"===gutterType,gutterAnchor=\"anchor\"===gutterType,RenderingHunk=\"unified\"===context.viewType?UnifiedHunk:SplitHunk;return jsx(RenderingHunk,_objectSpread2(_objectSpread2({},context),{},{hunk:hunk,hideGutter:hideGutter,gutterAnchor:gutterAnchor,className:hunkClassName}))}function noop(){}function setUserSelectStyle(element,selectable){var value=selectable?\"auto\":\"none\";element instanceof HTMLElement&&element.style.userSelect!==value&&(element.style.userSelect=value)}function defaultRenderChildren(hunks){return hunks.map((function(hunk){return jsx(Hunk,{hunk:hunk},function(hunk){return\"-\".concat(hunk.oldStart,\",\").concat(hunk.oldLines,\" +\").concat(hunk.newStart,\",\").concat(hunk.newLines)}(hunk))}))}function Diff(props){var diffType=props.diffType,hunks=props.hunks,optimizeSelection=props.optimizeSelection,className=props.className,_props$hunkClassName=props.hunkClassName,hunkClassName=void 0===_props$hunkClassName?DEFAULT_CONTEXT_VALUE.hunkClassName:_props$hunkClassName,_props$lineClassName=props.lineClassName,lineClassName=void 0===_props$lineClassName?DEFAULT_CONTEXT_VALUE.lineClassName:_props$lineClassName,_props$gutterClassNam=props.gutterClassName,gutterClassName=void 0===_props$gutterClassNam?DEFAULT_CONTEXT_VALUE.gutterClassName:_props$gutterClassNam,_props$codeClassName=props.codeClassName,codeClassName=void 0===_props$codeClassName?DEFAULT_CONTEXT_VALUE.codeClassName:_props$codeClassName,_props$gutterType=props.gutterType,gutterType=void 0===_props$gutterType?DEFAULT_CONTEXT_VALUE.gutterType:_props$gutterType,_props$viewType=props.viewType,viewType=void 0===_props$viewType?DEFAULT_CONTEXT_VALUE.viewType:_props$viewType,_props$gutterEvents=props.gutterEvents,gutterEvents=void 0===_props$gutterEvents?DEFAULT_CONTEXT_VALUE.gutterEvents:_props$gutterEvents,_props$codeEvents=props.codeEvents,codeEvents=void 0===_props$codeEvents?DEFAULT_CONTEXT_VALUE.codeEvents:_props$codeEvents,_props$generateAnchor=props.generateAnchorID,generateAnchorID=void 0===_props$generateAnchor?DEFAULT_CONTEXT_VALUE.generateAnchorID:_props$generateAnchor,_props$selectedChange=props.selectedChanges,selectedChanges=void 0===_props$selectedChange?DEFAULT_CONTEXT_VALUE.selectedChanges:_props$selectedChange,_props$widgets=props.widgets,widgets=void 0===_props$widgets?DEFAULT_CONTEXT_VALUE.widgets:_props$widgets,_props$renderGutter=props.renderGutter,renderGutter=void 0===_props$renderGutter?DEFAULT_CONTEXT_VALUE.renderGutter:_props$renderGutter,tokens=props.tokens,renderToken=props.renderToken,_props$children=props.children,children=void 0===_props$children?defaultRenderChildren:_props$children,root=useRef(null),enableColumnSelection=useCallback((function(_ref){var target=_ref.target;if(0===_ref.button){var closestCell=function(target,className){for(var current=target;current&&current!==document.documentElement&&!current.classList.contains(className);)current=current.parentElement;return current===document.documentElement?null:current}(target,\"diff-code\");if(closestCell&&closestCell.parentElement){var selection=window.getSelection();selection&&selection.removeAllRanges();var index=_toConsumableArray(closestCell.parentElement.children).indexOf(closestCell);if(1===index||3===index){var _step,_iterator=_createForOfIteratorHelper(root.current?root.current.querySelectorAll(\".diff-line\"):[]);try{for(_iterator.s();!(_step=_iterator.n()).done;){var cells=_step.value.children;setUserSelectStyle(cells[1],1===index),setUserSelectStyle(cells[3],3===index)}}catch(err){_iterator.e(err)}finally{_iterator.f()}}}}}),[]),hideGutter=\"none\"===gutterType,monotonous=\"add\"===diffType||\"delete\"===diffType,onTableMouseDown=\"split\"===viewType&&!monotonous&&optimizeSelection?enableColumnSelection:noop,cols=useMemo((function(){return jsxs(\"colgroup\",\"unified\"===viewType?{children:[!hideGutter&&jsx(\"col\",{className:\"diff-gutter-col\"}),!hideGutter&&jsx(\"col\",{className:\"diff-gutter-col\"}),jsx(\"col\",{})]}:monotonous?{children:[!hideGutter&&jsx(\"col\",{className:\"diff-gutter-col\"}),jsx(\"col\",{})]}:{children:[!hideGutter&&jsx(\"col\",{className:\"diff-gutter-col\"}),jsx(\"col\",{}),!hideGutter&&jsx(\"col\",{className:\"diff-gutter-col\"}),jsx(\"col\",{})]})}),[viewType,monotonous,hideGutter]),settingsContextValue=useMemo((function(){return{hunkClassName:hunkClassName,lineClassName:lineClassName,gutterClassName:gutterClassName,codeClassName:codeClassName,monotonous:monotonous,hideGutter:hideGutter,viewType:viewType,gutterType:gutterType,codeEvents:codeEvents,gutterEvents:gutterEvents,generateAnchorID:generateAnchorID,selectedChanges:selectedChanges,widgets:widgets,renderGutter:renderGutter,tokens:tokens,renderToken:renderToken}}),[codeClassName,codeEvents,generateAnchorID,gutterClassName,gutterEvents,gutterType,hideGutter,hunkClassName,lineClassName,monotonous,renderGutter,renderToken,selectedChanges,tokens,viewType,widgets]);return jsx(Provider,{value:settingsContextValue,children:jsxs(\"table\",{ref:root,className:classnames(\"diff\",\"diff-\".concat(viewType),className),onMouseDown:onTableMouseDown,children:[cols,children(hunks)]})})}var index=memo(Diff),warning=function(){};if(\"production\"!==process.env.NODE_ENV){var printWarning=function(format,args){var len=arguments.length;args=new Array(len>1?len-1:0);for(var key=1;key<len;key++)args[key-1]=arguments[key];var argIndex=0,message=\"Warning: \"+format.replace(/%s/g,(function(){return args[argIndex++]}));\"undefined\"!=typeof console&&console.error(message);try{throw new Error(message)}catch(x){}};warning=function(condition,format,args){var len=arguments.length;args=new Array(len>2?len-2:0);for(var key=2;key<len;key++)args[key-2]=arguments[key];if(void 0===format)throw new Error(\"`warning(condition, format, ...args)` requires a warning message argument\");condition||printWarning.apply(null,[format].concat(args))}}var warning_1=warning;function SplitDecoration(props){var hideGutter=props.hideGutter,monotonous=props.monotonous,className=props.className,gutterClassName=props.gutterClassName,contentClassName=props.contentClassName,children=props.children,computedClassName=classnames(\"diff-decoration\",className),computedGutterClassName=classnames(\"diff-decoration-gutter\",gutterClassName),computedContentClassName=classnames(\"diff-decoration-content\",contentClassName),columnCount=(hideGutter?2:4)/(monotonous?2:1),headerContentColSpan=columnCount-(hideGutter?0:1);if(1===Children.count(children))return jsx(\"tbody\",{className:computedClassName,children:jsx(\"tr\",{children:jsx(\"td\",{colSpan:columnCount,className:computedContentClassName,children:children})})});var _children=_slicedToArray(children,2),gutter=_children[0],content=_children[1];return jsx(\"tbody\",{className:computedClassName,children:jsxs(\"tr\",{children:[!hideGutter&&jsx(\"td\",{className:computedGutterClassName,children:gutter}),jsx(\"td\",{colSpan:headerContentColSpan,className:computedContentClassName,children:content})]})})}function UnifiedDecoration(props){var hideGutter=props.hideGutter,className=props.className,gutterClassName=props.gutterClassName,contentClassName=props.contentClassName,children=props.children,computedClassName=classnames(\"diff-decoration\",className),computedGutterClassName=classnames(\"diff-decoration-gutter\",gutterClassName),computedContentClassName=classnames(\"diff-decoration-content\",contentClassName);if(1===Children.count(children))return jsx(\"tbody\",{className:computedClassName,children:jsx(\"tr\",{children:jsx(\"td\",{colSpan:hideGutter?1:3,className:computedContentClassName,children:children})})});var _children=_slicedToArray(children,2),gutter=_children[0],content=_children[1];return jsx(\"tbody\",{className:computedClassName,children:jsxs(\"tr\",{children:[!hideGutter&&jsx(\"td\",{colSpan:2,className:computedGutterClassName,children:gutter}),jsx(\"td\",{className:computedContentClassName,children:content})]})})}function Decoration(props){var _props$className=props.className,className=void 0===_props$className?\"\":_props$className,_props$gutterClassNam=props.gutterClassName,gutterClassName=void 0===_props$gutterClassNam?\"\":_props$gutterClassNam,_props$contentClassNa=props.contentClassName,contentClassName=void 0===_props$contentClassNa?\"\":_props$contentClassNa,children=props.children,_useDiffSettings=useDiffSettings(),viewType=_useDiffSettings.viewType,gutterType=_useDiffSettings.gutterType,monotonous=_useDiffSettings.monotonous,RenderingDecoration=\"split\"===viewType?SplitDecoration:UnifiedDecoration,childrenCount=Children.count(children),hideGutter=\"none\"===gutterType;return warning_1(childrenCount<=2,\"Decoration only accepts a maxium of 2 children\"),warning_1(childrenCount<2||!hideGutter,\"Gutter element in decoration will not be rendered since hideGutter prop is set to true\"),jsx(RenderingDecoration,{hideGutter:hideGutter,monotonous:monotonous,className:className,gutterClassName:gutterClassName,contentClassName:contentClassName,children:children})}var _arrayAggregator=function(array,setter,iteratee,accumulator){for(var index=-1,length=null==array?0:array.length;++index<length;){var value=array[index];setter(accumulator,value,iteratee(value),array)}return accumulator};var _createBaseEach=function(eachFunc,fromRight){return function(collection,iteratee){if(null==collection)return collection;if(!isArrayLike_1(collection))return eachFunc(collection,iteratee);for(var length=collection.length,index=fromRight?length:-1,iterable=Object(collection);(fromRight?index--:++index<length)&&!1!==iteratee(iterable[index],index,iterable););return collection}},_baseEach=_createBaseEach(_baseForOwn);var _baseAggregator=function(collection,setter,iteratee,accumulator){return _baseEach(collection,(function(value,key,collection){setter(accumulator,value,iteratee(value),collection)})),accumulator};var _createAggregator=function(setter,initializer){return function(collection,iteratee){var func=isArray_1(collection)?_arrayAggregator:_baseAggregator,accumulator=initializer?initializer():{};return func(collection,setter,_baseIteratee(iteratee),accumulator)}},keyBy_1=_createAggregator((function(result,value,key){_baseAssignValue(result,key,value)})),spreadableSymbol=_Symbol?_Symbol.isConcatSpreadable:void 0;var _isFlattenable=function(value){return isArray_1(value)||isArguments_1(value)||!!(spreadableSymbol&&value&&value[spreadableSymbol])};var _baseFlatten=function baseFlatten(array,depth,predicate,isStrict,result){var index=-1,length=array.length;for(predicate||(predicate=_isFlattenable),result||(result=[]);++index<length;){var value=array[index];depth>0&&predicate(value)?depth>1?baseFlatten(value,depth-1,predicate,isStrict,result):_arrayPush(result,value):isStrict||(result[result.length]=value)}return result};var _baseMap=function(collection,iteratee){var index=-1,result=isArrayLike_1(collection)?Array(collection.length):[];return _baseEach(collection,(function(value,key,collection){result[++index]=iteratee(value,key,collection)})),result};var map_1=function(collection,iteratee){return(isArray_1(collection)?_arrayMap:_baseMap)(collection,_baseIteratee(iteratee))};var flatMap_1=function(collection,iteratee){return _baseFlatten(map_1(collection,iteratee),1)};function applyHunk(linesOfCode,_ref){var newStart=_ref.newStart,_changes$reduce=_ref.changes.reduce((function(_ref2,change){var _ref3=_slicedToArray(_ref2,2),lines=_ref3[0],cursor=_ref3[1];return isDelete(change)?(lines.splice(cursor,1),[lines,cursor]):(isInsert(change)&&lines.splice(cursor,0,change.content),[lines,cursor+1])}),[linesOfCode,newStart-1]);return _slicedToArray(_changes$reduce,1)[0]}function mapChanges(changes,side,toValue){if(!changes.length)return[];var computeLineNumber=\"old\"===side?computeOldLineNumber:computeNewLineNumber,changesByLineNumber=keyBy_1(changes,computeLineNumber),maxLineNumber=computeLineNumber(changes[changes.length-1]);return Array.from({length:maxLineNumber}).map((function(value,i){return toValue(changesByLineNumber[i+1])}))}function toTextPair(hunks){var _groupChanges=function(hunks){return flatMap_1(hunks,(function(hunk){return hunk.changes})).reduce((function(_ref4,change){var _ref5=_slicedToArray(_ref4,2),oldChanges=_ref5[0],newChanges=_ref5[1];return isNormal(change)?(oldChanges.push(change),newChanges.push(change)):isDelete(change)?oldChanges.push(change):newChanges.push(change),[oldChanges,newChanges]}),[[],[]])}(hunks),_groupChanges2=_slicedToArray(_groupChanges,2),oldChanges=_groupChanges2[0],newChanges=_groupChanges2[1],toText=function(change){return change?change.content:\"\"};return[mapChanges(oldChanges,\"old\",toText).join(\"\\n\"),mapChanges(newChanges,\"new\",toText).join(\"\\n\")]}function createRoot(children){return{type:\"root\",children:children}}function toTokenTrees(hunks,options){if(options.oldSource){var newSource=function(oldSource,hunks){return hunks.reduce(applyHunk,oldSource.split(\"\\n\")).join(\"\\n\")}(options.oldSource,hunks),highlightText=options.highlight?function(text){return options.refractor.highlight(text,options.language)}:function(text){return[{type:\"text\",value:text}]};return[createRoot(highlightText(options.oldSource)),createRoot(highlightText(newSource))]}var _toTextPair2=_slicedToArray(toTextPair(hunks),2),oldText=_toTextPair2[0],newText=_toTextPair2[1],toTree=options.highlight?function(text){return createRoot(options.refractor.highlight(text,options.language))}:function(text){return createRoot([{type:\"text\",value:text}])};return[toTree(oldText),toTree(newText)]}function clone(path){return path.map((function(node){return _objectSpread2({},node)}))}function replace(path,leaf){return[].concat(_toConsumableArray(clone(path.slice(0,-1))),[leaf])}function leafOf(path){var last=path[path.length-1];if(\"text\"===last.type)return last;throw new Error(\"Invalid token path with leaf of type \".concat(last.type))}function split(path,splitStart,splitEnd,wrapSplitNode){var parents=path.slice(0,-1),leaf=leafOf(path),output=[];if(splitEnd<=0||splitStart>=(null==leaf?void 0:leaf.value.length))return[path];var split=function(start,end){var value=leaf.value.slice(start,end);return[].concat(_toConsumableArray(parents),[_objectSpread2(_objectSpread2({},leaf),{},{value:value})])};if(splitStart>0){var head=split(0,splitStart);output.push(clone(head))}var body=split(Math.max(splitStart,0),splitEnd);if(output.push(wrapSplitNode?function(path,parent){return[parent].concat(_toConsumableArray(clone(path)))}(body,wrapSplitNode):clone(body)),splitEnd<leaf.value.length){var tail=split(splitEnd);output.push(clone(tail))}return output}var _excluded$3=[\"children\"];function treeToPathList(node){var output=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],path=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(node.children){var children=node.children,nodeToUse=_objectWithoutProperties(node,_excluded$3);path.push(nodeToUse);var _step,_iterator=_createForOfIteratorHelper(children);try{for(_iterator.s();!(_step=_iterator.n()).done;){treeToPathList(_step.value,output,path)}}catch(err){_iterator.e(err)}finally{_iterator.f()}path.pop()}else output.push(clone([].concat(_toConsumableArray(path.slice(1)),[node])));return output}function splitByLineBreak(paths){return paths.reduce((function(lines,path){var currentLine=lines[lines.length-1],_splitPathToLines=function(path){var leaf=leafOf(path);return leaf.value.includes(\"\\n\")?leaf.value.split(\"\\n\").map((function(line){return replace(path,_objectSpread2(_objectSpread2({},leaf),{},{value:line}))})):[path]}(path),_splitPathToLines2=_toArray(_splitPathToLines),currentRemaining=_splitPathToLines2[0],nextLines=_splitPathToLines2.slice(1);return[].concat(_toConsumableArray(lines.slice(0,-1)),[[].concat(_toConsumableArray(currentLine),[currentRemaining])],_toConsumableArray(nextLines.map((function(path){return[path]}))))}),[[]])}function normalizeToLines(tree){return splitByLineBreak(treeToPathList(tree))}var isEqualWith_1=function(value,other,customizer){var result=(customizer=\"function\"==typeof customizer?customizer:void 0)?customizer(value,other):void 0;return void 0===result?_baseIsEqual(value,other,void 0,customizer):!!result};var isEqual_1=function(value,other){return _baseIsEqual(value,other)};var last_1=function(array){var length=null==array?0:array.length;return length?array[length-1]:void 0};function attachNode(parent,node){if(!parent.children)throw new Error(\"parent node missing children property\");var x,y,previousSibling=last_1(parent.children);return previousSibling&&(y=node,(x=previousSibling).type===y.type&&(\"text\"===x.type||x.children&&y.children&&isEqualWith_1(x,y,(function(x,y,name){return\"chlidren\"===name||isEqual_1(x,y)}))))?parent.children[parent.children.length-1]=function(x,y){return\"value\"in x&&\"value\"in y?_objectSpread2(_objectSpread2({},x),{},{value:\"\".concat(x.value).concat(y.value)}):x}(previousSibling,node):parent.children.push(node),parent.children[parent.children.length-1]}function backToTree(pathList){var _step,root={type:\"root\",children:[]},_iterator=_createForOfIteratorHelper(pathList);try{var _loop=function(){var path=_step.value;path.reduce((function(parent,node,i){return attachNode(parent,i===path.length-1?_objectSpread2({},node):_objectSpread2(_objectSpread2({},node),{},{children:[]}))}),root)};for(_iterator.s();!(_step=_iterator.n()).done;)_loop()}catch(err){_iterator.e(err)}finally{_iterator.f()}return root}var hasOwnProperty$1=Object.prototype.hasOwnProperty,groupBy_1=_createAggregator((function(result,value,key){hasOwnProperty$1.call(result,key)?result[key].push(value):_baseAssignValue(result,key,[value])})),hasOwnProperty=Object.prototype.hasOwnProperty;var isEmpty_1=function(value){if(null==value)return!0;if(isArrayLike_1(value)&&(isArray_1(value)||\"string\"==typeof value||\"function\"==typeof value.splice||isBuffer_1(value)||isTypedArray_1(value)||isArguments_1(value)))return!value.length;var tag=_getTag(value);if(\"[object Map]\"==tag||\"[object Set]\"==tag)return!value.size;if(_isPrototype(value))return!_baseKeys(value).length;for(var key in value)if(hasOwnProperty.call(value,key))return!1;return!0},splitPathToEncloseRange=function(paths,node){var start=node.start,length=node.length,rangeEnd=start+length,_paths$reduce=paths.reduce((function(_ref,path){var _ref2=_slicedToArray(_ref,2),output=_ref2[0],nodeStart=_ref2[1],nodeEnd=nodeStart+leafOf(path).value.length;if(nodeStart>rangeEnd||nodeEnd<start)output.push(path);else{var segments=split(path,start-nodeStart,rangeEnd-nodeStart,node);output.push.apply(output,_toConsumableArray(segments))}return[output,nodeEnd]}),[[],0]);return _slicedToArray(_paths$reduce,1)[0]};function process$1(linesOfPaths,ranges){var rangesByLine=groupBy_1(ranges,\"lineNumber\");return linesOfPaths.map((function(line,i){return function(paths,ranges){return isEmpty_1(ranges)?paths:ranges.reduce(splitPathToEncloseRange,paths)}(line,rangesByLine[i+1])}))}function pickRanges(oldRanges,newRanges){return function(_ref3){var _ref4=_slicedToArray(_ref3,2),oldLinesOfPaths=_ref4[0],newLinesOfPaths=_ref4[1];return[process$1(oldLinesOfPaths,oldRanges),process$1(newLinesOfPaths,newRanges)]}}var flatten_1=function(array){return(null==array?0:array.length)?_baseFlatten(array,1):[]},nativeMax=Math.max;var findIndex_1=function(array,predicate,fromIndex){var length=null==array?0:array.length;if(!length)return-1;var index=null==fromIndex?0:toInteger_1(fromIndex);return index<0&&(index=nativeMax(length+index,0)),_baseFindIndex(array,_baseIteratee(predicate),index)},diffMatchPatch=createCommonjsModule((function(module){var diff_match_patch=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32};diff_match_patch.Diff=function(op,text){return[op,text]},diff_match_patch.prototype.diff_main=function(text1,text2,opt_checklines,opt_deadline){void 0===opt_deadline&&(opt_deadline=this.Diff_Timeout<=0?Number.MAX_VALUE:(new Date).getTime()+1e3*this.Diff_Timeout);var deadline=opt_deadline;if(null==text1||null==text2)throw new Error(\"Null input. (diff_main)\");if(text1==text2)return text1?[new diff_match_patch.Diff(0,text1)]:[];void 0===opt_checklines&&(opt_checklines=!0);var checklines=opt_checklines,commonlength=this.diff_commonPrefix(text1,text2),commonprefix=text1.substring(0,commonlength);text1=text1.substring(commonlength),text2=text2.substring(commonlength),commonlength=this.diff_commonSuffix(text1,text2);var commonsuffix=text1.substring(text1.length-commonlength);text1=text1.substring(0,text1.length-commonlength),text2=text2.substring(0,text2.length-commonlength);var diffs=this.diff_compute_(text1,text2,checklines,deadline);return commonprefix&&diffs.unshift(new diff_match_patch.Diff(0,commonprefix)),commonsuffix&&diffs.push(new diff_match_patch.Diff(0,commonsuffix)),this.diff_cleanupMerge(diffs),diffs},diff_match_patch.prototype.diff_compute_=function(text1,text2,checklines,deadline){var diffs;if(!text1)return[new diff_match_patch.Diff(1,text2)];if(!text2)return[new diff_match_patch.Diff(-1,text1)];var longtext=text1.length>text2.length?text1:text2,shorttext=text1.length>text2.length?text2:text1,i=longtext.indexOf(shorttext);if(-1!=i)return diffs=[new diff_match_patch.Diff(1,longtext.substring(0,i)),new diff_match_patch.Diff(0,shorttext),new diff_match_patch.Diff(1,longtext.substring(i+shorttext.length))],text1.length>text2.length&&(diffs[0][0]=diffs[2][0]=-1),diffs;if(1==shorttext.length)return[new diff_match_patch.Diff(-1,text1),new diff_match_patch.Diff(1,text2)];var hm=this.diff_halfMatch_(text1,text2);if(hm){var text1_a=hm[0],text1_b=hm[1],text2_a=hm[2],text2_b=hm[3],mid_common=hm[4],diffs_a=this.diff_main(text1_a,text2_a,checklines,deadline),diffs_b=this.diff_main(text1_b,text2_b,checklines,deadline);return diffs_a.concat([new diff_match_patch.Diff(0,mid_common)],diffs_b)}return checklines&&text1.length>100&&text2.length>100?this.diff_lineMode_(text1,text2,deadline):this.diff_bisect_(text1,text2,deadline)},diff_match_patch.prototype.diff_lineMode_=function(text1,text2,deadline){var a=this.diff_linesToChars_(text1,text2);text1=a.chars1,text2=a.chars2;var linearray=a.lineArray,diffs=this.diff_main(text1,text2,!1,deadline);this.diff_charsToLines_(diffs,linearray),this.diff_cleanupSemantic(diffs),diffs.push(new diff_match_patch.Diff(0,\"\"));for(var pointer=0,count_delete=0,count_insert=0,text_delete=\"\",text_insert=\"\";pointer<diffs.length;){switch(diffs[pointer][0]){case 1:count_insert++,text_insert+=diffs[pointer][1];break;case-1:count_delete++,text_delete+=diffs[pointer][1];break;case 0:if(count_delete>=1&&count_insert>=1){diffs.splice(pointer-count_delete-count_insert,count_delete+count_insert),pointer=pointer-count_delete-count_insert;for(var subDiff=this.diff_main(text_delete,text_insert,!1,deadline),j=subDiff.length-1;j>=0;j--)diffs.splice(pointer,0,subDiff[j]);pointer+=subDiff.length}count_insert=0,count_delete=0,text_delete=\"\",text_insert=\"\"}pointer++}return diffs.pop(),diffs},diff_match_patch.prototype.diff_bisect_=function(text1,text2,deadline){for(var text1_length=text1.length,text2_length=text2.length,max_d=Math.ceil((text1_length+text2_length)/2),v_offset=max_d,v_length=2*max_d,v1=new Array(v_length),v2=new Array(v_length),x=0;x<v_length;x++)v1[x]=-1,v2[x]=-1;v1[v_offset+1]=0,v2[v_offset+1]=0;for(var delta=text1_length-text2_length,front=delta%2!=0,k1start=0,k1end=0,k2start=0,k2end=0,d=0;d<max_d&&!((new Date).getTime()>deadline);d++){for(var k1=-d+k1start;k1<=d-k1end;k1+=2){for(var k1_offset=v_offset+k1,y1=(x1=k1==-d||k1!=d&&v1[k1_offset-1]<v1[k1_offset+1]?v1[k1_offset+1]:v1[k1_offset-1]+1)-k1;x1<text1_length&&y1<text2_length&&text1.charAt(x1)==text2.charAt(y1);)x1++,y1++;if(v1[k1_offset]=x1,x1>text1_length)k1end+=2;else if(y1>text2_length)k1start+=2;else if(front){if((k2_offset=v_offset+delta-k1)>=0&&k2_offset<v_length&&-1!=v2[k2_offset])if(x1>=(x2=text1_length-v2[k2_offset]))return this.diff_bisectSplit_(text1,text2,x1,y1,deadline)}}for(var k2=-d+k2start;k2<=d-k2end;k2+=2){for(var x2,k2_offset=v_offset+k2,y2=(x2=k2==-d||k2!=d&&v2[k2_offset-1]<v2[k2_offset+1]?v2[k2_offset+1]:v2[k2_offset-1]+1)-k2;x2<text1_length&&y2<text2_length&&text1.charAt(text1_length-x2-1)==text2.charAt(text2_length-y2-1);)x2++,y2++;if(v2[k2_offset]=x2,x2>text1_length)k2end+=2;else if(y2>text2_length)k2start+=2;else if(!front){if((k1_offset=v_offset+delta-k2)>=0&&k1_offset<v_length&&-1!=v1[k1_offset]){var x1;y1=v_offset+(x1=v1[k1_offset])-k1_offset;if(x1>=(x2=text1_length-x2))return this.diff_bisectSplit_(text1,text2,x1,y1,deadline)}}}}return[new diff_match_patch.Diff(-1,text1),new diff_match_patch.Diff(1,text2)]},diff_match_patch.prototype.diff_bisectSplit_=function(text1,text2,x,y,deadline){var text1a=text1.substring(0,x),text2a=text2.substring(0,y),text1b=text1.substring(x),text2b=text2.substring(y),diffs=this.diff_main(text1a,text2a,!1,deadline),diffsb=this.diff_main(text1b,text2b,!1,deadline);return diffs.concat(diffsb)},diff_match_patch.prototype.diff_linesToChars_=function(text1,text2){var lineArray=[],lineHash={};function diff_linesToCharsMunge_(text){for(var chars=\"\",lineStart=0,lineEnd=-1,lineArrayLength=lineArray.length;lineEnd<text.length-1;){-1==(lineEnd=text.indexOf(\"\\n\",lineStart))&&(lineEnd=text.length-1);var line=text.substring(lineStart,lineEnd+1);(lineHash.hasOwnProperty?lineHash.hasOwnProperty(line):void 0!==lineHash[line])?chars+=String.fromCharCode(lineHash[line]):(lineArrayLength==maxLines&&(line=text.substring(lineStart),lineEnd=text.length),chars+=String.fromCharCode(lineArrayLength),lineHash[line]=lineArrayLength,lineArray[lineArrayLength++]=line),lineStart=lineEnd+1}return chars}lineArray[0]=\"\";var maxLines=4e4,chars1=diff_linesToCharsMunge_(text1);return maxLines=65535,{chars1:chars1,chars2:diff_linesToCharsMunge_(text2),lineArray:lineArray}},diff_match_patch.prototype.diff_charsToLines_=function(diffs,lineArray){for(var i=0;i<diffs.length;i++){for(var chars=diffs[i][1],text=[],j=0;j<chars.length;j++)text[j]=lineArray[chars.charCodeAt(j)];diffs[i][1]=text.join(\"\")}},diff_match_patch.prototype.diff_commonPrefix=function(text1,text2){if(!text1||!text2||text1.charAt(0)!=text2.charAt(0))return 0;for(var pointermin=0,pointermax=Math.min(text1.length,text2.length),pointermid=pointermax,pointerstart=0;pointermin<pointermid;)text1.substring(pointerstart,pointermid)==text2.substring(pointerstart,pointermid)?pointerstart=pointermin=pointermid:pointermax=pointermid,pointermid=Math.floor((pointermax-pointermin)/2+pointermin);return pointermid},diff_match_patch.prototype.diff_commonSuffix=function(text1,text2){if(!text1||!text2||text1.charAt(text1.length-1)!=text2.charAt(text2.length-1))return 0;for(var pointermin=0,pointermax=Math.min(text1.length,text2.length),pointermid=pointermax,pointerend=0;pointermin<pointermid;)text1.substring(text1.length-pointermid,text1.length-pointerend)==text2.substring(text2.length-pointermid,text2.length-pointerend)?pointerend=pointermin=pointermid:pointermax=pointermid,pointermid=Math.floor((pointermax-pointermin)/2+pointermin);return pointermid},diff_match_patch.prototype.diff_commonOverlap_=function(text1,text2){var text1_length=text1.length,text2_length=text2.length;if(0==text1_length||0==text2_length)return 0;text1_length>text2_length?text1=text1.substring(text1_length-text2_length):text1_length<text2_length&&(text2=text2.substring(0,text1_length));var text_length=Math.min(text1_length,text2_length);if(text1==text2)return text_length;for(var best=0,length=1;;){var pattern=text1.substring(text_length-length),found=text2.indexOf(pattern);if(-1==found)return best;length+=found,0!=found&&text1.substring(text_length-length)!=text2.substring(0,length)||(best=length,length++)}},diff_match_patch.prototype.diff_halfMatch_=function(text1,text2){if(this.Diff_Timeout<=0)return null;var longtext=text1.length>text2.length?text1:text2,shorttext=text1.length>text2.length?text2:text1;if(longtext.length<4||2*shorttext.length<longtext.length)return null;var dmp=this;function diff_halfMatchI_(longtext,shorttext,i){for(var best_longtext_a,best_longtext_b,best_shorttext_a,best_shorttext_b,seed=longtext.substring(i,i+Math.floor(longtext.length/4)),j=-1,best_common=\"\";-1!=(j=shorttext.indexOf(seed,j+1));){var prefixLength=dmp.diff_commonPrefix(longtext.substring(i),shorttext.substring(j)),suffixLength=dmp.diff_commonSuffix(longtext.substring(0,i),shorttext.substring(0,j));best_common.length<suffixLength+prefixLength&&(best_common=shorttext.substring(j-suffixLength,j)+shorttext.substring(j,j+prefixLength),best_longtext_a=longtext.substring(0,i-suffixLength),best_longtext_b=longtext.substring(i+prefixLength),best_shorttext_a=shorttext.substring(0,j-suffixLength),best_shorttext_b=shorttext.substring(j+prefixLength))}return 2*best_common.length>=longtext.length?[best_longtext_a,best_longtext_b,best_shorttext_a,best_shorttext_b,best_common]:null}var hm,text1_a,text1_b,text2_a,text2_b,hm1=diff_halfMatchI_(longtext,shorttext,Math.ceil(longtext.length/4)),hm2=diff_halfMatchI_(longtext,shorttext,Math.ceil(longtext.length/2));return hm1||hm2?(hm=hm2?hm1&&hm1[4].length>hm2[4].length?hm1:hm2:hm1,text1.length>text2.length?(text1_a=hm[0],text1_b=hm[1],text2_a=hm[2],text2_b=hm[3]):(text2_a=hm[0],text2_b=hm[1],text1_a=hm[2],text1_b=hm[3]),[text1_a,text1_b,text2_a,text2_b,hm[4]]):null},diff_match_patch.prototype.diff_cleanupSemantic=function(diffs){for(var changes=!1,equalities=[],equalitiesLength=0,lastEquality=null,pointer=0,length_insertions1=0,length_deletions1=0,length_insertions2=0,length_deletions2=0;pointer<diffs.length;)0==diffs[pointer][0]?(equalities[equalitiesLength++]=pointer,length_insertions1=length_insertions2,length_deletions1=length_deletions2,length_insertions2=0,length_deletions2=0,lastEquality=diffs[pointer][1]):(1==diffs[pointer][0]?length_insertions2+=diffs[pointer][1].length:length_deletions2+=diffs[pointer][1].length,lastEquality&&lastEquality.length<=Math.max(length_insertions1,length_deletions1)&&lastEquality.length<=Math.max(length_insertions2,length_deletions2)&&(diffs.splice(equalities[equalitiesLength-1],0,new diff_match_patch.Diff(-1,lastEquality)),diffs[equalities[equalitiesLength-1]+1][0]=1,equalitiesLength--,pointer=--equalitiesLength>0?equalities[equalitiesLength-1]:-1,length_insertions1=0,length_deletions1=0,length_insertions2=0,length_deletions2=0,lastEquality=null,changes=!0)),pointer++;for(changes&&this.diff_cleanupMerge(diffs),this.diff_cleanupSemanticLossless(diffs),pointer=1;pointer<diffs.length;){if(-1==diffs[pointer-1][0]&&1==diffs[pointer][0]){var deletion=diffs[pointer-1][1],insertion=diffs[pointer][1],overlap_length1=this.diff_commonOverlap_(deletion,insertion),overlap_length2=this.diff_commonOverlap_(insertion,deletion);overlap_length1>=overlap_length2?(overlap_length1>=deletion.length/2||overlap_length1>=insertion.length/2)&&(diffs.splice(pointer,0,new diff_match_patch.Diff(0,insertion.substring(0,overlap_length1))),diffs[pointer-1][1]=deletion.substring(0,deletion.length-overlap_length1),diffs[pointer+1][1]=insertion.substring(overlap_length1),pointer++):(overlap_length2>=deletion.length/2||overlap_length2>=insertion.length/2)&&(diffs.splice(pointer,0,new diff_match_patch.Diff(0,deletion.substring(0,overlap_length2))),diffs[pointer-1][0]=1,diffs[pointer-1][1]=insertion.substring(0,insertion.length-overlap_length2),diffs[pointer+1][0]=-1,diffs[pointer+1][1]=deletion.substring(overlap_length2),pointer++),pointer++}pointer++}},diff_match_patch.prototype.diff_cleanupSemanticLossless=function(diffs){function diff_cleanupSemanticScore_(one,two){if(!one||!two)return 6;var char1=one.charAt(one.length-1),char2=two.charAt(0),nonAlphaNumeric1=char1.match(diff_match_patch.nonAlphaNumericRegex_),nonAlphaNumeric2=char2.match(diff_match_patch.nonAlphaNumericRegex_),whitespace1=nonAlphaNumeric1&&char1.match(diff_match_patch.whitespaceRegex_),whitespace2=nonAlphaNumeric2&&char2.match(diff_match_patch.whitespaceRegex_),lineBreak1=whitespace1&&char1.match(diff_match_patch.linebreakRegex_),lineBreak2=whitespace2&&char2.match(diff_match_patch.linebreakRegex_),blankLine1=lineBreak1&&one.match(diff_match_patch.blanklineEndRegex_),blankLine2=lineBreak2&&two.match(diff_match_patch.blanklineStartRegex_);return blankLine1||blankLine2?5:lineBreak1||lineBreak2?4:nonAlphaNumeric1&&!whitespace1&&whitespace2?3:whitespace1||whitespace2?2:nonAlphaNumeric1||nonAlphaNumeric2?1:0}for(var pointer=1;pointer<diffs.length-1;){if(0==diffs[pointer-1][0]&&0==diffs[pointer+1][0]){var equality1=diffs[pointer-1][1],edit=diffs[pointer][1],equality2=diffs[pointer+1][1],commonOffset=this.diff_commonSuffix(equality1,edit);if(commonOffset){var commonString=edit.substring(edit.length-commonOffset);equality1=equality1.substring(0,equality1.length-commonOffset),edit=commonString+edit.substring(0,edit.length-commonOffset),equality2=commonString+equality2}for(var bestEquality1=equality1,bestEdit=edit,bestEquality2=equality2,bestScore=diff_cleanupSemanticScore_(equality1,edit)+diff_cleanupSemanticScore_(edit,equality2);edit.charAt(0)===equality2.charAt(0);){equality1+=edit.charAt(0),edit=edit.substring(1)+equality2.charAt(0),equality2=equality2.substring(1);var score=diff_cleanupSemanticScore_(equality1,edit)+diff_cleanupSemanticScore_(edit,equality2);score>=bestScore&&(bestScore=score,bestEquality1=equality1,bestEdit=edit,bestEquality2=equality2)}diffs[pointer-1][1]!=bestEquality1&&(bestEquality1?diffs[pointer-1][1]=bestEquality1:(diffs.splice(pointer-1,1),pointer--),diffs[pointer][1]=bestEdit,bestEquality2?diffs[pointer+1][1]=bestEquality2:(diffs.splice(pointer+1,1),pointer--))}pointer++}},diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,diff_match_patch.whitespaceRegex_=/\\s/,diff_match_patch.linebreakRegex_=/[\\r\\n]/,diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/,diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/,diff_match_patch.prototype.diff_cleanupEfficiency=function(diffs){for(var changes=!1,equalities=[],equalitiesLength=0,lastEquality=null,pointer=0,pre_ins=!1,pre_del=!1,post_ins=!1,post_del=!1;pointer<diffs.length;)0==diffs[pointer][0]?(diffs[pointer][1].length<this.Diff_EditCost&&(post_ins||post_del)?(equalities[equalitiesLength++]=pointer,pre_ins=post_ins,pre_del=post_del,lastEquality=diffs[pointer][1]):(equalitiesLength=0,lastEquality=null),post_ins=post_del=!1):(-1==diffs[pointer][0]?post_del=!0:post_ins=!0,lastEquality&&(pre_ins&&pre_del&&post_ins&&post_del||lastEquality.length<this.Diff_EditCost/2&&pre_ins+pre_del+post_ins+post_del==3)&&(diffs.splice(equalities[equalitiesLength-1],0,new diff_match_patch.Diff(-1,lastEquality)),diffs[equalities[equalitiesLength-1]+1][0]=1,equalitiesLength--,lastEquality=null,pre_ins&&pre_del?(post_ins=post_del=!0,equalitiesLength=0):(pointer=--equalitiesLength>0?equalities[equalitiesLength-1]:-1,post_ins=post_del=!1),changes=!0)),pointer++;changes&&this.diff_cleanupMerge(diffs)},diff_match_patch.prototype.diff_cleanupMerge=function(diffs){diffs.push(new diff_match_patch.Diff(0,\"\"));for(var commonlength,pointer=0,count_delete=0,count_insert=0,text_delete=\"\",text_insert=\"\";pointer<diffs.length;)switch(diffs[pointer][0]){case 1:count_insert++,text_insert+=diffs[pointer][1],pointer++;break;case-1:count_delete++,text_delete+=diffs[pointer][1],pointer++;break;case 0:count_delete+count_insert>1?(0!==count_delete&&0!==count_insert&&(0!==(commonlength=this.diff_commonPrefix(text_insert,text_delete))&&(pointer-count_delete-count_insert>0&&0==diffs[pointer-count_delete-count_insert-1][0]?diffs[pointer-count_delete-count_insert-1][1]+=text_insert.substring(0,commonlength):(diffs.splice(0,0,new diff_match_patch.Diff(0,text_insert.substring(0,commonlength))),pointer++),text_insert=text_insert.substring(commonlength),text_delete=text_delete.substring(commonlength)),0!==(commonlength=this.diff_commonSuffix(text_insert,text_delete))&&(diffs[pointer][1]=text_insert.substring(text_insert.length-commonlength)+diffs[pointer][1],text_insert=text_insert.substring(0,text_insert.length-commonlength),text_delete=text_delete.substring(0,text_delete.length-commonlength))),pointer-=count_delete+count_insert,diffs.splice(pointer,count_delete+count_insert),text_delete.length&&(diffs.splice(pointer,0,new diff_match_patch.Diff(-1,text_delete)),pointer++),text_insert.length&&(diffs.splice(pointer,0,new diff_match_patch.Diff(1,text_insert)),pointer++),pointer++):0!==pointer&&0==diffs[pointer-1][0]?(diffs[pointer-1][1]+=diffs[pointer][1],diffs.splice(pointer,1)):pointer++,count_insert=0,count_delete=0,text_delete=\"\",text_insert=\"\"}\"\"===diffs[diffs.length-1][1]&&diffs.pop();var changes=!1;for(pointer=1;pointer<diffs.length-1;)0==diffs[pointer-1][0]&&0==diffs[pointer+1][0]&&(diffs[pointer][1].substring(diffs[pointer][1].length-diffs[pointer-1][1].length)==diffs[pointer-1][1]?(diffs[pointer][1]=diffs[pointer-1][1]+diffs[pointer][1].substring(0,diffs[pointer][1].length-diffs[pointer-1][1].length),diffs[pointer+1][1]=diffs[pointer-1][1]+diffs[pointer+1][1],diffs.splice(pointer-1,1),changes=!0):diffs[pointer][1].substring(0,diffs[pointer+1][1].length)==diffs[pointer+1][1]&&(diffs[pointer-1][1]+=diffs[pointer+1][1],diffs[pointer][1]=diffs[pointer][1].substring(diffs[pointer+1][1].length)+diffs[pointer+1][1],diffs.splice(pointer+1,1),changes=!0)),pointer++;changes&&this.diff_cleanupMerge(diffs)},diff_match_patch.prototype.diff_xIndex=function(diffs,loc){var x,chars1=0,chars2=0,last_chars1=0,last_chars2=0;for(x=0;x<diffs.length&&(1!==diffs[x][0]&&(chars1+=diffs[x][1].length),-1!==diffs[x][0]&&(chars2+=diffs[x][1].length),!(chars1>loc));x++)last_chars1=chars1,last_chars2=chars2;return diffs.length!=x&&-1===diffs[x][0]?last_chars2:last_chars2+(loc-last_chars1)},diff_match_patch.prototype.diff_prettyHtml=function(diffs){for(var html=[],pattern_amp=/&/g,pattern_lt=/</g,pattern_gt=/>/g,pattern_para=/\\n/g,x=0;x<diffs.length;x++){var op=diffs[x][0],text=diffs[x][1].replace(pattern_amp,\"&amp;\").replace(pattern_lt,\"&lt;\").replace(pattern_gt,\"&gt;\").replace(pattern_para,\"&para;<br>\");switch(op){case 1:html[x]='<ins style=\"background:#e6ffe6;\">'+text+\"</ins>\";break;case-1:html[x]='<del style=\"background:#ffe6e6;\">'+text+\"</del>\";break;case 0:html[x]=\"<span>\"+text+\"</span>\"}}return html.join(\"\")},diff_match_patch.prototype.diff_text1=function(diffs){for(var text=[],x=0;x<diffs.length;x++)1!==diffs[x][0]&&(text[x]=diffs[x][1]);return text.join(\"\")},diff_match_patch.prototype.diff_text2=function(diffs){for(var text=[],x=0;x<diffs.length;x++)-1!==diffs[x][0]&&(text[x]=diffs[x][1]);return text.join(\"\")},diff_match_patch.prototype.diff_levenshtein=function(diffs){for(var levenshtein=0,insertions=0,deletions=0,x=0;x<diffs.length;x++){var op=diffs[x][0],data=diffs[x][1];switch(op){case 1:insertions+=data.length;break;case-1:deletions+=data.length;break;case 0:levenshtein+=Math.max(insertions,deletions),insertions=0,deletions=0}}return levenshtein+=Math.max(insertions,deletions)},diff_match_patch.prototype.diff_toDelta=function(diffs){for(var text=[],x=0;x<diffs.length;x++)switch(diffs[x][0]){case 1:text[x]=\"+\"+encodeURI(diffs[x][1]);break;case-1:text[x]=\"-\"+diffs[x][1].length;break;case 0:text[x]=\"=\"+diffs[x][1].length}return text.join(\"\\t\").replace(/%20/g,\" \")},diff_match_patch.prototype.diff_fromDelta=function(text1,delta){for(var diffs=[],diffsLength=0,pointer=0,tokens=delta.split(/\\t/g),x=0;x<tokens.length;x++){var param=tokens[x].substring(1);switch(tokens[x].charAt(0)){case\"+\":try{diffs[diffsLength++]=new diff_match_patch.Diff(1,decodeURI(param))}catch(ex){throw new Error(\"Illegal escape in diff_fromDelta: \"+param)}break;case\"-\":case\"=\":var n=parseInt(param,10);if(isNaN(n)||n<0)throw new Error(\"Invalid number in diff_fromDelta: \"+param);var text=text1.substring(pointer,pointer+=n);\"=\"==tokens[x].charAt(0)?diffs[diffsLength++]=new diff_match_patch.Diff(0,text):diffs[diffsLength++]=new diff_match_patch.Diff(-1,text);break;default:if(tokens[x])throw new Error(\"Invalid diff operation in diff_fromDelta: \"+tokens[x])}}if(pointer!=text1.length)throw new Error(\"Delta length (\"+pointer+\") does not equal source text length (\"+text1.length+\").\");return diffs},diff_match_patch.prototype.match_main=function(text,pattern,loc){if(null==text||null==pattern||null==loc)throw new Error(\"Null input. (match_main)\");return loc=Math.max(0,Math.min(loc,text.length)),text==pattern?0:text.length?text.substring(loc,loc+pattern.length)==pattern?loc:this.match_bitap_(text,pattern,loc):-1},diff_match_patch.prototype.match_bitap_=function(text,pattern,loc){if(pattern.length>this.Match_MaxBits)throw new Error(\"Pattern too long for this browser.\");var s=this.match_alphabet_(pattern),dmp=this;function match_bitapScore_(e,x){var accuracy=e/pattern.length,proximity=Math.abs(loc-x);return dmp.Match_Distance?accuracy+proximity/dmp.Match_Distance:proximity?1:accuracy}var score_threshold=this.Match_Threshold,best_loc=text.indexOf(pattern,loc);-1!=best_loc&&(score_threshold=Math.min(match_bitapScore_(0,best_loc),score_threshold),-1!=(best_loc=text.lastIndexOf(pattern,loc+pattern.length))&&(score_threshold=Math.min(match_bitapScore_(0,best_loc),score_threshold)));var bin_min,bin_mid,matchmask=1<<pattern.length-1;best_loc=-1;for(var last_rd,bin_max=pattern.length+text.length,d=0;d<pattern.length;d++){for(bin_min=0,bin_mid=bin_max;bin_min<bin_mid;)match_bitapScore_(d,loc+bin_mid)<=score_threshold?bin_min=bin_mid:bin_max=bin_mid,bin_mid=Math.floor((bin_max-bin_min)/2+bin_min);bin_max=bin_mid;var start=Math.max(1,loc-bin_mid+1),finish=Math.min(loc+bin_mid,text.length)+pattern.length,rd=Array(finish+2);rd[finish+1]=(1<<d)-1;for(var j=finish;j>=start;j--){var charMatch=s[text.charAt(j-1)];if(rd[j]=0===d?(rd[j+1]<<1|1)&charMatch:(rd[j+1]<<1|1)&charMatch|(last_rd[j+1]|last_rd[j])<<1|1|last_rd[j+1],rd[j]&matchmask){var score=match_bitapScore_(d,j-1);if(score<=score_threshold){if(score_threshold=score,!((best_loc=j-1)>loc))break;start=Math.max(1,2*loc-best_loc)}}}if(match_bitapScore_(d+1,loc)>score_threshold)break;last_rd=rd}return best_loc},diff_match_patch.prototype.match_alphabet_=function(pattern){for(var s={},i=0;i<pattern.length;i++)s[pattern.charAt(i)]=0;for(i=0;i<pattern.length;i++)s[pattern.charAt(i)]|=1<<pattern.length-i-1;return s},diff_match_patch.prototype.patch_addContext_=function(patch,text){if(0!=text.length){if(null===patch.start2)throw Error(\"patch not initialized\");for(var pattern=text.substring(patch.start2,patch.start2+patch.length1),padding=0;text.indexOf(pattern)!=text.lastIndexOf(pattern)&&pattern.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)padding+=this.Patch_Margin,pattern=text.substring(patch.start2-padding,patch.start2+patch.length1+padding);padding+=this.Patch_Margin;var prefix=text.substring(patch.start2-padding,patch.start2);prefix&&patch.diffs.unshift(new diff_match_patch.Diff(0,prefix));var suffix=text.substring(patch.start2+patch.length1,patch.start2+patch.length1+padding);suffix&&patch.diffs.push(new diff_match_patch.Diff(0,suffix)),patch.start1-=prefix.length,patch.start2-=prefix.length,patch.length1+=prefix.length+suffix.length,patch.length2+=prefix.length+suffix.length}},diff_match_patch.prototype.patch_make=function(a,opt_b,opt_c){var text1,diffs;if(\"string\"==typeof a&&\"string\"==typeof opt_b&&void 0===opt_c)text1=a,(diffs=this.diff_main(text1,opt_b,!0)).length>2&&(this.diff_cleanupSemantic(diffs),this.diff_cleanupEfficiency(diffs));else if(a&&\"object\"==typeof a&&void 0===opt_b&&void 0===opt_c)diffs=a,text1=this.diff_text1(diffs);else if(\"string\"==typeof a&&opt_b&&\"object\"==typeof opt_b&&void 0===opt_c)text1=a,diffs=opt_b;else{if(\"string\"!=typeof a||\"string\"!=typeof opt_b||!opt_c||\"object\"!=typeof opt_c)throw new Error(\"Unknown call format to patch_make.\");text1=a,diffs=opt_c}if(0===diffs.length)return[];for(var patches=[],patch=new diff_match_patch.patch_obj,patchDiffLength=0,char_count1=0,char_count2=0,prepatch_text=text1,postpatch_text=text1,x=0;x<diffs.length;x++){var diff_type=diffs[x][0],diff_text=diffs[x][1];switch(patchDiffLength||0===diff_type||(patch.start1=char_count1,patch.start2=char_count2),diff_type){case 1:patch.diffs[patchDiffLength++]=diffs[x],patch.length2+=diff_text.length,postpatch_text=postpatch_text.substring(0,char_count2)+diff_text+postpatch_text.substring(char_count2);break;case-1:patch.length1+=diff_text.length,patch.diffs[patchDiffLength++]=diffs[x],postpatch_text=postpatch_text.substring(0,char_count2)+postpatch_text.substring(char_count2+diff_text.length);break;case 0:diff_text.length<=2*this.Patch_Margin&&patchDiffLength&&diffs.length!=x+1?(patch.diffs[patchDiffLength++]=diffs[x],patch.length1+=diff_text.length,patch.length2+=diff_text.length):diff_text.length>=2*this.Patch_Margin&&patchDiffLength&&(this.patch_addContext_(patch,prepatch_text),patches.push(patch),patch=new diff_match_patch.patch_obj,patchDiffLength=0,prepatch_text=postpatch_text,char_count1=char_count2)}1!==diff_type&&(char_count1+=diff_text.length),-1!==diff_type&&(char_count2+=diff_text.length)}return patchDiffLength&&(this.patch_addContext_(patch,prepatch_text),patches.push(patch)),patches},diff_match_patch.prototype.patch_deepCopy=function(patches){for(var patchesCopy=[],x=0;x<patches.length;x++){var patch=patches[x],patchCopy=new diff_match_patch.patch_obj;patchCopy.diffs=[];for(var y=0;y<patch.diffs.length;y++)patchCopy.diffs[y]=new diff_match_patch.Diff(patch.diffs[y][0],patch.diffs[y][1]);patchCopy.start1=patch.start1,patchCopy.start2=patch.start2,patchCopy.length1=patch.length1,patchCopy.length2=patch.length2,patchesCopy[x]=patchCopy}return patchesCopy},diff_match_patch.prototype.patch_apply=function(patches,text){if(0==patches.length)return[text,[]];patches=this.patch_deepCopy(patches);var nullPadding=this.patch_addPadding(patches);text=nullPadding+text+nullPadding,this.patch_splitMax(patches);for(var delta=0,results=[],x=0;x<patches.length;x++){var start_loc,text2,expected_loc=patches[x].start2+delta,text1=this.diff_text1(patches[x].diffs),end_loc=-1;if(text1.length>this.Match_MaxBits?-1!=(start_loc=this.match_main(text,text1.substring(0,this.Match_MaxBits),expected_loc))&&(-1==(end_loc=this.match_main(text,text1.substring(text1.length-this.Match_MaxBits),expected_loc+text1.length-this.Match_MaxBits))||start_loc>=end_loc)&&(start_loc=-1):start_loc=this.match_main(text,text1,expected_loc),-1==start_loc)results[x]=!1,delta-=patches[x].length2-patches[x].length1;else if(results[x]=!0,delta=start_loc-expected_loc,text1==(text2=-1==end_loc?text.substring(start_loc,start_loc+text1.length):text.substring(start_loc,end_loc+this.Match_MaxBits)))text=text.substring(0,start_loc)+this.diff_text2(patches[x].diffs)+text.substring(start_loc+text1.length);else{var diffs=this.diff_main(text1,text2,!1);if(text1.length>this.Match_MaxBits&&this.diff_levenshtein(diffs)/text1.length>this.Patch_DeleteThreshold)results[x]=!1;else{this.diff_cleanupSemanticLossless(diffs);for(var index2,index1=0,y=0;y<patches[x].diffs.length;y++){var mod=patches[x].diffs[y];0!==mod[0]&&(index2=this.diff_xIndex(diffs,index1)),1===mod[0]?text=text.substring(0,start_loc+index2)+mod[1]+text.substring(start_loc+index2):-1===mod[0]&&(text=text.substring(0,start_loc+index2)+text.substring(start_loc+this.diff_xIndex(diffs,index1+mod[1].length))),-1!==mod[0]&&(index1+=mod[1].length)}}}}return[text=text.substring(nullPadding.length,text.length-nullPadding.length),results]},diff_match_patch.prototype.patch_addPadding=function(patches){for(var paddingLength=this.Patch_Margin,nullPadding=\"\",x=1;x<=paddingLength;x++)nullPadding+=String.fromCharCode(x);for(x=0;x<patches.length;x++)patches[x].start1+=paddingLength,patches[x].start2+=paddingLength;var patch=patches[0],diffs=patch.diffs;if(0==diffs.length||0!=diffs[0][0])diffs.unshift(new diff_match_patch.Diff(0,nullPadding)),patch.start1-=paddingLength,patch.start2-=paddingLength,patch.length1+=paddingLength,patch.length2+=paddingLength;else if(paddingLength>diffs[0][1].length){var extraLength=paddingLength-diffs[0][1].length;diffs[0][1]=nullPadding.substring(diffs[0][1].length)+diffs[0][1],patch.start1-=extraLength,patch.start2-=extraLength,patch.length1+=extraLength,patch.length2+=extraLength}if(0==(diffs=(patch=patches[patches.length-1]).diffs).length||0!=diffs[diffs.length-1][0])diffs.push(new diff_match_patch.Diff(0,nullPadding)),patch.length1+=paddingLength,patch.length2+=paddingLength;else if(paddingLength>diffs[diffs.length-1][1].length){extraLength=paddingLength-diffs[diffs.length-1][1].length;diffs[diffs.length-1][1]+=nullPadding.substring(0,extraLength),patch.length1+=extraLength,patch.length2+=extraLength}return nullPadding},diff_match_patch.prototype.patch_splitMax=function(patches){for(var patch_size=this.Match_MaxBits,x=0;x<patches.length;x++)if(!(patches[x].length1<=patch_size)){var bigpatch=patches[x];patches.splice(x--,1);for(var start1=bigpatch.start1,start2=bigpatch.start2,precontext=\"\";0!==bigpatch.diffs.length;){var patch=new diff_match_patch.patch_obj,empty=!0;for(patch.start1=start1-precontext.length,patch.start2=start2-precontext.length,\"\"!==precontext&&(patch.length1=patch.length2=precontext.length,patch.diffs.push(new diff_match_patch.Diff(0,precontext)));0!==bigpatch.diffs.length&&patch.length1<patch_size-this.Patch_Margin;){var diff_type=bigpatch.diffs[0][0],diff_text=bigpatch.diffs[0][1];1===diff_type?(patch.length2+=diff_text.length,start2+=diff_text.length,patch.diffs.push(bigpatch.diffs.shift()),empty=!1):-1===diff_type&&1==patch.diffs.length&&0==patch.diffs[0][0]&&diff_text.length>2*patch_size?(patch.length1+=diff_text.length,start1+=diff_text.length,empty=!1,patch.diffs.push(new diff_match_patch.Diff(diff_type,diff_text)),bigpatch.diffs.shift()):(diff_text=diff_text.substring(0,patch_size-patch.length1-this.Patch_Margin),patch.length1+=diff_text.length,start1+=diff_text.length,0===diff_type?(patch.length2+=diff_text.length,start2+=diff_text.length):empty=!1,patch.diffs.push(new diff_match_patch.Diff(diff_type,diff_text)),diff_text==bigpatch.diffs[0][1]?bigpatch.diffs.shift():bigpatch.diffs[0][1]=bigpatch.diffs[0][1].substring(diff_text.length))}precontext=(precontext=this.diff_text2(patch.diffs)).substring(precontext.length-this.Patch_Margin);var postcontext=this.diff_text1(bigpatch.diffs).substring(0,this.Patch_Margin);\"\"!==postcontext&&(patch.length1+=postcontext.length,patch.length2+=postcontext.length,0!==patch.diffs.length&&0===patch.diffs[patch.diffs.length-1][0]?patch.diffs[patch.diffs.length-1][1]+=postcontext:patch.diffs.push(new diff_match_patch.Diff(0,postcontext))),empty||patches.splice(++x,0,patch)}}},diff_match_patch.prototype.patch_toText=function(patches){for(var text=[],x=0;x<patches.length;x++)text[x]=patches[x];return text.join(\"\")},diff_match_patch.prototype.patch_fromText=function(textline){var patches=[];if(!textline)return patches;for(var text=textline.split(\"\\n\"),textPointer=0,patchHeader=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;textPointer<text.length;){var m=text[textPointer].match(patchHeader);if(!m)throw new Error(\"Invalid patch string: \"+text[textPointer]);var patch=new diff_match_patch.patch_obj;for(patches.push(patch),patch.start1=parseInt(m[1],10),\"\"===m[2]?(patch.start1--,patch.length1=1):\"0\"==m[2]?patch.length1=0:(patch.start1--,patch.length1=parseInt(m[2],10)),patch.start2=parseInt(m[3],10),\"\"===m[4]?(patch.start2--,patch.length2=1):\"0\"==m[4]?patch.length2=0:(patch.start2--,patch.length2=parseInt(m[4],10)),textPointer++;textPointer<text.length;){var sign=text[textPointer].charAt(0);try{var line=decodeURI(text[textPointer].substring(1))}catch(ex){throw new Error(\"Illegal escape in patch_fromText: \"+line)}if(\"-\"==sign)patch.diffs.push(new diff_match_patch.Diff(-1,line));else if(\"+\"==sign)patch.diffs.push(new diff_match_patch.Diff(1,line));else if(\" \"==sign)patch.diffs.push(new diff_match_patch.Diff(0,line));else{if(\"@\"==sign)break;if(\"\"!==sign)throw new Error('Invalid patch mode \"'+sign+'\" in: '+line)}textPointer++}}return patches},(diff_match_patch.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0}).prototype.toString=function(){for(var op,text=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],x=0;x<this.diffs.length;x++){switch(this.diffs[x][0]){case 1:op=\"+\";break;case-1:op=\"-\";break;case 0:op=\" \"}text[x+1]=op+encodeURI(this.diffs[x][1])+\"\\n\"}return text.join(\"\").replace(/%20/g,\" \")},module.exports=diff_match_patch,module.exports.diff_match_patch=diff_match_patch,module.exports.DIFF_DELETE=-1,module.exports.DIFF_INSERT=1,module.exports.DIFF_EQUAL=0})),DIFF_EQUAL=diffMatchPatch.DIFF_EQUAL,DIFF_DELETE=diffMatchPatch.DIFF_DELETE,DIFF_INSERT=diffMatchPatch.DIFF_INSERT;function findChangeBlocks(changes){var start=findIndex_1(changes,(function(change){return!isNormal(change)}));if(-1===start)return[];var end=findIndex_1(changes,(function(change){return!!isNormal(change)}),start);return-1===end?[changes.slice(start)]:[changes.slice(start,end)].concat(_toConsumableArray(findChangeBlocks(changes.slice(end))))}function splitDiffToLines(diffs){return diffs.reduce((function(lines,_ref3){var _ref4=_slicedToArray(_ref3,2),type=_ref4[0],_currentLines$map2=_toArray(_ref4[1].split(\"\\n\").map((function(line){return[type,line]}))),currentLineRemaining=_currentLines$map2[0],nextLines=_currentLines$map2.slice(1);return[].concat(_toConsumableArray(lines.slice(0,-1)),[[].concat(_toConsumableArray(lines[lines.length-1]),[currentLineRemaining])],_toConsumableArray(nextLines.map((function(line){return[line]}))))}),[[]])}function diffsToEdits(diffs,lineNumber){return diffs.reduce((function(output,diff){var _output=_slicedToArray(output,2),edits=_output[0],start=_output[1],_diff2=_slicedToArray(diff,2),type=_diff2[0],value=_diff2[1];if(type!==DIFF_EQUAL){var edit={type:\"edit\",lineNumber:lineNumber,start:start,length:value.length};edits.push(edit)}return[edits,start+value.length]}),[[],0])[0]}function convertToLinesOfEdits(linesOfDiffs,startLineNumber){return flatMap_1(linesOfDiffs,(function(diffs,i){return diffsToEdits(diffs,startLineNumber+i)}))}function diffText(x,y){var dmp=new diffMatchPatch,diffs=dmp.diff_main(x,y);return dmp.diff_cleanupSemantic(diffs),diffs.length<=1?[[],[]]:function(diffs){return diffs.reduce((function(_ref,diff){var _ref2=_slicedToArray(_ref,2),oldDiffs=_ref2[0],newDiffs=_ref2[1];switch(_slicedToArray(diff,1)[0]){case DIFF_INSERT:newDiffs.push(diff);break;case DIFF_DELETE:oldDiffs.push(diff);break;default:oldDiffs.push(diff),newDiffs.push(diff)}return[oldDiffs,newDiffs]}),[[],[]])}(diffs)}function diffChangeBlock(changes){var _changes$reduce=changes.reduce((function(_ref5,change){var _ref6=_slicedToArray(_ref5,2),oldSource=_ref6[0],newSource=_ref6[1];return isDelete(change)?[oldSource+(oldSource?\"\\n\":\"\")+change.content,newSource]:[oldSource,newSource+(newSource?\"\\n\":\"\")+change.content]}),[\"\",\"\"]),_changes$reduce2=_slicedToArray(_changes$reduce,2),_diffText2=_slicedToArray(diffText(_changes$reduce2[0],_changes$reduce2[1]),2),oldDiffs=_diffText2[0],newDiffs=_diffText2[1];if(0===oldDiffs.length&&0===newDiffs.length)return[[],[]];var getLineNumber=function(change){if(change&&!isNormal(change))return change.lineNumber},oldStartLineNumber=getLineNumber(changes.find(isDelete)),newStartLineNumber=getLineNumber(changes.find(isInsert));if(void 0===oldStartLineNumber||void 0===newStartLineNumber)throw new Error(\"Could not find start line number for edit\");return[convertToLinesOfEdits(splitDiffToLines(oldDiffs),oldStartLineNumber),convertToLinesOfEdits(splitDiffToLines(newDiffs),newStartLineNumber)]}function diffByLine(changes){var _changes$reduce3=changes.reduce((function(_ref7,currentChange){var _ref8=_slicedToArray(_ref7,3),oldEdits=_ref8[0],newEdits=_ref8[1],previousChange=_ref8[2];if(!previousChange||!isDelete(previousChange)||!isInsert(currentChange))return[oldEdits,newEdits,currentChange];var _diffText4=_slicedToArray(diffText(previousChange.content,currentChange.content),2),oldDiffs=_diffText4[0],newDiffs=_diffText4[1];return[oldEdits.concat(diffsToEdits(oldDiffs,previousChange.lineNumber)),newEdits.concat(diffsToEdits(newDiffs,currentChange.lineNumber)),currentChange]}),[[],[],null]),_changes$reduce4=_slicedToArray(_changes$reduce3,2);return[_changes$reduce4[0],_changes$reduce4[1]]}function markEdits(hunks){var _ref9$type=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,findEdits=\"block\"===(void 0===_ref9$type?\"block\":_ref9$type)?diffChangeBlock:diffByLine,_changeBlocks$map$red=flatMap_1(hunks.map((function(hunk){return hunk.changes})),findChangeBlocks).map(findEdits).reduce((function(_ref10,_ref11){var _ref12=_slicedToArray(_ref10,2),oldEdits=_ref12[0],newEdits=_ref12[1],_ref13=_slicedToArray(_ref11,2),currentOld=_ref13[0],currentNew=_ref13[1];return[oldEdits.concat(currentOld),newEdits.concat(currentNew)]}),[[],[]]),_changeBlocks$map$red2=_slicedToArray(_changeBlocks$map$red,2),oldEdits=_changeBlocks$map$red2[0],newEdits=_changeBlocks$map$red2[1];return pickRanges(flatten_1(oldEdits),flatten_1(newEdits))}function markWord(word,name){var mark=function(word,name,replacement){return function(paths){return flatMap_1(paths,(function(path){var leaf=leafOf(path);return leaf.value.includes(word)?leaf.value.split(word).reduce((function(output,text,i){return 0!==i&&output.push(replace(path,{type:\"mark\",markType:name,value:replacement})),text&&output.push(replace(path,_objectSpread2(_objectSpread2({},leaf),{},{value:text}))),output}),[]):[path]}))}}(word,name,arguments.length>2&&void 0!==arguments[2]?arguments[2]:word);return function(_ref){var _ref2=_slicedToArray(_ref,2),oldLinesOfPaths=_ref2[0],newLinesOfPaths=_ref2[1];return[oldLinesOfPaths.map(mark),newLinesOfPaths.map(mark)]}}var _excluded$2=[\"enhancers\"],tokenize=function(hunks){var pair,_ref=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},_ref$enhancers=_ref.enhancers,enhancers=void 0===_ref$enhancers?[]:_ref$enhancers,_toTokenTrees2=_slicedToArray(toTokenTrees(hunks,_objectWithoutProperties(_ref,_excluded$2)),2),oldTokenTree=_toTokenTrees2[0],newTokenTree=_toTokenTrees2[1],_ref2=[normalizeToLines(oldTokenTree),normalizeToLines(newTokenTree)],_enhance=(pair=[_ref2[0],_ref2[1]],enhancers.reduce((function(input,enhance){return enhance(input)}),pair)),_enhance2=_slicedToArray(_enhance,2),oldEnhanced=_enhance2[0],newEnhanced=_enhance2[1],_ref3=[oldEnhanced.map(backToTree),newEnhanced.map(backToTree)],newTrees=_ref3[1];return{old:_ref3[0].map((function(root){var _root$children;return null!==(_root$children=root.children)&&void 0!==_root$children?_root$children:[]})),new:newTrees.map((function(root){var _root$children2;return null!==(_root$children2=root.children)&&void 0!==_root$children2?_root$children2:[]}))}};function useMinCollapsedLines(minLinesExclusive,hunks,oldSource){return useMemo((function(){if(!oldSource)return hunks;return expandCollapsedBlockBy(hunks,oldSource,(function(lines){return lines<minLinesExclusive}))}),[minLinesExclusive,hunks,oldSource])}function updateCollection(collection,command){switch(command.type){case\"push\":return[].concat(_toConsumableArray(collection),[command.value]);case\"clear\":return collection.length?[]:collection;case\"toggle\":return collection.includes(command.value)?collection.filter((function(item){return item!==command.value})):collection.concat(command.value);case\"only\":return[command.value];default:return collection}}function useCollection(){var _useReducer2=_slicedToArray(useReducer(updateCollection,[]),2),collection=_useReducer2[0],dispatch=_useReducer2[1];return{collection:collection,clear:function(){dispatch({type:\"clear\"})},push:function(value){dispatch({value:value,type:\"push\"})},toggle:function(value){dispatch({value:value,type:\"toggle\"})},only:function(value){dispatch({value:value,type:\"only\"})}}}function useChangeSelect(hunks){var _ref$multiple=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).multiple,multiple=void 0!==_ref$multiple&&_ref$multiple,_useCollection=useCollection(),collection=_useCollection.collection,clear=_useCollection.clear,toggle=_useCollection.toggle,only=_useCollection.only;return useEffect(clear,[hunks]),[collection,function(_ref2){var change=_ref2.change;if(change){var changeKey=getChangeKey(change);multiple?toggle(changeKey):only(changeKey)}}]}function useSourceExpansion(hunks,oldSource){var _useCollection=useCollection(),expandedRanges=_useCollection.collection,clear=_useCollection.clear,push=_useCollection.push;useEffect(clear,[hunks,oldSource]);var linesOfOldSource=useMemo((function(){return Array.isArray(oldSource)?oldSource:(oldSource||\"\").split(\"\\n\")}),[oldSource]);return[useMemo((function(){return linesOfOldSource.length?expandedRanges.reduce((function(hunks,_ref){var _ref2=_slicedToArray(_ref,2),start=_ref2[0],end=_ref2[1];return expandFromRawCode(hunks,linesOfOldSource,start,end)}),hunks):hunks}),[linesOfOldSource,hunks,expandedRanges]),function(start,end){return push([start,end])}]}function shallowEqualObjects(objA,objB){if(objA===objB)return!0;if(!objA||!objB)return!1;const aKeys=Object.keys(objA),bKeys=Object.keys(objB),len=aKeys.length;if(bKeys.length!==len)return!1;for(let i=0;i<len;i++){const key=aKeys[i];if(objA[key]!==objB[key]||!Object.prototype.hasOwnProperty.call(objB,key))return!1}return!0}var current,_excluded$1=[\"hunks\"],_excluded2=[\"hunks\"],uid=(current=0,function(){return current+=1});function findAbnormalChanges(hunks){return flatMap_1(hunks,(function(hunk){return hunk.changes.filter((function(change){return!isNormal(change)}))}))}function defaultShouldTokenize(current,prev){if(!prev)return!0;var yHunks,currentHunks=current.hunks,currentPayload=_objectWithoutProperties(current,_excluded$1),prevHunks=prev.hunks,prevPayload=_objectWithoutProperties(prev,_excluded2);return currentPayload.oldSource!==prevPayload.oldSource||(currentPayload.oldSource?!shallowEqualObjects(currentPayload,prevPayload)||(yHunks=prevHunks,!function(arrA,arrB){if(arrA===arrB)return!0;if(!arrA||!arrB)return!1;const len=arrA.length;if(arrB.length!==len)return!1;for(let i=0;i<len;i++)if(arrA[i]!==arrB[i])return!1;return!0}(findAbnormalChanges(currentHunks),findAbnormalChanges(yHunks))):currentHunks!==prevHunks||!shallowEqualObjects(currentPayload,prevPayload))}function useTokenizeWorker(worker,payload){var value,equals,cache,identifier,_options$shouldTokeni=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).shouldTokenize,shouldTokenize=void 0===_options$shouldTokeni?defaultShouldTokenize:_options$shouldTokeni,payloadIdentifier=(value=payload,equals=function(current,previous){return!shouldTokenize(current,previous)},cache=useRef(void 0),identifier=useRef(0),equals(value,cache.current)||(cache.current=value,identifier.current=identifier.current+1),identifier.current),_useState2=_slicedToArray(useState({tokens:null,tokenizationFailReason:null}),2),tokenizeResult=_useState2[0],setTokenizeResult=_useState2[1],job=useRef(null);return useEffect((function(){var receiveTokens=function(_ref){var _ref$data=_ref.data,payload=_ref$data.payload;_ref$data.id===job.current&&(payload.success?setTokenizeResult({tokens:payload.tokens,tokenizationFailReason:null}):setTokenizeResult({tokens:null,tokenizationFailReason:payload.reason}))};return worker.addEventListener(\"message\",receiveTokens),function(){return worker.removeEventListener(\"message\",receiveTokens)}}),[worker]),useEffect((function(){job.current=uid();var data={payload:payload,id:job.current,type:\"tokenize\"};worker.postMessage(data)}),[payloadIdentifier,worker,shouldTokenize]),tokenizeResult}function wrapDisplayName(BaseComponent,hocName){return\"\".concat(hocName,\"(\").concat(\"string\"==typeof(Component=BaseComponent)||null==Component?Component:Component.displayName||Component.name||\"Component\",\")\");var Component}function withSourceExpansion(){return function(ComponentIn){function ComponentOut(props){var _useSourceExpansion2=_slicedToArray(useSourceExpansion(props.hunks,props.oldSource),2),renderingHunks=_useSourceExpansion2[0],expandRange=_useSourceExpansion2[1];return jsx(ComponentIn,_objectSpread2(_objectSpread2({},props),{},{hunks:renderingHunks,onExpandRange:expandRange}))}return ComponentOut.displayName=wrapDisplayName(ComponentIn,\"withSourceExpansion\"),ComponentOut}}function minCollapsedLines(minLinesExclusive){return function(ComponentIn){function ComponentOut(props){var renderingHunks=useMinCollapsedLines(minLinesExclusive,props.hunks,props.oldSource);return jsx(ComponentIn,_objectSpread2(_objectSpread2({},props),{},{hunks:renderingHunks}))}return ComponentOut.displayName=wrapDisplayName(ComponentIn,\"minCollapsedLines\"),ComponentOut}}function withChangeSelect(options){return function(ComponentIn){function ComponentOut(props){var _useChangeSelect2=_slicedToArray(useChangeSelect(props.hunks,options),2),selectedChanges=_useChangeSelect2[0],toggleChangeSelection=_useChangeSelect2[1];return jsx(ComponentIn,_objectSpread2(_objectSpread2({},props),{},{selectedChanges:selectedChanges,onToggleChangeSelection:toggleChangeSelection}))}return ComponentOut.displayName=wrapDisplayName(ComponentIn,\"withChangeSelect\"),ComponentOut}}var _excluded=[\"mapPayload\"];function defaultMapPayload(data){return data}function withTokenizeWorkerwithTokenizeWorker(worker){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},_options$mapPayload=options.mapPayload,mapPayload=void 0===_options$mapPayload?defaultMapPayload:_options$mapPayload,hookOptions=_objectWithoutProperties(options,_excluded);return function(ComponentIn){function ComponentOut(props){var payload=function(props){var hunks=props.hunks,oldSource=props.oldSource,language=props.language;return mapPayload({language:language,oldSource:oldSource,hunks:hunks},props)}(props),tokenizationResult=useTokenizeWorker(worker,payload,hookOptions);return jsx(ComponentIn,_objectSpread2(_objectSpread2({},props),tokenizationResult))}return ComponentOut.displayName=wrapDisplayName(ComponentIn,\"withTokenizeWorker\"),ComponentOut}}export{Decoration,index as Diff,Hunk,computeNewLineNumber,computeOldLineNumber,expandCollapsedBlockBy,expandFromRawCode,findChangeByNewLineNumber,findChangeByOldLineNumber,getChangeKey,getCollapsedLinesCountBetween,getCorrespondingNewLineNumber,getCorrespondingOldLineNumber,insertHunk,isDelete,isInsert,isNormal,markEdits,markWord,minCollapsedLines,parseDiff,pickRanges,textLinesToHunk,tokenize,useChangeSelect,useMinCollapsedLines,useSourceExpansion,useTokenizeWorker,withChangeSelect,withSourceExpansion,withTokenizeWorkerwithTokenizeWorker as withTokenizeWorker};\n//# sourceMappingURL=index.js.map\n","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar _sql = _interopRequireDefault(require(\"highlight.js/lib/languages/sql\"));\nvar _default = exports[\"default\"] = _sql[\"default\"];","import { useContext, useEffect, useState } from 'react';\nimport * as React from 'react';\nimport { diffLines, formatLines } from 'unidiff';\nimport { parseDiff, Diff, Hunk } from 'react-diff-view';\n\nimport { useParams } from 'react-router-dom';\nimport DJClientContext from '../../providers/djclient';\nimport NamespaceHeader from '../../components/NamespaceHeader';\nimport { labelize } from '../../../utils/form';\nimport DiffIcon from '../../icons/DiffIcon';\nimport { Light as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport foundation from 'react-syntax-highlighter/dist/esm/styles/hljs/foundation';\nimport sql from 'react-syntax-highlighter/dist/cjs/languages/hljs/sql';\n\nSyntaxHighlighter.registerLanguage('sql', sql);\nfoundation.hljs['padding'] = '2rem';\n\nexport default function RevisionDiff() {\n  const djClient = useContext(DJClientContext).DataJunctionAPI;\n  const [revisions, setRevisions] = useState([]);\n\n  const { name, revision } = useParams();\n\n  useEffect(() => {\n    const fetchData = async () => {\n      const revisions = await djClient.revisions(name);\n      setRevisions(revisions);\n    };\n    fetchData().catch(console.error);\n  }, [djClient, name]);\n\n  const thisRevision = revisions\n    .map((rev, idx) => [idx, rev])\n    .filter((rev, idx) => {\n      return rev[1].version === revision;\n    });\n  const prevRevision = revisions.filter(\n    (rev, idx) => idx + 1 === thisRevision[0][0],\n  );\n\n  const EMPTY_HUNKS = [];\n\n  const revisionDiff = (older, newer) => {\n    const diffObj = {};\n    const fields = [\n      'display_name',\n      'version',\n      'query',\n      'mode',\n      'status',\n      'description',\n      'columns',\n      // 'catalog',\n      'schema',\n      'table',\n      'updated_at',\n    ];\n    if (older) {\n      for (const key of fields) {\n        if (older[key] && (key !== 'columns' || older.type === 'cube')) {\n          diffObj[key] = {};\n          diffObj[key].diffText = formatLines(\n            diffLines(\n              older\n                ? key === 'columns'\n                  ? older[key].map(col => col.name).join('\\n')\n                  : older[key].toString()\n                : '',\n              newer\n                ? key === 'columns'\n                  ? newer[key].map(col => col.name).join('\\n')\n                  : newer[key].toString()\n                : '',\n            ),\n            {\n              context: 5000,\n            },\n          );\n          const [diff] = parseDiff(diffObj[key].diffText, {\n            nearbySequences: 'zip',\n          });\n          diffObj[key].diff = diff;\n        }\n      }\n    }\n    return diffObj;\n  };\n\n  const diffObjects = revisionDiff(\n    prevRevision[0],\n    thisRevision[0] ? thisRevision[0][1] : thisRevision[0],\n  );\n\n  return (\n    <div className=\"node__header\">\n      <NamespaceHeader\n        namespace={(prevRevision[0] ? prevRevision[0].name : '')\n          .split('.')\n          .slice(0, -1)\n          .join('.')}\n      />\n      <div className=\"card\">\n        <div className=\"card-header\">\n          <h3\n            className=\"card-title align-items-start flex-column\"\n            style={{ display: 'inline-block' }}\n          >\n            <span\n              className=\"card-label fw-bold text-gray-800\"\n              role=\"dialog\"\n              aria-hidden=\"false\"\n              aria-label=\"DisplayName\"\n            >\n              <a\n                href={'/nodes/' + prevRevision[0]?.name}\n                className=\"\"\n                role=\"dialog\"\n                aria-hidden=\"false\"\n                aria-label=\"NodeName\"\n              >\n                {prevRevision[0]?.name}\n              </a>{' '}\n              <span\n                className={\n                  'node_type__' + prevRevision[0]?.type + ' badge node_type'\n                }\n                role=\"dialog\"\n                aria-hidden=\"false\"\n                aria-label=\"NodeType\"\n              >\n                {prevRevision[0]?.type}\n              </span>\n            </span>\n          </h3>\n          <div>\n            <span\n              className=\"rounded-pill badge version\"\n              style={{ marginLeft: '0.5rem', fontSize: '16px' }}\n            >\n              {prevRevision[0]?.version}\n            </span>\n            <DiffIcon />\n            <span\n              className=\"rounded-pill badge version\"\n              style={{ marginLeft: '0.3rem', fontSize: '16px' }}\n            >\n              {thisRevision[0] ? thisRevision[0][1].version : ''}\n            </span>{' '}\n          </div>\n          {Object.keys(diffObjects).map(field => {\n            return (\n              <div className=\"diff\" aria-label={'DiffView'} role={'gridcell'}>\n                <h4>\n                  {labelize(field)}{' '}\n                  <small className=\"no-change-banner\">\n                    {diffObjects[field]?.diff.hunks.length > 0\n                      ? ''\n                      : 'no change'}\n                  </small>\n                </h4>\n                {diffObjects[field]?.diff.hunks.length > 0 ? (\n                  <Diff\n                    viewType=\"split\"\n                    diffType=\"\"\n                    hunks={diffObjects[field]?.diff.hunks || EMPTY_HUNKS}\n                    tokens={diffObjects[field]?.tokens}\n                  >\n                    {hunks =>\n                      hunks.map(hunk => <Hunk key={hunk.content} hunk={hunk} />)\n                    }\n                  </Diff>\n                ) : (\n                  <div className=\"no-change\">\n                    {prevRevision[0] ? (\n                      field === 'query' ? (\n                        <>\n                          <SyntaxHighlighter\n                            language=\"sql\"\n                            style={foundation}\n                            wrapLongLines={true}\n                          >\n                            {prevRevision[0].query}\n                          </SyntaxHighlighter>\n                        </>\n                      ) : field === 'columns' ? (\n                        <div>\n                          {prevRevision[0][field].map(col => (\n                            <>\n                              {col.name}\n                              <br />\n                            </>\n                          ))}\n                        </div>\n                      ) : (\n                        prevRevision[0][field].toString()\n                      )\n                    ) : (\n                      ''\n                    )}\n                  </div>\n                )}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    </div>\n  );\n}\n"],"names":["exports","Diff","oldString","newString","_options$timeout","options","callback","self","done","value","newLen","oldLen","editLength","maxEditLength","maxExecutionTime","abortAfterTimestamp","bestPath","newPos","minDiagonalToConsider","maxDiagonalToConsider","execEditLength","diagonalPath","basePath","removePath","addPath","canAdd","addPathNewPos","canRemove","buildValues","exec","ret","path","added","removed","oldPosInc","last","oldPos","commonCount","left","right","array","i","chars","diff","lastComponent","useLongestToken","components","nextComponent","componentPos","componentLen","component","tmp","oldValue","finalComponent","character","diffChars","_base","_interopRequireDefault","require$$0","obj","characterDiff","oldStr","newStr","params","generateOptions","defaults","name","word","diffWords","diffWordsWithSpace","_params","require$$1","extendedWordChars","reWhitespace","wordDiff","tokens","line","diffLines","diffTrimmedLines","lineDiff","retLines","linesAndNewlines","sentence","diffSentences","sentenceDiff","css","diffCss","cssDiff","json","diffJson","canonicalize","_line","_typeof","objectPrototypeToString","jsonDiff","_this$options","undefinedReplacement","_this$options$stringi","stringifyReplacer","k","v","oldObj","newObj","stack","replacementStack","replacer","key","canonicalizedObj","sortedKeys","_key","diffArrays","arrayDiff","oldArr","newArr","parse","parsePatch","uniDiff","diffstr","delimiters","list","parseIndex","index","header","parseFileHeader","parseHunk","fileHeader","keyPrefix","data","fileName","chunkHeaderIndex","chunkHeaderLine","chunkHeader","hunk","addCount","removeCount","operation","_default","start","minLine","maxLine","wantForward","backwardExhausted","forwardExhausted","localOffset","iterator","apply","applyPatch","applyPatches","_parse","_distanceIterator","source","lines","hunks","compareLine","lineNumber","patchContent","errorCount","fuzzFactor","offset","removeEOFNL","addEOFNL","hunkFits","toPos","j","content","diffOffset","_i","_hunk","_toPos","delimiter","previousOperation","_k","currentIndex","processIndex","err","updatedContent","create","structuredPatch","formatPatch","createTwoFilesPatch","createPatch","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","o","minLen","_arrayLikeToArray","iter","len","arr2","oldFileName","newFileName","oldHeader","newHeader","contextLines","entry","oldRangeStart","newRangeStart","curRange","oldLine","newLine","_loop","current","_curRange","prev","_curRange2","_curRange3","contextSize","oldEOFNewline","newEOFNewline","noNlBeforeAdds","arrayEqual","arrayStartsWith","a","b","merge_1","calcLineCount","merge","_create","_array","require$$2","_calcOldNewLineCount","calcOldNewLineCount","oldLines","newLines","mine","theirs","base","loadPatch","fileNameChanged","selectField","mineIndex","theirsIndex","mineOffset","theirsOffset","mineCurrent","theirsCurrent","hunkBefore","cloneHunk","mergedHunk","mergeLines","param","patch","test","check","mineLines","theirOffset","theirLines","their","insertLeading","theirCurrent","mutualChange","_hunk$lines","collectChange","_hunk$lines2","removal","conflict","insertTrailing","myChanges","theirChanges","allRemoves","skipRemoveSuperset","_hunk$lines3","_hunk$lines4","_hunk$lines5","swap","collectContext","_hunk$lines6","insert","state","matchChanges","changes","merged","matchIndex","contextChanges","conflicted","change","match","removeChanges","delta","changeContent","myCount","theirCount","reverse","reversePatch","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","_defineProperty","l","dmp","convertChangesToDMP","xml","convertChangesToXML","escapeHTML","s","n","_character","_word","_sentence","_css","_json","_apply","_merge","_reverse","_dmp","_xml","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","calcLen","linechanges","ab","ci","REMOVED","ADDED","UNMODIFIED","Hunk","aoff","boff","c","alen","blen","afudg","bfudg","type2unified","type","LineChange","text","change2string","maxwidth","lim","txt","lineChanges","select","nthIndexOf","changes2shorthand","concatTo","makeHunks","precontext","postcontext","lchanges","lskipped","finishHunk","ctx_after","ctx_before","skip","from","d","jdiff","changeType","checkAndAssignTypes","formatLines","opt","context","h","cb","diffAsText","assertEqual","actual","expected","okFn","label","logFn","t","r","_objectSpread2","_defineProperty$1","arg","input","hint","prim","res","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_slicedToArray","_arrayWithHoles","e","f","_nonIterableRest","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","step","commonjsGlobal","createCommonjsModule","fn","module","classnames","hasOwn","classNames","classes","argType","inner","DEFAULT_CONTEXT_VALUE","_ref","renderDefault","ContextType","createContext","Provider","useDiffSettings","useContext","gitdiffParser","root","parsePathFromFirstLine","filesStr","oldPath","newPath","segs","nextQuoteIndex","newQuoteIndex","parser","currentInfo","currentHunk","changeOldLine","changeNewLine","paths","infos","stat","linesLen","simiLine","currentInfoType","simiLoop","spaceIndex","infoType","leftStr","revs","infoStr","typeChar","lastChange","isInsert","isDelete","isNormal","mapHunk","_changes$reduce","_ref2","result","lastDeletionIndex","parseDiff","diffText","indexOfFirstLineBreak","indexOfSecondLineBreak","firstLine","secondLine","file","first","last$1","sideToProperty","side","computeLineNumberFactory","isInHunkFactory","startProperty","linesProperty","end","isBetweenHunksFactory","previousHunk","nextHunk","findChangeByLineNumberFactory","computeLineNumber","findContainerHunk","_sideToProperty2","isInHunk","containerHunk","getCorrespondingLineNumberFactory","baseSide","anotherSide","_sideToProperty4","baseStart","baseLines","_sideToProperty6","correspondingStart","correspondingLines","baseLineNumber","correspondingLineNumber","isBetweenHunks","firstHunk","spanFromStart","lastHunk","spanFromEnd","changeIndex","possibleCorrespondingChangeIndex","possibleCorrespondingChange","negativeChangeType","_spanFromEnd","_listCacheClear","eq_1","other","_assocIndexOf","length","splice","_listCacheDelete","_listCacheGet","_listCacheHas","_listCacheSet","ListCache","entries","_ListCache","_stackClear","_stackDelete","_stackGet","_stackHas","_freeGlobal","freeSelf","_root","_Symbol","objectProto$d","hasOwnProperty$a","nativeObjectToString$1","symToStringTag$1","_getRawTag","isOwn","tag","unmasked","nativeObjectToString","_objectToString","symToStringTag","_baseGetTag","isObject_1","isFunction_1","_coreJsData","maskSrcKey","uid","_isMasked","func","funcToString$1","_toSource","reIsHostCtor","funcProto","objectProto$b","funcToString","hasOwnProperty$9","reIsNative","_baseIsNative","_getValue","_getNative","_Map","_nativeCreate","_hashClear","_hashDelete","hasOwnProperty$8","_hashGet","hasOwnProperty$7","_hashHas","_hashSet","Hash","_Hash","_mapCacheClear","_isKeyable","_getMapData","map","_mapCacheDelete","_mapCacheGet","_mapCacheHas","_mapCacheSet","size","MapCache","_MapCache","_stackSet","pairs","Stack","_Stack","_setCacheAdd","_setCacheHas","SetCache","values","_SetCache","_arraySome","predicate","_cacheHas","cache","_equalArrays","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","_Uint8Array","_mapToArray","_setToArray","set","symbolProto$1","symbolValueOf","_equalByTag","convert","stacked","_arrayPush","isArray_1","_baseGetAllKeys","keysFunc","symbolsFunc","_arrayFilter","resIndex","stubArray_1","propertyIsEnumerable$1","nativeGetSymbols","_getSymbols","symbol","_baseTimes","iteratee","isObjectLike_1","_baseIsArguments","objectProto$7","hasOwnProperty$6","propertyIsEnumerable","isArguments_1","stubFalse_1","isBuffer_1","freeExports","freeModule","Buffer","isBuffer","reIsUint","_isIndex","isLength_1","typedArrayTags","_baseIsTypedArray","_baseUnary","_nodeUtil","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray_1","hasOwnProperty$5","_arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","objectProto$5","_isPrototype","Ctor","_nativeKeys","transform","hasOwnProperty$4","_baseKeys","isArrayLike_1","keys_1","_getAllKeys","hasOwnProperty$3","_equalObjects","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","_DataView","_Promise","_Set","_WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","_getTag","objectTag","hasOwnProperty$2","_baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqual","baseIsEqual","_baseIsMatch","matchData","srcValue","_isStrictComparable","_getMatchData","_matchesStrictComparable","_baseMatches","isSymbol_1","reIsDeepProp","reIsPlainProp","_isKey","memoize","resolver","memoized","args","memoize_1","rePropName","reEscapeChar","_stringToPath","string","number","quote","subString","_arrayMap","symbolProto","symbolToString","_baseToString","baseToString","toString_1","_castPath","_toKey","_baseGet","get_1","defaultValue","_baseHasIn","_hasPath","hasFunc","hasIn_1","_baseMatchesProperty","identity_1","_baseProperty","_basePropertyDeep","property_1","_baseIteratee","getChangeKey","prefix","computeOldLineNumber","computeNewLineNumber","_baseAssignValue","_createBaseFor","fromRight","iterable","props","_baseFor","_baseForOwn","mapValues_1","_excluded$7","defaultRenderToken","markType","properties","className","children","renderWithClassName","jsx","legacyClassName","isEmptyToken","token","CodeCell","changeKey","renderToken","attributes","actualRenderToken","CodeCell$1","memo","renderDefaultBy","wrapInAnchorBy","gutterAnchor","anchorTarget","element","composeCallback","own","custom","useBoundCallbacks","callbacks","hoverOn","hoverOff","useMemo","output","renderGutterCell","events","inHoverState","renderGutter","gutterOptions","UnifiedChange","_useState2","setValue","selected","gutterClassName","codeClassName","gutterEvents","codeEvents","hideGutter","generateAnchorID","_useBoolean","useState","useCallback","_useBoolean2","hover","eventArg","boundGutterEvents","boundCodeEvents","anchorID","gutterClassNameValue","codeClassNameValue","jsxs","UnifiedChange$1","UnifiedWidget","_excluded$6","_excluded2$2","UnifiedHunk","widgets","childrenProps","elements","widget","selectedChanges","lineClassName","changeProps","tokensOfLine","SIDE_OLD","useCallbackOnSide","setHover","customCallbacks","markHover","unmarkHover","renderCells","gutterAnchorTarget","_gutterClassNameValue","_codeClassNameValue","sideName","gutterProps","SplitChange","oldChange","newChange","oldSelected","newSelected","oldTokens","newTokens","monotonous","oldGutterEvents","newGutterEvents","oldCodeEvents","newCodeEvents","oldAnchorID","newAnchorID","commons","oldArgs","newArgs","lineTypeClassName","SplitChange$1","SplitWidget","oldElement","newElement","_excluded$5","_excluded2$1","keyForPair","x","y","SplitHunk","findWidget","next","rowChanges","oldWidget","newWidget","item","newValue","_excluded$4","_useDiffSettings","gutterType","hunkClassName","RenderingHunk","noop","setUserSelectStyle","selectable","defaultRenderChildren","diffType","optimizeSelection","_props$hunkClassName","_props$lineClassName","_props$gutterClassNam","_props$codeClassName","_props$gutterType","_props$viewType","viewType","_props$gutterEvents","_props$codeEvents","_props$generateAnchor","_props$selectedChange","_props$widgets","_props$renderGutter","_props$children","useRef","enableColumnSelection","closestCell","selection","_step","_iterator","cells","onTableMouseDown","cols","settingsContextValue","diffMatchPatch","diff_match_patch","op","text1","text2","opt_checklines","opt_deadline","deadline","checklines","commonlength","commonprefix","commonsuffix","diffs","longtext","shorttext","hm","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","linearray","pointer","count_delete","count_insert","text_delete","text_insert","subDiff","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","k2","y2","text1a","text2a","text1b","text2b","diffsb","lineArray","lineHash","diff_linesToCharsMunge_","lineStart","lineEnd","lineArrayLength","maxLines","chars1","pointermin","pointermax","pointermid","pointerstart","pointerend","text_length","best","pattern","found","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","equalities","equalitiesLength","lastEquality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumeric2","whitespace1","whitespace2","lineBreak1","lineBreak2","blankLine1","blankLine2","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","score","pre_ins","pre_del","post_ins","post_del","loc","chars2","last_chars1","last_chars2","html","pattern_amp","pattern_lt","pattern_gt","pattern_para","levenshtein","insertions","deletions","diffsLength","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","padding","suffix","opt_b","opt_c","patches","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patchesCopy","patchCopy","nullPadding","results","start_loc","expected_loc","end_loc","index2","index1","mod","paddingLength","extraLength","patch_size","bigpatch","start1","start2","empty","textline","textPointer","patchHeader","m","sign","_sql","SyntaxHighlighter","sql","foundation","RevisionDiff","djClient","DJClientContext","revisions","setRevisions","revision","useParams","useEffect","thisRevision","rev","idx","prevRevision","EMPTY_HUNKS","diffObjects","older","newer","diffObj","fields","col","NamespaceHeader","_a","_b","_c","_d","_e","DiffIcon","field","labelize","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}