From 224d5df40576b5a38ad9b860642434d1555cb5aa Mon Sep 17 00:00:00 2001 From: Alex Vazquez Date: Sat, 7 Jan 2023 21:05:08 -0800 Subject: [PATCH 1/3] Fixing error in package.json remove illegal export --- .gitignore | 2 - dist/diff.js | 1590 +++++++++++++++++++++++++++++++++ lib/convert/dmp.js | 32 + lib/convert/xml.js | 42 + lib/diff/array.js | 45 + lib/diff/base.js | 307 +++++++ lib/diff/character.js | 37 + lib/diff/css.js | 41 + lib/diff/json.js | 163 ++++ lib/diff/line.js | 89 ++ lib/diff/sentence.js | 41 + lib/diff/word.js | 108 +++ lib/index.es6.js | 1561 ++++++++++++++++++++++++++++++++ lib/index.js | 216 +++++ lib/index.mjs | 1561 ++++++++++++++++++++++++++++++++ lib/patch/apply.js | 238 +++++ lib/patch/create.js | 272 ++++++ lib/patch/merge.js | 613 +++++++++++++ lib/patch/parse.js | 167 ++++ lib/util/array.js | 32 + lib/util/distance-iterator.js | 57 ++ lib/util/params.js | 24 + package.json | 3 +- 23 files changed, 7237 insertions(+), 4 deletions(-) create mode 100644 dist/diff.js create mode 100644 lib/convert/dmp.js create mode 100644 lib/convert/xml.js create mode 100644 lib/diff/array.js create mode 100644 lib/diff/base.js create mode 100644 lib/diff/character.js create mode 100644 lib/diff/css.js create mode 100644 lib/diff/json.js create mode 100644 lib/diff/line.js create mode 100644 lib/diff/sentence.js create mode 100644 lib/diff/word.js create mode 100644 lib/index.es6.js create mode 100644 lib/index.js create mode 100644 lib/index.mjs create mode 100644 lib/patch/apply.js create mode 100644 lib/patch/create.js create mode 100644 lib/patch/merge.js create mode 100644 lib/patch/parse.js create mode 100644 lib/util/array.js create mode 100644 lib/util/distance-iterator.js create mode 100644 lib/util/params.js diff --git a/.gitignore b/.gitignore index 9117a3ab2..528bac58d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ coverage node_modules npm-debug.log -lib -dist yarn-error.log .vscode diff --git a/dist/diff.js b/dist/diff.js new file mode 100644 index 000000000..94cfcda70 --- /dev/null +++ b/dist/diff.js @@ -0,0 +1,1590 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.Diff = {})); +}(this, (function (exports) { 'use strict'; + + function Diff() {} + Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced, or until the edit length exceeds options.maxEditLength (if given), + // in which case it will return undefined. + + + if (callback) { + (function exec() { + setTimeout(function () { + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(''); + }, + join: function join(chars) { + return chars.join(''); + } + }; + + function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; + } + + function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; + } + + var characterDiff = new Diff(); + function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); + } + + function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; + } + + // + // Ranges and exceptions: + // Latin-1 Supplement, 0080–00FF + // - U+00D7 × Multiplication sign + // - U+00F7 ÷ Division sign + // Latin Extended-A, 0100–017F + // Latin Extended-B, 0180–024F + // IPA Extensions, 0250–02AF + // Spacing Modifier Letters, 02B0–02FF + // - U+02C7 ˇ ˇ Caron + // - U+02D8 ˘ ˘ Breve + // - U+02D9 ˙ ˙ Dot Above + // - U+02DA ˚ ˚ Ring Above + // - U+02DB ˛ ˛ Ogonek + // - U+02DC ˜ ˜ Small Tilde + // - U+02DD ˝ ˝ Double Acute Accent + // Latin Extended Additional, 1E00–1EFF + + var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; + var reWhitespace = /\S/; + var wordDiff = new Diff(); + + wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); + }; + + wordDiff.tokenize = function (value) { + // All whitespace symbols except newline group into one token, each newline - in separate token + 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. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; + }; + + function diffWords(oldStr, newStr, options) { + options = generateOptions(options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); + } + function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); + } + + var lineDiff = new Diff(); + + lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; + }; + + function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); + } + function diffTrimmedLines(oldStr, newStr, callback) { + var options = generateOptions(callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); + } + + var sentenceDiff = new Diff(); + + sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); + }; + + function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); + } + + var cssDiff = new Diff(); + + cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); + }; + + function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); + } + + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); + } + + function _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); + } + + function _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; + } + + function _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."); + } + + var objectPrototypeToString = Object.prototype.toString; + var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a + // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + + jsonDiff.useLongestToken = true; + jsonDiff.tokenize = lineDiff.tokenize; + + jsonDiff.castInput = function (value) { + var _this$options = this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) { + return typeof v === 'undefined' ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); + }; + + jsonDiff.equals = function (left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); + }; + + function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); + } // This function handles the presence of circular references by bailing out when encountering an + // object that is already on the "stack" of items being processed. Accepts an optional replacer + + function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if (_typeof(obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; + } + + var arrayDiff = new Diff(); + + arrayDiff.tokenize = function (value) { + return value.slice(); + }; + + arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; + }; + + function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); + } + + function parsePatch(uniDiff) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], + newStart: +chunkHeader[3], + newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], + lines: [], + linedelimiters: [] + }; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart += 1; + } + + if (hunk.newLines === 0) { + hunk.newStart += 1; + } + + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; + } + + // Iterator that traverses in the range of [min, max], stepping + // by distance from a given start position. I.e. for [0, 4], with + // start of 2, this will iterate 2, 3, 1, 4, 0. + function distanceIterator (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; + } + + function applyPatch(source, uniDiff) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) { + return line === patchContent; + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = distanceIterator(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); + } // Wrapper that supports multiple file patches via callbacks. + + function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); + } + + function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = diffLines(oldStr, newStr, options); + + if (!diff) { + return; + } + + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + var _loop = function _loop(i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + var _curRange; + + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + var _curRange2; + + // Overlapping + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + // however, if the old file is empty, do not output the no-nl line + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + _loop(i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; + } + function formatPatch(diff) { + var ret = []; + + if (diff.oldFileName == diff.newFileName) { + ret.push('Index: ' + diff.oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; + } + function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); + } + function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); + } + + function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); + } + function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; + } + + function calcLineCount(hunk) { + var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } + } + function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; + } + + function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return parsePatch(param)[0]; + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return structuredPatch(undefined, undefined, base, param); + } + + return param; + } + + function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; + } + + function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } + } + + function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; + } + + function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; + } + + function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + var _hunk$lines; + + // Mine inserted + (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + var _hunk$lines2; + + // Theirs inserted + (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); + } + + function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + var _hunk$lines3; + + (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges)); + + return; + } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + var _hunk$lines4; + + (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges)); + + return; + } + } else if (arrayEqual(myChanges, theirChanges)) { + var _hunk$lines5; + + (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); + } + + function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + var _hunk$lines6; + + (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } + } + + function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); + } + + function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } + } + + function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } + } + + function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; + } + + function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; + } + + function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); + } + + function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; + } + + function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; + } + + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; + } + + function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); + } + + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; + } + + exports.Diff = Diff; + exports.applyPatch = applyPatch; + exports.applyPatches = applyPatches; + exports.canonicalize = canonicalize; + exports.convertChangesToDMP = convertChangesToDMP; + exports.convertChangesToXML = convertChangesToXML; + exports.createPatch = createPatch; + exports.createTwoFilesPatch = createTwoFilesPatch; + exports.diffArrays = diffArrays; + exports.diffChars = diffChars; + exports.diffCss = diffCss; + exports.diffJson = diffJson; + exports.diffLines = diffLines; + exports.diffSentences = diffSentences; + exports.diffTrimmedLines = diffTrimmedLines; + exports.diffWords = diffWords; + exports.diffWordsWithSpace = diffWordsWithSpace; + exports.merge = merge; + exports.parsePatch = parsePatch; + exports.structuredPatch = structuredPatch; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/lib/convert/dmp.js b/lib/convert/dmp.js new file mode 100644 index 000000000..91ff40a91 --- /dev/null +++ b/lib/convert/dmp.js @@ -0,0 +1,32 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.convertChangesToDMP = convertChangesToDMP; + +/*istanbul ignore end*/ +// See: http://code.google.com/p/google-diff-match-patch/wiki/API +function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0= diff --git a/lib/convert/xml.js b/lib/convert/xml.js new file mode 100644 index 000000000..69ec60c66 --- /dev/null +++ b/lib/convert/xml.js @@ -0,0 +1,42 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.convertChangesToXML = convertChangesToXML; + +/*istanbul ignore end*/ +function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); +} + +function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0= diff --git a/lib/diff/array.js b/lib/diff/array.js new file mode 100644 index 000000000..19e368098 --- /dev/null +++ b/lib/diff/array.js @@ -0,0 +1,45 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffArrays = diffArrays; +exports.arrayDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +var arrayDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.arrayDiff = arrayDiff; + +/*istanbul ignore end*/ +arrayDiff.tokenize = function (value) { + return value.slice(); +}; + +arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; +}; + +function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19 diff --git a/lib/diff/base.js b/lib/diff/base.js new file mode 100644 index 000000000..521da8a6d --- /dev/null +++ b/lib/diff/base.js @@ -0,0 +1,307 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = Diff; + +/*istanbul ignore end*/ +function Diff() {} + +Diff.prototype = { + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + diff: function diff(oldString, newString) { + /*istanbul ignore start*/ + var + /*istanbul ignore end*/ + options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = + /*istanbul ignore start*/ + void 0 + /*istanbul ignore end*/ + ; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced, or until the edit length exceeds options.maxEditLength (if given), + // in which case it will return undefined. + + + if (callback) { + (function exec() { + setTimeout(function () { + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + castInput: function castInput(value) { + return value; + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + tokenize: function tokenize(value) { + return value.split(''); + }, + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + join: function join(chars) { + return chars.join(''); + } +}; + +function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; +} + +function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJiZXN0UGF0aCIsIm5ld1BvcyIsImNvbXBvbmVudHMiLCJvbGRQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJiYXNlUGF0aCIsImFkZFBhdGgiLCJyZW1vdmVQYXRoIiwiY2FuQWRkIiwiY2FuUmVtb3ZlIiwiY2xvbmVQYXRoIiwicHVzaENvbXBvbmVudCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsImFkZGVkIiwicmVtb3ZlZCIsImxhc3QiLCJwdXNoIiwiY29tbW9uQ291bnQiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjb21wYXJhdG9yIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiYXJyYXkiLCJpIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBvbmVudCIsInNsaWNlIiwibWFwIiwib2xkVmFsdWUiLCJ0bXAiLCJsYXN0Q29tcG9uZW50IiwicG9wIiwicGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWUsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsSUFBSSxDQUFDQyxTQUFMLEdBQWlCO0FBQUE7O0FBQUE7QUFDZkMsRUFBQUEsSUFEZSxnQkFDVkMsU0FEVSxFQUNDQyxTQURELEVBQzBCO0FBQUE7QUFB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R0FBMkJNLEdBQTNCO0FBQ0Q7QUFDRjtBQUNGLEdBdkMyRSxDQXlDNUU7QUFDQTtBQUNBOzs7QUFDQSxNQUFJQyxhQUFhLEdBQUd4QyxVQUFVLENBQUNrQyxZQUFZLEdBQUcsQ0FBaEIsQ0FBOUI7O0FBQ0EsTUFBSUEsWUFBWSxHQUFHLENBQWYsSUFDRyxPQUFPTSxhQUFhLENBQUN2RCxLQUFyQixLQUErQixRQURsQyxLQUVJdUQsYUFBYSxDQUFDdEIsS0FBZCxJQUF1QnNCLGFBQWEsQ0FBQ3JCLE9BRnpDLEtBR0d6QyxJQUFJLENBQUM2QyxNQUFMLENBQVksRUFBWixFQUFnQmlCLGFBQWEsQ0FBQ3ZELEtBQTlCLENBSFAsRUFHNkM7QUFDM0NlLElBQUFBLFVBQVUsQ0FBQ2tDLFlBQVksR0FBRyxDQUFoQixDQUFWLENBQTZCakQsS0FBN0IsSUFBc0N1RCxhQUFhLENBQUN2RCxLQUFwRDtBQUNBZSxJQUFBQSxVQUFVLENBQUN5QyxHQUFYO0FBQ0Q7O0FBRUQsU0FBT3pDLFVBQVA7QUFDRDs7QUFFRCxTQUFTWSxTQUFULENBQW1COEIsSUFBbkIsRUFBeUI7QUFDdkIsU0FBTztBQUFFM0MsSUFBQUEsTUFBTSxFQUFFMkMsSUFBSSxDQUFDM0MsTUFBZjtBQUF1QkMsSUFBQUEsVUFBVSxFQUFFMEMsSUFBSSxDQUFDMUMsVUFBTCxDQUFnQm9DLEtBQWhCLENBQXNCLENBQXRCO0FBQW5DLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBuZXdQb3M6IC0xLCBjb21wb25lbnRzOiBbXSB9XTtcblxuICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG4gICAgbGV0IG9sZFBvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIDApO1xuICAgIGlmIChiZXN0UGF0aFswXS5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgLy8gSWRlbnRpdHkgcGVyIHRoZSBlcXVhbGl0eSBhbmQgdG9rZW5pemVyXG4gICAgICByZXR1cm4gZG9uZShbe3ZhbHVlOiB0aGlzLmpvaW4obmV3U3RyaW5nKSwgY291bnQ6IG5ld1N0cmluZy5sZW5ndGh9XSk7XG4gICAgfVxuXG4gICAgLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgZm9yIChsZXQgZGlhZ29uYWxQYXRoID0gLTEgKiBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggPD0gZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoICs9IDIpIHtcbiAgICAgICAgbGV0IGJhc2VQYXRoO1xuICAgICAgICBsZXQgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLFxuICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCArIDFdLFxuICAgICAgICAgICAgb2xkUG9zID0gKHJlbW92ZVBhdGggPyByZW1vdmVQYXRoLm5ld1BvcyA6IDApIC0gZGlhZ29uYWxQYXRoO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMgdmFsdWUsIGNsZWFyIGl0XG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcyArIDEgPCBuZXdMZW4sXG4gICAgICAgICAgICBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gb2xkUG9zICYmIG9sZFBvcyA8IG9sZExlbjtcbiAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJlbW92ZSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgcGF0aCBpcyBhIHRlcm1pbmFsIHRoZW4gcHJ1bmVcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNlbGVjdCB0aGUgcHJpb3JcbiAgICAgICAgLy8gcGF0aCB3aG9zZSBwb3NpdGlvbiBpbiB0aGUgbmV3IHN0cmluZyBpcyB0aGUgZmFydGhlc3QgZnJvbSB0aGUgb3JpZ2luXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBib3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGhcbiAgICAgICAgaWYgKCFjYW5BZGQgfHwgKGNhblJlbW92ZSAmJiBhZGRQYXRoLm5ld1BvcyA8IHJlbW92ZVBhdGgubmV3UG9zKSkge1xuICAgICAgICAgIGJhc2VQYXRoID0gY2xvbmVQYXRoKHJlbW92ZVBhdGgpO1xuICAgICAgICAgIHNlbGYucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VQYXRoID0gYWRkUGF0aDsgLy8gTm8gbmVlZCB0byBjbG9uZSwgd2UndmUgcHVsbGVkIGl0IGZyb20gdGhlIGxpc3RcbiAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdHJ1ZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZFBvcyA9IHNlbGYuZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCk7XG5cbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBoaXQgdGhlIGVuZCBvZiBib3RoIHN0cmluZ3MsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICAgICAgaWYgKGJhc2VQYXRoLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUoYnVpbGRWYWx1ZXMoc2VsZiwgYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHNlbGYudXNlTG9uZ2VzdFRva2VuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHRyYWNrIHRoaXMgcGF0aCBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgYW5kIGNvbnRpbnVlLlxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlZGl0TGVuZ3RoKys7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybXMgdGhlIGxlbmd0aCBvZiBlZGl0IGl0ZXJhdGlvbi4gSXMgYSBiaXQgZnVnbHkgYXMgdGhpcyBoYXMgdG8gc3VwcG9ydCB0aGVcbiAgICAvLyBzeW5jIGFuZCBhc3luYyBtb2RlIHdoaWNoIGlzIG5ldmVyIGZ1bi4gTG9vcHMgb3ZlciBleGVjRWRpdExlbmd0aCB1bnRpbCBhIHZhbHVlXG4gICAgLy8gaXMgcHJvZHVjZWQsIG9yIHVudGlsIHRoZSBlZGl0IGxlbmd0aCBleGNlZWRzIG9wdGlvbnMubWF4RWRpdExlbmd0aCAoaWYgZ2l2ZW4pLFxuICAgIC8vIGluIHdoaWNoIGNhc2UgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGVkaXRMZW5ndGggPiBtYXhFZGl0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIGV4ZWMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICBsZXQgcmV0ID0gZXhlY0VkaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgIGxldCBsYXN0ID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjbG9uZSBoZXJlIGFzIHRoZSBjb21wb25lbnQgY2xvbmUgb3BlcmF0aW9uIGlzIGp1c3RcbiAgICAgIC8vIGFzIHNoYWxsb3cgYXJyYXkgY2xvbmVcbiAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXSA9IHtjb3VudDogbGFzdC5jb3VudCArIDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goe2NvdW50OiAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfSk7XG4gICAgfVxuICB9LFxuICBleHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKSB7XG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsXG4gICAgICAgIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsXG4gICAgICAgIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1BvcyxcbiAgICAgICAgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLFxuXG4gICAgICAgIGNvbW1vbkNvdW50ID0gMDtcbiAgICB3aGlsZSAobmV3UG9zICsgMSA8IG5ld0xlbiAmJiBvbGRQb3MgKyAxIDwgb2xkTGVuICYmIHRoaXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MgKyAxXSwgb2xkU3RyaW5nW29sZFBvcyArIDFdKSkge1xuICAgICAgbmV3UG9zKys7XG4gICAgICBvbGRQb3MrKztcbiAgICAgIGNvbW1vbkNvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1vbkNvdW50KSB7XG4gICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe2NvdW50OiBjb21tb25Db3VudH0pO1xuICAgIH1cblxuICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvcztcbiAgICByZXR1cm4gb2xkUG9zO1xuICB9LFxuXG4gIGVxdWFscyhsZWZ0LCByaWdodCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKGxlZnQsIHJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0XG4gICAgICAgIHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSAmJiBsZWZ0LnRvTG93ZXJDYXNlKCkgPT09IHJpZ2h0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlRW1wdHkoYXJyYXkpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycmF5W2ldKSB7XG4gICAgICAgIHJldC5wdXNoKGFycmF5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgY2FzdElucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICB0b2tlbml6ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnJyk7XG4gIH0sXG4gIGpvaW4oY2hhcnMpIHtcbiAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgbGV0IGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW1vdmVkKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCAmJiB1c2VMb25nZXN0VG9rZW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUsIGkpIHtcbiAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4obmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gUmV2ZXJzZSBhZGQgYW5kIHJlbW92ZSBzbyByZW1vdmVzIGFyZSBvdXRwdXQgZmlyc3QgdG8gbWF0Y2ggY29tbW9uIGNvbnZlbnRpb25cbiAgICAgIC8vIFRoZSBkaWZmaW5nIGFsZ29yaXRobSBpcyB0aWVkIHRvIGFkZCB0aGVuIHJlbW92ZSBvdXRwdXQgYW5kIHRoaXMgaXMgdGhlIHNpbXBsZXN0XG4gICAgICAvLyByb3V0ZSB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0IHdpdGggbWluaW1hbCBvdmVyaGVhZC5cbiAgICAgIGlmIChjb21wb25lbnRQb3MgJiYgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXS5hZGRlZCkge1xuICAgICAgICBsZXQgdG1wID0gY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXSA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3NdID0gdG1wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpYWwgY2FzZSBoYW5kbGUgZm9yIHdoZW4gb25lIHRlcm1pbmFsIGlzIGlnbm9yZWQgKGkuZS4gd2hpdGVzcGFjZSkuXG4gIC8vIEZvciB0aGlzIGNhc2Ugd2UgbWVyZ2UgdGhlIHRlcm1pbmFsIGludG8gdGhlIHByaW9yIHN0cmluZyBhbmQgZHJvcCB0aGUgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBzdHJpbmcgbW9kZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGxhc3RDb21wb25lbnQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgbGFzdENvbXBvbmVudC52YWx1ZSkpIHtcbiAgICBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDJdLnZhbHVlICs9IGxhc3RDb21wb25lbnQudmFsdWU7XG4gICAgY29tcG9uZW50cy5wb3AoKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkge1xuICByZXR1cm4geyBuZXdQb3M6IHBhdGgubmV3UG9zLCBjb21wb25lbnRzOiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMCkgfTtcbn1cbiJdfQ== diff --git a/lib/diff/character.js b/lib/diff/character.js new file mode 100644 index 000000000..7ddfa205e --- /dev/null +++ b/lib/diff/character.js @@ -0,0 +1,37 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffChars = diffChars; +exports.characterDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +var characterDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.characterDiff = characterDiff; + +/*istanbul ignore end*/ +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19 diff --git a/lib/diff/css.js b/lib/diff/css.js new file mode 100644 index 000000000..e3ad1fcba --- /dev/null +++ b/lib/diff/css.js @@ -0,0 +1,41 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffCss = diffCss; +exports.cssDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +var cssDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.cssDiff = cssDiff; + +/*istanbul ignore end*/ +cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); +}; + +function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ== diff --git a/lib/diff/json.js b/lib/diff/json.js new file mode 100644 index 000000000..67c2f175f --- /dev/null +++ b/lib/diff/json.js @@ -0,0 +1,163 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffJson = diffJson; +exports.canonicalize = canonicalize; +exports.jsonDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_line = require("./line") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _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); } + +/*istanbul ignore end*/ +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a +// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + +/*istanbul ignore start*/ +exports.jsonDiff = jsonDiff; + +/*istanbul ignore end*/ +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = +/*istanbul ignore start*/ +_line +/*istanbul ignore end*/ +. +/*istanbul ignore start*/ +lineDiff +/*istanbul ignore end*/ +.tokenize; + +jsonDiff.castInput = function (value) { + /*istanbul ignore start*/ + var _this$options = + /*istanbul ignore end*/ + this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + typeof v === 'undefined' ? undefinedReplacement : v + ); + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); +}; + +jsonDiff.equals = function (left, right) { + return ( + /*istanbul ignore start*/ + _base + /*istanbul ignore end*/ + [ + /*istanbul ignore start*/ + "default" + /*istanbul ignore end*/ + ].prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')) + ); +}; + +function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); +} // This function handles the presence of circular references by bailing out when encountering an +// object that is already on the "stack" of items being processed. Accepts an optional replacer + + +function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if ( + /*istanbul ignore start*/ + _typeof( + /*istanbul ignore end*/ + obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0= diff --git a/lib/diff/line.js b/lib/diff/line.js new file mode 100644 index 000000000..855fe30b9 --- /dev/null +++ b/lib/diff/line.js @@ -0,0 +1,89 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffLines = diffLines; +exports.diffTrimmedLines = diffTrimmedLines; +exports.lineDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_params = require("../util/params") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +var lineDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.lineDiff = lineDiff; + +/*istanbul ignore end*/ +lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; +}; + +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} + +function diffTrimmedLines(oldStr, newStr, callback) { + var options = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _params + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + generateOptions) + /*istanbul ignore end*/ + (callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJkaWZmTGluZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiLCJkaWZmVHJpbW1lZExpbmVzIiwiZ2VuZXJhdGVPcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxRQUFRLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFqQjs7Ozs7O0FBQ1BELFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQixVQUFTQyxLQUFULEVBQWdCO0FBQ2xDLE1BQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsTUFDSUMsZ0JBQWdCLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixDQUFZLFdBQVosQ0FEdkIsQ0FEa0MsQ0FJbEM7O0FBQ0EsTUFBSSxDQUFDRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUNFLE1BQWpCLEdBQTBCLENBQTNCLENBQXJCLEVBQW9EO0FBQ2xERixJQUFBQSxnQkFBZ0IsQ0FBQ0csR0FBakI7QUFDRCxHQVBpQyxDQVNsQzs7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixnQkFBZ0IsQ0FBQ0UsTUFBckMsRUFBNkNFLENBQUMsRUFBOUMsRUFBa0Q7QUFDaEQsUUFBSUMsSUFBSSxHQUFHTCxnQkFBZ0IsQ0FBQ0ksQ0FBRCxDQUEzQjs7QUFFQSxRQUFJQSxDQUFDLEdBQUcsQ0FBSixJQUFTLENBQUMsS0FBS0UsT0FBTCxDQUFhQyxjQUEzQixFQUEyQztBQUN6Q1IsTUFBQUEsUUFBUSxDQUFDQSxRQUFRLENBQUNHLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBUixJQUFpQ0csSUFBakM7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEtBQUtDLE9BQUwsQ0FBYUUsZ0JBQWpCLEVBQW1DO0FBQ2pDSCxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQ0ksSUFBTCxFQUFQO0FBQ0Q7O0FBQ0RWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjTCxJQUFkO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPTixRQUFQO0FBQ0QsQ0F4QkQ7O0FBMEJPLFNBQVNZLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsUUFBbkMsRUFBNkM7QUFBRSxTQUFPbkIsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDs7QUFDaEcsU0FBU0UsZ0JBQVQsQ0FBMEJKLE1BQTFCLEVBQWtDQyxNQUFsQyxFQUEwQ0MsUUFBMUMsRUFBb0Q7QUFDekQsTUFBSVIsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQVc7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2IsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QlAsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19 diff --git a/lib/diff/sentence.js b/lib/diff/sentence.js new file mode 100644 index 000000000..95158d6f5 --- /dev/null +++ b/lib/diff/sentence.js @@ -0,0 +1,41 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffSentences = diffSentences; +exports.sentenceDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +var sentenceDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.sentenceDiff = sentenceDiff; + +/*istanbul ignore end*/ +sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; + +function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ== diff --git a/lib/diff/word.js b/lib/diff/word.js new file mode 100644 index 000000000..cef7fe17b --- /dev/null +++ b/lib/diff/word.js @@ -0,0 +1,108 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.diffWords = diffWords; +exports.diffWordsWithSpace = diffWordsWithSpace; +exports.wordDiff = void 0; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./base")) +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_params = require("../util/params") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode +// +// Ranges and exceptions: +// Latin-1 Supplement, 0080–00FF +// - U+00D7 × Multiplication sign +// - U+00F7 ÷ Division sign +// Latin Extended-A, 0100–017F +// Latin Extended-B, 0180–024F +// IPA Extensions, 0250–02AF +// Spacing Modifier Letters, 02B0–02FF +// - U+02C7 ˇ ˇ Caron +// - U+02D8 ˘ ˘ Breve +// - U+02D9 ˙ ˙ Dot Above +// - U+02DA ˚ ˚ Ring Above +// - U+02DB ˛ ˛ Ogonek +// - U+02DC ˜ ˜ Small Tilde +// - U+02DD ˝ ˝ Double Acute Accent +// Latin Extended Additional, 1E00–1EFF +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); + +/*istanbul ignore start*/ +exports.wordDiff = wordDiff; + +/*istanbul ignore end*/ +wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; + +wordDiff.tokenize = function (value) { + // All whitespace symbols except newline group into one token, each newline - in separate token + 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. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; +}; + +function diffWords(oldStr, newStr, options) { + options = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _params + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + generateOptions) + /*istanbul ignore end*/ + (options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); +} + +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0= diff --git a/lib/index.es6.js b/lib/index.es6.js new file mode 100644 index 000000000..c2a00135a --- /dev/null +++ b/lib/index.es6.js @@ -0,0 +1,1561 @@ +function Diff() {} +Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced, or until the edit length exceeds options.maxEditLength (if given), + // in which case it will return undefined. + + + if (callback) { + (function exec() { + setTimeout(function () { + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(''); + }, + join: function join(chars) { + return chars.join(''); + } +}; + +function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; +} + +function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; +} + +var characterDiff = new Diff(); +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} + +function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; +} + +// +// Ranges and exceptions: +// Latin-1 Supplement, 0080–00FF +// - U+00D7 × Multiplication sign +// - U+00F7 ÷ Division sign +// Latin Extended-A, 0100–017F +// Latin Extended-B, 0180–024F +// IPA Extensions, 0250–02AF +// Spacing Modifier Letters, 02B0–02FF +// - U+02C7 ˇ ˇ Caron +// - U+02D8 ˘ ˘ Breve +// - U+02D9 ˙ ˙ Dot Above +// - U+02DA ˚ ˚ Ring Above +// - U+02DB ˛ ˛ Ogonek +// - U+02DC ˜ ˜ Small Tilde +// - U+02DD ˝ ˝ Double Acute Accent +// Latin Extended Additional, 1E00–1EFF + +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new Diff(); + +wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; + +wordDiff.tokenize = function (value) { + // All whitespace symbols except newline group into one token, each newline - in separate token + 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. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; +}; + +function diffWords(oldStr, newStr, options) { + options = generateOptions(options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); +} +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} + +var lineDiff = new Diff(); + +lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; +}; + +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} +function diffTrimmedLines(oldStr, newStr, callback) { + var options = generateOptions(callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); +} + +var sentenceDiff = new Diff(); + +sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; + +function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); +} + +var cssDiff = new Diff(); + +cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); +}; + +function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); +} + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); +} + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} + +function _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); +} + +function _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; +} + +function _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."); +} + +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a +// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = lineDiff.tokenize; + +jsonDiff.castInput = function (value) { + var _this$options = this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) { + return typeof v === 'undefined' ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); +}; + +jsonDiff.equals = function (left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); +}; + +function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); +} // This function handles the presence of circular references by bailing out when encountering an +// object that is already on the "stack" of items being processed. Accepts an optional replacer + +function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if (_typeof(obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; +} + +var arrayDiff = new Diff(); + +arrayDiff.tokenize = function (value) { + return value.slice(); +}; + +arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; +}; + +function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); +} + +function parsePatch(uniDiff) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], + newStart: +chunkHeader[3], + newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], + lines: [], + linedelimiters: [] + }; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart += 1; + } + + if (hunk.newLines === 0) { + hunk.newStart += 1; + } + + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; +} + +// Iterator that traverses in the range of [min, max], stepping +// by distance from a given start position. I.e. for [0, 4], with +// start of 2, this will iterate 2, 3, 1, 4, 0. +function distanceIterator (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; +} + +function applyPatch(source, uniDiff) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) { + return line === patchContent; + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = distanceIterator(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); +} // Wrapper that supports multiple file patches via callbacks. + +function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); +} + +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = diffLines(oldStr, newStr, options); + + if (!diff) { + return; + } + + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + var _loop = function _loop(i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + var _curRange; + + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + var _curRange2; + + // Overlapping + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + // however, if the old file is empty, do not output the no-nl line + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + _loop(i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; +} +function formatPatch(diff) { + var ret = []; + + if (diff.oldFileName == diff.newFileName) { + ret.push('Index: ' + diff.oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; +} +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} + +function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); +} +function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; +} + +function calcLineCount(hunk) { + var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } +} +function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; +} + +function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return parsePatch(param)[0]; + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return structuredPatch(undefined, undefined, base, param); + } + + return param; +} + +function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; +} + +function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } +} + +function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; +} + +function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; +} + +function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + var _hunk$lines; + + // Mine inserted + (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + var _hunk$lines2; + + // Theirs inserted + (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); +} + +function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + var _hunk$lines3; + + (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges)); + + return; + } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + var _hunk$lines4; + + (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges)); + + return; + } + } else if (arrayEqual(myChanges, theirChanges)) { + var _hunk$lines5; + + (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); +} + +function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + var _hunk$lines6; + + (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } +} + +function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); +} + +function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } +} + +function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } +} + +function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; +} + +function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; +} + +function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); +} + +function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; +} + +function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; +} + +// See: http://code.google.com/p/google-diff-match-patch/wiki/API +function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; +} + +function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); +} + +function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; +} + +export { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, merge, parsePatch, structuredPatch }; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 000000000..920f0feeb --- /dev/null +++ b/lib/index.js @@ -0,0 +1,216 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Diff", { + enumerable: true, + get: function get() { + return _base["default"]; + } +}); +Object.defineProperty(exports, "diffChars", { + enumerable: true, + get: function get() { + return _character.diffChars; + } +}); +Object.defineProperty(exports, "diffWords", { + enumerable: true, + get: function get() { + return _word.diffWords; + } +}); +Object.defineProperty(exports, "diffWordsWithSpace", { + enumerable: true, + get: function get() { + return _word.diffWordsWithSpace; + } +}); +Object.defineProperty(exports, "diffLines", { + enumerable: true, + get: function get() { + return _line.diffLines; + } +}); +Object.defineProperty(exports, "diffTrimmedLines", { + enumerable: true, + get: function get() { + return _line.diffTrimmedLines; + } +}); +Object.defineProperty(exports, "diffSentences", { + enumerable: true, + get: function get() { + return _sentence.diffSentences; + } +}); +Object.defineProperty(exports, "diffCss", { + enumerable: true, + get: function get() { + return _css.diffCss; + } +}); +Object.defineProperty(exports, "diffJson", { + enumerable: true, + get: function get() { + return _json.diffJson; + } +}); +Object.defineProperty(exports, "canonicalize", { + enumerable: true, + get: function get() { + return _json.canonicalize; + } +}); +Object.defineProperty(exports, "diffArrays", { + enumerable: true, + get: function get() { + return _array.diffArrays; + } +}); +Object.defineProperty(exports, "applyPatch", { + enumerable: true, + get: function get() { + return _apply.applyPatch; + } +}); +Object.defineProperty(exports, "applyPatches", { + enumerable: true, + get: function get() { + return _apply.applyPatches; + } +}); +Object.defineProperty(exports, "parsePatch", { + enumerable: true, + get: function get() { + return _parse.parsePatch; + } +}); +Object.defineProperty(exports, "merge", { + enumerable: true, + get: function get() { + return _merge.merge; + } +}); +Object.defineProperty(exports, "structuredPatch", { + enumerable: true, + get: function get() { + return _create.structuredPatch; + } +}); +Object.defineProperty(exports, "createTwoFilesPatch", { + enumerable: true, + get: function get() { + return _create.createTwoFilesPatch; + } +}); +Object.defineProperty(exports, "createPatch", { + enumerable: true, + get: function get() { + return _create.createPatch; + } +}); +Object.defineProperty(exports, "convertChangesToDMP", { + enumerable: true, + get: function get() { + return _dmp.convertChangesToDMP; + } +}); +Object.defineProperty(exports, "convertChangesToXML", { + enumerable: true, + get: function get() { + return _xml.convertChangesToXML; + } +}); + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_base = _interopRequireDefault(require("./diff/base")) +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_character = require("./diff/character") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_word = require("./diff/word") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_line = require("./diff/line") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_sentence = require("./diff/sentence") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_css = require("./diff/css") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_json = require("./diff/json") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_array = require("./diff/array") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_apply = require("./patch/apply") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_parse = require("./patch/parse") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_merge = require("./patch/merge") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_create = require("./patch/create") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_dmp = require("./convert/dmp") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_xml = require("./convert/xml") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTZWUgTElDRU5TRSBmaWxlIGZvciB0ZXJtcyBvZiB1c2UgKi9cblxuLypcbiAqIFRleHQgZGlmZiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBBUElTOlxuICogSnNEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBKc0RpZmYuZGlmZldvcmRzOiBXb3JkIChhcyBkZWZpbmVkIGJ5IFxcYiByZWdleCkgZGlmZiB3aGljaCBpZ25vcmVzIHdoaXRlc3BhY2VcbiAqIEpzRGlmZi5kaWZmTGluZXM6IExpbmUgYmFzZWQgZGlmZlxuICpcbiAqIEpzRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2gsIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsIGNyZWF0ZVBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGFwcGx5UGF0Y2gsXG4gIGFwcGx5UGF0Y2hlcyxcbiAgcGFyc2VQYXRjaCxcbiAgbWVyZ2UsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ== diff --git a/lib/index.mjs b/lib/index.mjs new file mode 100644 index 000000000..c2a00135a --- /dev/null +++ b/lib/index.mjs @@ -0,0 +1,1561 @@ +function Diff() {} +Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced, or until the edit length exceeds options.maxEditLength (if given), + // in which case it will return undefined. + + + if (callback) { + (function exec() { + setTimeout(function () { + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(''); + }, + join: function join(chars) { + return chars.join(''); + } +}; + +function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; +} + +function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; +} + +var characterDiff = new Diff(); +function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); +} + +function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; +} + +// +// Ranges and exceptions: +// Latin-1 Supplement, 0080–00FF +// - U+00D7 × Multiplication sign +// - U+00F7 ÷ Division sign +// Latin Extended-A, 0100–017F +// Latin Extended-B, 0180–024F +// IPA Extensions, 0250–02AF +// Spacing Modifier Letters, 02B0–02FF +// - U+02C7 ˇ ˇ Caron +// - U+02D8 ˘ ˘ Breve +// - U+02D9 ˙ ˙ Dot Above +// - U+02DA ˚ ˚ Ring Above +// - U+02DB ˛ ˛ Ogonek +// - U+02DC ˜ ˜ Small Tilde +// - U+02DD ˝ ˝ Double Acute Accent +// Latin Extended Additional, 1E00–1EFF + +var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace = /\S/; +var wordDiff = new Diff(); + +wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); +}; + +wordDiff.tokenize = function (value) { + // All whitespace symbols except newline group into one token, each newline - in separate token + 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. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; +}; + +function diffWords(oldStr, newStr, options) { + options = generateOptions(options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); +} +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); +} + +var lineDiff = new Diff(); + +lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; +}; + +function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); +} +function diffTrimmedLines(oldStr, newStr, callback) { + var options = generateOptions(callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); +} + +var sentenceDiff = new Diff(); + +sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; + +function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); +} + +var cssDiff = new Diff(); + +cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); +}; + +function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); +} + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); +} + +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); +} + +function _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); +} + +function _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; +} + +function _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."); +} + +var objectPrototypeToString = Object.prototype.toString; +var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a +// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + +jsonDiff.useLongestToken = true; +jsonDiff.tokenize = lineDiff.tokenize; + +jsonDiff.castInput = function (value) { + var _this$options = this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) { + return typeof v === 'undefined' ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); +}; + +jsonDiff.equals = function (left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); +}; + +function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); +} // This function handles the presence of circular references by bailing out when encountering an +// object that is already on the "stack" of items being processed. Accepts an optional replacer + +function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if (_typeof(obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; +} + +var arrayDiff = new Diff(); + +arrayDiff.tokenize = function (value) { + return value.slice(); +}; + +arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; +}; + +function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); +} + +function parsePatch(uniDiff) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], + newStart: +chunkHeader[3], + newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], + lines: [], + linedelimiters: [] + }; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart += 1; + } + + if (hunk.newLines === 0) { + hunk.newStart += 1; + } + + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; +} + +// Iterator that traverses in the range of [min, max], stepping +// by distance from a given start position. I.e. for [0, 4], with +// start of 2, this will iterate 2, 3, 1, 4, 0. +function distanceIterator (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; +} + +function applyPatch(source, uniDiff) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) { + return line === patchContent; + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = distanceIterator(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); +} // Wrapper that supports multiple file patches via callbacks. + +function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); +} + +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = diffLines(oldStr, newStr, options); + + if (!diff) { + return; + } + + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + var _loop = function _loop(i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + var _curRange; + + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + var _curRange2; + + // Overlapping + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + // however, if the old file is empty, do not output the no-nl line + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + _loop(i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; +} +function formatPatch(diff) { + var ret = []; + + if (diff.oldFileName == diff.newFileName) { + ret.push('Index: ' + diff.oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; +} +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} + +function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); +} +function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; +} + +function calcLineCount(hunk) { + var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } +} +function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; +} + +function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return parsePatch(param)[0]; + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return structuredPatch(undefined, undefined, base, param); + } + + return param; +} + +function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; +} + +function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } +} + +function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; +} + +function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; +} + +function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + var _hunk$lines; + + // Mine inserted + (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + var _hunk$lines2; + + // Theirs inserted + (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); +} + +function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + var _hunk$lines3; + + (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges)); + + return; + } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + var _hunk$lines4; + + (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges)); + + return; + } + } else if (arrayEqual(myChanges, theirChanges)) { + var _hunk$lines5; + + (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); +} + +function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + var _hunk$lines6; + + (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } +} + +function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); +} + +function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } +} + +function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } +} + +function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; +} + +function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; +} + +function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); +} + +function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; +} + +function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; +} + +// See: http://code.google.com/p/google-diff-match-patch/wiki/API +function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; +} + +function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); +} + +function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; +} + +export { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, merge, parsePatch, structuredPatch }; diff --git a/lib/patch/apply.js b/lib/patch/apply.js new file mode 100644 index 000000000..21c76ddb7 --- /dev/null +++ b/lib/patch/apply.js @@ -0,0 +1,238 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.applyPatch = applyPatch; +exports.applyPatches = applyPatches; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_parse = require("./parse") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_distanceIterator = _interopRequireDefault(require("../util/distance-iterator")) +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/*istanbul ignore end*/ +function applyPatch(source, uniDiff) { + /*istanbul ignore start*/ + var + /*istanbul ignore end*/ + options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _parse + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + parsePatch) + /*istanbul ignore end*/ + (uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + line === patchContent + ); + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _distanceIterator + /*istanbul ignore end*/ + [ + /*istanbul ignore start*/ + "default" + /*istanbul ignore end*/ + ])(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); +} // Wrapper that supports multiple file patches via callbacks. + + +function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _parse + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + parsePatch) + /*istanbul ignore end*/ + (uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0JBLElBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osT0FBZCxDQUFKLEVBQTRCO0FBQzFCLFFBQUlBLE9BQU8sQ0FBQ0ssTUFBUixHQUFpQixDQUFyQixFQUF3QjtBQUN0QixZQUFNLElBQUlDLEtBQUosQ0FBVSw0Q0FBVixDQUFOO0FBQ0Q7O0FBRUROLElBQUFBLE9BQU8sR0FBR0EsT0FBTyxDQUFDLENBQUQsQ0FBakI7QUFDRCxHQVh1RCxDQWF4RDs7O0FBQ0EsTUFBSU8sS0FBSyxHQUFHUixNQUFNLENBQUNTLEtBQVAsQ0FBYSxxQkFBYixDQUFaO0FBQUEsTUFDSUMsVUFBVSxHQUFHVixNQUFNLENBQUNXLEtBQVAsQ0FBYSxzQkFBYixLQUF3QyxFQUR6RDtBQUFBLE1BRUlDLEtBQUssR0FBR1gsT0FBTyxDQUFDVyxLQUZwQjtBQUFBLE1BSUlDLFdBQVcsR0FBR1gsT0FBTyxDQUFDVyxXQUFSLElBQXdCLFVBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsU0FBbkIsRUFBOEJDLFlBQTlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0NGLE1BQUFBLElBQUksS0FBS0U7QUFBeEQ7QUFBQSxHQUoxQztBQUFBLE1BS0lDLFVBQVUsR0FBRyxDQUxqQjtBQUFBLE1BTUlDLFVBQVUsR0FBR2pCLE9BQU8sQ0FBQ2lCLFVBQVIsSUFBc0IsQ0FOdkM7QUFBQSxNQU9JQyxPQUFPLEdBQUcsQ0FQZDtBQUFBLE1BUUlDLE1BQU0sR0FBRyxDQVJiO0FBQUEsTUFVSUMsV0FWSjtBQUFBLE1BV0lDLFFBWEo7QUFhQTs7Ozs7QUFHQSxXQUFTQyxRQUFULENBQWtCQyxJQUFsQixFQUF3QkMsS0FBeEIsRUFBK0I7QUFDN0IsU0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNqQixLQUFMLENBQVdGLE1BQS9CLEVBQXVDcUIsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQyxVQUFJWixJQUFJLEdBQUdVLElBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQVgsQ0FBWDtBQUFBLFVBQ0lYLFNBQVMsR0FBSUQsSUFBSSxDQUFDVCxNQUFMLEdBQWMsQ0FBZCxHQUFrQlMsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEIsR0FEN0M7QUFBQSxVQUVJYSxPQUFPLEdBQUliLElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQ2MsTUFBTCxDQUFZLENBQVosQ0FBbEIsR0FBbUNkLElBRmxEOztBQUlBLFVBQUlDLFNBQVMsS0FBSyxHQUFkLElBQXFCQSxTQUFTLEtBQUssR0FBdkMsRUFBNEM7QUFDMUM7QUFDQSxZQUFJLENBQUNILFdBQVcsQ0FBQ2EsS0FBSyxHQUFHLENBQVQsRUFBWWxCLEtBQUssQ0FBQ2tCLEtBQUQsQ0FBakIsRUFBMEJWLFNBQTFCLEVBQXFDWSxPQUFyQyxDQUFoQixFQUErRDtBQUM3RFYsVUFBQUEsVUFBVTs7QUFFVixjQUFJQSxVQUFVLEdBQUdDLFVBQWpCLEVBQTZCO0FBQzNCLG1CQUFPLEtBQVA7QUFDRDtBQUNGOztBQUNETyxRQUFBQSxLQUFLO0FBQ047QUFDRjs7QUFFRCxXQUFPLElBQVA7QUFDRCxHQWxEdUQsQ0FvRHhEOzs7QUFDQSxPQUFLLElBQUlJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdsQixLQUFLLENBQUNOLE1BQTFCLEVBQWtDd0IsQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJTCxJQUFJLEdBQUdiLEtBQUssQ0FBQ2tCLENBQUQsQ0FBaEI7QUFBQSxRQUNJQyxPQUFPLEdBQUd2QixLQUFLLENBQUNGLE1BQU4sR0FBZW1CLElBQUksQ0FBQ08sUUFEbEM7QUFBQSxRQUVJQyxXQUFXLEdBQUcsQ0FGbEI7QUFBQSxRQUdJUCxLQUFLLEdBQUdMLE1BQU0sR0FBR0ksSUFBSSxDQUFDUyxRQUFkLEdBQXlCLENBSHJDO0FBS0EsUUFBSUMsUUFBUTtBQUFHO0FBQUE7QUFBQTs7QUFBQUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsT0FBaUJWLEtBQWpCLEVBQXdCTixPQUF4QixFQUFpQ1csT0FBakMsQ0FBZjs7QUFFQSxXQUFPRSxXQUFXLEtBQUtJLFNBQXZCLEVBQWtDSixXQUFXLEdBQUdFLFFBQVEsRUFBeEQsRUFBNEQ7QUFDMUQsVUFBSVgsUUFBUSxDQUFDQyxJQUFELEVBQU9DLEtBQUssR0FBR08sV0FBZixDQUFaLEVBQXlDO0FBQ3ZDUixRQUFBQSxJQUFJLENBQUNKLE1BQUwsR0FBY0EsTUFBTSxJQUFJWSxXQUF4QjtBQUNBO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQSxXQUFXLEtBQUtJLFNBQXBCLEVBQStCO0FBQzdCLGFBQU8sS0FBUDtBQUNELEtBakJvQyxDQW1CckM7QUFDQTs7O0FBQ0FqQixJQUFBQSxPQUFPLEdBQUdLLElBQUksQ0FBQ0osTUFBTCxHQUFjSSxJQUFJLENBQUNTLFFBQW5CLEdBQThCVCxJQUFJLENBQUNPLFFBQTdDO0FBQ0QsR0EzRXVELENBNkV4RDs7O0FBQ0EsTUFBSU0sVUFBVSxHQUFHLENBQWpCOztBQUNBLE9BQUssSUFBSVIsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBR2xCLEtBQUssQ0FBQ04sTUFBMUIsRUFBa0N3QixFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlMLEtBQUksR0FBR2IsS0FBSyxDQUFDa0IsRUFBRCxDQUFoQjtBQUFBLFFBQ0lKLE1BQUssR0FBR0QsS0FBSSxDQUFDUyxRQUFMLEdBQWdCVCxLQUFJLENBQUNKLE1BQXJCLEdBQThCaUIsVUFBOUIsR0FBMkMsQ0FEdkQ7O0FBRUFBLElBQUFBLFVBQVUsSUFBSWIsS0FBSSxDQUFDYyxRQUFMLEdBQWdCZCxLQUFJLENBQUNPLFFBQW5DOztBQUVBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsS0FBSSxDQUFDakIsS0FBTCxDQUFXRixNQUEvQixFQUF1Q3FCLENBQUMsRUFBeEMsRUFBNEM7QUFDMUMsVUFBSVosSUFBSSxHQUFHVSxLQUFJLENBQUNqQixLQUFMLENBQVdtQixDQUFYLENBQVg7QUFBQSxVQUNJWCxTQUFTLEdBQUlELElBQUksQ0FBQ1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCLEdBRDdDO0FBQUEsVUFFSWEsT0FBTyxHQUFJYixJQUFJLENBQUNULE1BQUwsR0FBYyxDQUFkLEdBQWtCUyxJQUFJLENBQUNjLE1BQUwsQ0FBWSxDQUFaLENBQWxCLEdBQW1DZCxJQUZsRDtBQUFBLFVBR0l5QixTQUFTLEdBQUdmLEtBQUksQ0FBQ2dCLGNBQUwsQ0FBb0JkLENBQXBCLENBSGhCOztBQUtBLFVBQUlYLFNBQVMsS0FBSyxHQUFsQixFQUF1QjtBQUNyQlUsUUFBQUEsTUFBSztBQUNOLE9BRkQsTUFFTyxJQUFJVixTQUFTLEtBQUssR0FBbEIsRUFBdUI7QUFDNUJSLFFBQUFBLEtBQUssQ0FBQ2tDLE1BQU4sQ0FBYWhCLE1BQWIsRUFBb0IsQ0FBcEI7QUFDQWhCLFFBQUFBLFVBQVUsQ0FBQ2dDLE1BQVgsQ0FBa0JoQixNQUFsQixFQUF5QixDQUF6QjtBQUNGO0FBQ0MsT0FKTSxNQUlBLElBQUlWLFNBQVMsS0FBSyxHQUFsQixFQUF1QjtBQUM1QlIsUUFBQUEsS0FBSyxDQUFDa0MsTUFBTixDQUFhaEIsTUFBYixFQUFvQixDQUFwQixFQUF1QkUsT0FBdkI7QUFDQWxCLFFBQUFBLFVBQVUsQ0FBQ2dDLE1BQVgsQ0FBa0JoQixNQUFsQixFQUF5QixDQUF6QixFQUE0QmMsU0FBNUI7QUFDQWQsUUFBQUEsTUFBSztBQUNOLE9BSk0sTUFJQSxJQUFJVixTQUFTLEtBQUssSUFBbEIsRUFBd0I7QUFDN0IsWUFBSTJCLGlCQUFpQixHQUFHbEIsS0FBSSxDQUFDakIsS0FBTCxDQUFXbUIsQ0FBQyxHQUFHLENBQWYsSUFBb0JGLEtBQUksQ0FBQ2pCLEtBQUwsQ0FBV21CLENBQUMsR0FBRyxDQUFmLEVBQWtCLENBQWxCLENBQXBCLEdBQTJDLElBQW5FOztBQUNBLFlBQUlnQixpQkFBaUIsS0FBSyxHQUExQixFQUErQjtBQUM3QnJCLFVBQUFBLFdBQVcsR0FBRyxJQUFkO0FBQ0QsU0FGRCxNQUVPLElBQUlxQixpQkFBaUIsS0FBSyxHQUExQixFQUErQjtBQUNwQ3BCLFVBQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0Q7QUFDRjtBQUNGO0FBQ0YsR0E3R3VELENBK0d4RDs7O0FBQ0EsTUFBSUQsV0FBSixFQUFpQjtBQUNmLFdBQU8sQ0FBQ2QsS0FBSyxDQUFDQSxLQUFLLENBQUNGLE1BQU4sR0FBZSxDQUFoQixDQUFiLEVBQWlDO0FBQy9CRSxNQUFBQSxLQUFLLENBQUNvQyxHQUFOO0FBQ0FsQyxNQUFBQSxVQUFVLENBQUNrQyxHQUFYO0FBQ0Q7QUFDRixHQUxELE1BS08sSUFBSXJCLFFBQUosRUFBYztBQUNuQmYsSUFBQUEsS0FBSyxDQUFDcUMsSUFBTixDQUFXLEVBQVg7QUFDQW5DLElBQUFBLFVBQVUsQ0FBQ21DLElBQVgsQ0FBZ0IsSUFBaEI7QUFDRDs7QUFDRCxPQUFLLElBQUlDLEVBQUUsR0FBRyxDQUFkLEVBQWlCQSxFQUFFLEdBQUd0QyxLQUFLLENBQUNGLE1BQU4sR0FBZSxDQUFyQyxFQUF3Q3dDLEVBQUUsRUFBMUMsRUFBOEM7QUFDNUN0QyxJQUFBQSxLQUFLLENBQUNzQyxFQUFELENBQUwsR0FBWXRDLEtBQUssQ0FBQ3NDLEVBQUQsQ0FBTCxHQUFZcEMsVUFBVSxDQUFDb0MsRUFBRCxDQUFsQztBQUNEOztBQUNELFNBQU90QyxLQUFLLENBQUN1QyxJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTQyxZQUFULENBQXNCL0MsT0FBdEIsRUFBK0JDLE9BQS9CLEVBQXdDO0FBQzdDLE1BQUksT0FBT0QsT0FBUCxLQUFtQixRQUF2QixFQUFpQztBQUMvQkEsSUFBQUEsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQUU7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEtBQVdGLE9BQVgsQ0FBVjtBQUNEOztBQUVELE1BQUlnRCxZQUFZLEdBQUcsQ0FBbkI7O0FBQ0EsV0FBU0MsWUFBVCxHQUF3QjtBQUN0QixRQUFJQyxLQUFLLEdBQUdsRCxPQUFPLENBQUNnRCxZQUFZLEVBQWIsQ0FBbkI7O0FBQ0EsUUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixhQUFPakQsT0FBTyxDQUFDa0QsUUFBUixFQUFQO0FBQ0Q7O0FBRURsRCxJQUFBQSxPQUFPLENBQUNtRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFRCxVQUFJRSxjQUFjLEdBQUd6RCxVQUFVLENBQUN3RCxJQUFELEVBQU9KLEtBQVAsRUFBY2pELE9BQWQsQ0FBL0I7QUFDQUEsTUFBQUEsT0FBTyxDQUFDdUQsT0FBUixDQUFnQk4sS0FBaEIsRUFBdUJLLGNBQXZCLEVBQXVDLFVBQVNGLEdBQVQsRUFBYztBQUNuRCxZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFREosUUFBQUEsWUFBWTtBQUNiLE9BTkQ7QUFPRCxLQWJEO0FBY0Q7O0FBQ0RBLEVBQUFBLFlBQVk7QUFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19 diff --git a/lib/patch/create.js b/lib/patch/create.js new file mode 100644 index 000000000..1d3b4c303 --- /dev/null +++ b/lib/patch/create.js @@ -0,0 +1,272 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.structuredPatch = structuredPatch; +exports.formatPatch = formatPatch; +exports.createTwoFilesPatch = createTwoFilesPatch; +exports.createPatch = createPatch; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_line = require("../diff/line") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _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."); } + +function _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); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _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; } + +/*istanbul ignore end*/ +function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _line + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + diffLines) + /*istanbul ignore end*/ + (oldStr, newStr, options); + + if (!diff) { + return; + } + + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + /*istanbul ignore start*/ + var _loop = function _loop( + /*istanbul ignore end*/ + i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + /*istanbul ignore start*/ + var _curRange; + + /*istanbul ignore end*/ + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_curRange = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + /*istanbul ignore start*/ + var _curRange2; + + /*istanbul ignore end*/ + // Overlapping + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_curRange2 = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange2 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + contextLines(lines))); + } else { + /*istanbul ignore start*/ + var _curRange3; + + /*istanbul ignore end*/ + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_curRange3 = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange3 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + // however, if the old file is empty, do not output the no-nl line + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + /*istanbul ignore start*/ + _loop( + /*istanbul ignore end*/ + i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; +} + +function formatPatch(diff) { + var ret = []; + + if (diff.oldFileName == diff.newFileName) { + ret.push('Index: ' + diff.oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart -= 1; + } + + if (hunk.newLines === 0) { + hunk.newStart -= 1; + } + + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; +} + +function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); +} + +function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsInJldCIsImFwcGx5Iiwiam9pbiIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtBQTJCLFdBQS9CLEVBQTRDO0FB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IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ== diff --git a/lib/patch/merge.js b/lib/patch/merge.js new file mode 100644 index 000000000..b46faaaba --- /dev/null +++ b/lib/patch/merge.js @@ -0,0 +1,613 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.calcLineCount = calcLineCount; +exports.merge = merge; + +/*istanbul ignore end*/ +var +/*istanbul ignore start*/ +_create = require("./create") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_parse = require("./parse") +/*istanbul ignore end*/ +; + +var +/*istanbul ignore start*/ +_array = require("../util/array") +/*istanbul ignore end*/ +; + +/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _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."); } + +function _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); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _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; } + +/*istanbul ignore end*/ +function calcLineCount(hunk) { + /*istanbul ignore start*/ + var _calcOldNewLineCount = + /*istanbul ignore end*/ + calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } +} + +function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; +} + +function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _parse + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + parsePatch) + /*istanbul ignore end*/ + (param)[0] + ); + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _create + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + structuredPatch) + /*istanbul ignore end*/ + (undefined, undefined, base, param) + ); + } + + return param; +} + +function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; +} + +function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } +} + +function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; +} + +function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; +} + +function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + /*istanbul ignore start*/ + var _hunk$lines; + + /*istanbul ignore end*/ + // Mine inserted + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + /*istanbul ignore start*/ + var _hunk$lines2; + + /*istanbul ignore end*/ + // Theirs inserted + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines2 = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines2 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); +} + +function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _array + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + arrayStartsWith) + /*istanbul ignore end*/ + (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + /*istanbul ignore start*/ + var _hunk$lines3; + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines3 = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines3 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + myChanges)); + + return; + } else if ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _array + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + arrayStartsWith) + /*istanbul ignore end*/ + (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + /*istanbul ignore start*/ + var _hunk$lines4; + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines4 = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines4 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + theirChanges)); + + return; + } + } else if ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + _array + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + arrayEqual) + /*istanbul ignore end*/ + (myChanges, theirChanges)) { + /*istanbul ignore start*/ + var _hunk$lines5; + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines5 = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines5 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); +} + +function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + /*istanbul ignore start*/ + var _hunk$lines6; + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + + /*istanbul ignore end*/ + + /*istanbul ignore start*/ + (_hunk$lines6 = + /*istanbul ignore end*/ + hunk.lines).push.apply( + /*istanbul ignore start*/ + _hunk$lines6 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } +} + +function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); +} + +function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } +} + +function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } +} + +function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; +} + +function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; +} + +function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); +} + +function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; +} + +function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndDLENBTXhDO0FBQ0E7QUFDQTs7QUFDQSxNQUFJSixJQUFJLENBQUNLLEtBQUwsSUFBY0osTUFBTSxDQUFDSSxLQUF6QixFQUFnQztBQUM5QkQsSUFBQUEsR0FBRyxDQUFDQyxLQUFKLEdBQVlMLElBQUksQ0FBQ0ssS0FBTCxJQUFjSixNQUFNLENBQUNJLEtBQWpDO0FBQ0Q7O0FBRUQsTUFBSUwsSUFBSSxDQUFDTSxXQUFMLElBQW9CTCxNQUFNLENBQUNLLFdBQS9CLEVBQTRDO0FBQzFDLFFBQUksQ0FBQ0MsZUFBZSxDQUFDUCxJQUFELENBQXBCLEVBQTRCO0FBQzFCO0FBQ0FJLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlAsTUFBTSxDQUFDTyxXQUFQLElBQXNCUixJQUFJLENBQUNRLFdBQTdDO0FBQ0FKLE1BQUFBLEdBQUcsQ0FBQ0UsV0FBSixHQUFrQkwsTUFBTSxDQUFDSyxXQUFQLElBQXNCTixJQUFJLENBQUNNLFdBQTdDO0FBQ0FGLE1BQUFBLEdBQUcsQ0FBQ0ssU0FBSixHQUFnQlIsTUFBTSxDQUFDUSxTQUFQLElBQW9CVCxJQUFJLENBQUNTLFNBQXpDO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlQsTUFBTSxDQUFDUyxTQUFQLElBQW9CVixJQUFJLENBQUNVLFNBQXpDO0FBQ0QsS0FORCxNQU1PLElBQUksQ0FBQ0gsZUFBZSxDQUFDTixNQUFELENBQXBCLEVBQThCO0FBQ25DO0FBQ0FHLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlIsSUFBSSxDQUFDUSxXQUF2QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JOLElBQUksQ0FBQ00sV0FBdkI7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCVCxJQUFJLENBQUNTLFNBQXJCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlYsSUFBSSxDQUFDVSxTQUFyQjtBQUNELEtBTk0sTUFNQTtBQUNMO0FBQ0FOLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQkcsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1EsV0FBWCxFQUF3QlAsTUFBTSxDQUFDTyxXQUEvQixDQUE3QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JLLFdBQVcsQ0FBQ1AsR0FBRCxFQUFNSixJQUFJLENBQUNNLFdBQVgsRUFBd0JMLE1BQU0sQ0FBQ0ssV0FBL0IsQ0FBN0I7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCRSxXQUFXLENBQUNQLEdBQUQsRUFBTUosSUFBSSxDQUFDUyxTQUFYLEVBQXNCUixNQUFNLENBQUNRLFNBQTdCLENBQTNCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQkMsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1UsU0FBWCxFQUFzQlQsTUFBTSxDQUFDUyxTQUE3QixDQUEzQjtBQUNEO0FBQ0Y7O0FBRUROLEVBQUFBLEdBQUcsQ0FBQ1EsS0FBSixHQUFZLEVBQVo7QUFFQSxNQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFBQSxNQUNJQyxXQUFXLEdBQUcsQ0FEbEI7QUFBQSxNQUVJQyxVQUFVLEdBQUcsQ0FGakI7QUFBQSxNQUdJQyxZQUFZLEdBQUcsQ0FIbkI7O0FBS0EsU0FBT0gsU0FBUyxHQUFHYixJQUFJLENBQUNZLEtBQUwsQ0FBV0ssTUFBdkIsSUFBaUNILFdBQVcsR0FBR2IsTUFBTSxDQUFDVyxLQUFQLENBQWFLLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlDLFdBQVcsR0FBR2xCLElBQUksQ0FBQ1ksS0FBTCxDQUFXQyxTQUFYLEtBQXlCO0FBQUNNLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQUEzQztBQUFBLFFBQ0lDLGFBQWEsR0FBR3BCLE1BQU0sQ0FBQ1csS0FBUCxDQUFhRSxXQUFiLEtBQTZCO0FBQUNLLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQURqRDs7QUFHQSxRQUFJRSxVQUFVLENBQUNKLFdBQUQsRUFBY0csYUFBZCxDQUFkLEVBQTRDO0FBQzFDO0FBQ0FqQixNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlQyxTQUFTLENBQUNOLFdBQUQsRUFBY0gsVUFBZCxDQUF4QjtBQUNBRixNQUFBQSxTQUFTO0FBQ1RHLE1BQUFBLFlBQVksSUFBSUUsV0FBVyxDQUFDckIsUUFBWixHQUF1QnFCLFdBQVcsQ0FBQ3RCLFFBQW5EO0FBQ0QsS0FMRCxNQUtPLElBQUkwQixVQUFVLENBQUNELGFBQUQsRUFBZ0JILFdBQWhCLENBQWQsRUFBNEM7QUFDakQ7QUFDQWQsTUFBQUEsR0FBRyxDQUFDUSxLQUFKLENBQVVXLElBQVYsQ0FBZUMsU0FBUyxDQUFDSCxhQUFELEVBQWdCTCxZQUFoQixDQUF4QjtBQUNBRixNQUFBQSxXQUFXO0FBQ1hDLE1BQUFBLFVBQVUsSUFBSU0sYUFBYSxDQUFDeEIsUUFBZCxHQUF5QndCLGFBQWEsQ0FBQ3pCLFFBQXJEO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQSxVQUFJNkIsVUFBVSxHQUFHO0FBQ2ZOLFFBQUFBLFFBQVEsRUFBRU8sSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ0MsUUFBckIsRUFBK0JFLGFBQWEsQ0FBQ0YsUUFBN0MsQ0FESztBQUVmdkIsUUFBQUEsUUFBUSxFQUFFLENBRks7QUFHZmdDLFFBQUFBLFFBQVEsRUFBRUYsSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ1UsUUFBWixHQUF1QmIsVUFBaEMsRUFBNENNLGFBQWEsQ0FBQ0YsUUFBZCxHQUF5QkgsWUFBckUsQ0FISztBQUlmbkIsUUFBQUEsUUFBUSxFQUFFLENBSks7QUFLZkYsUUFBQUEsS0FBSyxFQUFFO0FBTFEsT0FBakI7QUFPQWtDLE1BQUFBLFVBQVUsQ0FBQ0osVUFBRCxFQUFhUCxXQUFXLENBQUNDLFFBQXpCLEVBQW1DRCxXQUFXLENBQUN2QixLQUEvQyxFQUFzRDBCLGFBQWEsQ0FBQ0YsUUFBcEUsRUFBOEVFLGFBQWEsQ0FBQzFCLEtBQTVGLENBQVY7QUFDQW1CLE1BQUFBLFdBQVc7QUFDWEQsTUFBQUEsU0FBUztBQUVUVCxNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlRSxVQUFmO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPckIsR0FBUDtBQUNEOztBQUVELFNBQVNELFNBQVQsQ0FBbUIyQixLQUFuQixFQUEwQjVCLElBQTFCLEVBQWdDO0FBQzlCLE1BQUksT0FBTzRCLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0IsUUFBSyxNQUFELENBQVNDLElBQVQsQ0FBY0QsS0FBZCxLQUEwQixVQUFELENBQWFDLElBQWIsQ0FBa0JELEtBQWxCLENBQTdCLEVBQXdEO0FBQ3RELGFBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxTQUFXRixLQUFYLEVBQWtCLENBQWxCO0FBQVA7QUFDRDs7QUFFRCxRQUFJLENBQUM1QixJQUFMLEVBQVc7QUFDVCxZQUFNLElBQUkrQixLQUFKLENBQVUsa0RBQVYsQ0FBTjtBQUNEOztBQUNELFdBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxPQUFnQnBDLFNBQWhCLEVBQTJCQSxTQUEzQixFQUFzQ0ksSUFBdEMsRUFBNEM0QixLQUE1QztBQUFQO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNEOztBQUVELFNBQVN2QixlQUFULENBQXlCNEIsS0FBekIsRUFBZ0M7QUFDOUIsU0FBT0EsS0FBSyxDQUFDN0IsV0FBTixJQUFxQjZCLEtBQUssQ0FBQzdCLFdBQU4sS0FBc0I2QixLQUFLLENBQUMzQixXQUF4RDtBQUNEOztBQUVELFNBQVNHLFdBQVQsQ0FBcUJOLEtBQXJCLEVBQTRCTCxJQUE1QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsTUFBSUQsSUFBSSxLQUFLQyxNQUFiLEVBQXFCO0FBQ25CLFdBQU9ELElBQVA7QUFDRCxHQUZELE1BRU87QUFDTEssSUFBQUEsS0FBSyxDQUFDK0IsUUFBTixHQUFpQixJQUFqQjtBQUNBLFdBQU87QUFBQ3BDLE1BQUFBLElBQUksRUFBSkEsSUFBRDtBQUFPQyxNQUFBQSxNQUFNLEVBQU5BO0FBQVAsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU3FCLFVBQVQsQ0FBb0JTLElBQXBCLEVBQTBCTSxLQUExQixFQUFpQztBQUMvQixTQUFPTixJQUFJLENBQUNaLFFBQUwsR0FBZ0JrQixLQUFLLENBQUNsQixRQUF0QixJQUNEWSxJQUFJLENBQUNaLFFBQUwsR0FBZ0JZLElBQUksQ0FBQ25DLFFBQXRCLEdBQWtDeUMsS0FBSyxDQUFDbEIsUUFEN0M7QUFFRDs7QUFFRCxTQUFTSyxTQUFULENBQW1CL0IsSUFBbkIsRUFBeUI2QyxNQUF6QixFQUFpQztBQUMvQixTQUFPO0FBQ0xuQixJQUFBQSxRQUFRLEVBQUUxQixJQUFJLENBQUMwQixRQURWO0FBQ29CdkIsSUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNHLFFBRG5DO0FBRUxnQyxJQUFBQSxRQUFRLEVBQUVuQyxJQUFJLENBQUNtQyxRQUFMLEdBQWdCVSxNQUZyQjtBQUU2QnpDLElBQUFBLFFBQVEsRUFBRUosSUFBSSxDQUFDSSxRQUY1QztBQUdMRixJQUFBQSxLQUFLLEVBQUVGLElBQUksQ0FBQ0U7QUFIUCxHQUFQO0FBS0Q7O0FBRUQsU0FBU2tDLFVBQVQsQ0FBb0JwQyxJQUFwQixFQUEwQnNCLFVBQTFCLEVBQXNDd0IsU0FBdEMsRUFBaURDLFdBQWpELEVBQThEQyxVQUE5RCxFQUEwRTtBQUN4RTtBQUNBO0FBQ0EsTUFBSXpDLElBQUksR0FBRztBQUFDc0MsSUFBQUEsTUFBTSxFQUFFdkIsVUFBVDtBQUFxQnBCLElBQUFBLEtBQUssRUFBRTRDLFNBQTVCO0FBQXVDbEMsSUFBQUEsS0FBSyxFQUFFO0FBQTlDLEdBQVg7QUFBQSxNQUNJcUMsS0FBSyxHQUFHO0FBQUNKLElBQUFBLE1BQU0sRUFBRUUsV0FBVDtBQUFzQjdDLElBQUFBLEtBQUssRUFBRThDLFVBQTdCO0FBQXlDcEMsSUFBQUEsS0FBSyxFQUFFO0FBQWhELEdBRFosQ0FId0UsQ0FNeEU7O0FBQ0FzQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBYjtBQUNBQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9pRCxLQUFQLEVBQWMxQyxJQUFkLENBQWIsQ0FSd0UsQ0FVeEU7O0FBQ0EsU0FBT0EsSUFBSSxDQUFDSyxLQUFMLEdBQWFMLElBQUksQ0FBQ0wsS0FBTCxDQUFXc0IsTUFBeEIsSUFBa0N5QixLQUFLLENBQUNyQyxLQUFOLEdBQWNxQyxLQUFLLENBQUMvQyxLQUFOLENBQVlzQixNQUFuRSxFQUEyRTtBQUN6RSxRQUFJQyxXQUFXLEdBQUdsQixJQUFJLENBQUNMLEtBQUwsQ0FBV0ssSUFBSSxDQUFDSyxLQUFoQixDQUFsQjtBQUFBLFFBQ0l1QyxZQUFZLEdBQUdGLEtBQUssQ0FBQy9DLEtBQU4sQ0FBWStDLEtBQUssQ0FBQ3JDLEtBQWxCLENBRG5COztBQUdBLFFBQUksQ0FBQ2EsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFuQixJQUEwQkEsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUE5QyxNQUNJMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFwQixJQUEyQkEsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQURuRCxDQUFKLEVBQzZEO0FBQzNEO0FBQ0FDLE1BQUFBLFlBQVksQ0FBQ3BELElBQUQsRUFBT08sSUFBUCxFQUFhMEMsS0FBYixDQUFaO0FBQ0QsS0FKRCxNQUlPLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUFBO0FBQUE7O0FBQUE7QUFDNUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFuRCxNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQnVCLE1BQUFBLGFBQWEsQ0FBQzlDLElBQUQsQ0FBakM7QUFDRCxLQUhNLE1BR0EsSUFBSTRDLFlBQVksQ0FBQyxDQUFELENBQVosS0FBb0IsR0FBcEIsSUFBMkIxQixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQWxELEVBQXVEO0FBQUE7QUFBQTs7QUFBQTtBQUM1RDs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXpCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CdUIsTUFBQUEsYUFBYSxDQUFDSixLQUFELENBQWpDO0FBQ0QsS0FITSxNQUdBLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBRyxNQUFBQSxPQUFPLENBQUN0RCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBUDtBQUNELEtBSE0sTUFHQSxJQUFJRSxZQUFZLENBQUMsQ0FBRCxDQUFaLEtBQW9CLEdBQXBCLElBQTJCMUIsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBNkIsTUFBQUEsT0FBTyxDQUFDdEQsSUFBRCxFQUFPaUQsS0FBUCxFQUFjMUMsSUFBZCxFQUFvQixJQUFwQixDQUFQO0FBQ0QsS0FITSxNQUdBLElBQUlrQixXQUFXLEtBQUswQixZQUFwQixFQUFrQztBQUN2QztBQUNBbkQsTUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCTCxXQUFoQjtBQUNBbEIsTUFBQUEsSUFBSSxDQUFDSyxLQUFMO0FBQ0FxQyxNQUFBQSxLQUFLLENBQUNyQyxLQUFOO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQStCLE1BQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3FELGFBQWEsQ0FBQzlDLElBQUQsQ0FBcEIsRUFBNEI4QyxhQUFhLENBQUNKLEtBQUQsQ0FBekMsQ0FBUjtBQUNEO0FBQ0YsR0F4Q3VFLENBMEN4RTs7O0FBQ0FNLEVBQUFBLGNBQWMsQ0FBQ3ZELElBQUQsRUFBT08sSUFBUCxDQUFkO0FBQ0FnRCxFQUFBQSxjQUFjLENBQUN2RCxJQUFELEVBQU9pRCxLQUFQLENBQWQ7QUFFQWxELEVBQUFBLGFBQWEsQ0FBQ0MsSUFBRCxDQUFiO0FBQ0Q7O0FBRUQsU0FBU29ELFlBQVQsQ0FBc0JwRCxJQUF0QixFQUE0Qk8sSUFBNUIsRUFBa0MwQyxLQUFsQyxFQUF5QztBQUN2QyxNQUFJTyxTQUFTLEdBQUdILGFBQWEsQ0FBQzlDLElBQUQsQ0FBN0I7QUFBQSxNQUNJa0QsWUFBWSxHQUFHSixhQUFhLENBQUNKLEtBQUQsQ0FEaEM7O0FBR0EsTUFBSVMsVUFBVSxDQUFDRixTQUFELENBQVYsSUFBeUJFLFVBQVUsQ0FBQ0QsWUFBRCxDQUF2QyxFQUF1RDtBQUNyRDtBQUNBO0FBQUk7QUFBQTtBQUFBOztBQUFBRTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsS0FBZ0JILFNBQWhCLEVBQTJCQyxZQUEzQixLQUNHRyxrQkFBa0IsQ0FBQ1gsS0FBRCxFQUFRTyxTQUFSLEVBQW1CQSxTQUFTLENBQUNoQyxNQUFWLEdBQW1CaUMsWUFBWSxDQUFDakMsTUFBbkQsQ0FEekIsRUFDcUY7QUFBQTtBQUFBOztBQUFBOztBQUNuRjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXhCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMEIsTUFBQUEsU0FBcEI7O0FBQ0E7QUFDRCxLQUpELE1BSU87QUFBSTtBQUFBO0FBQUE7O0FBQUFHO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFnQkYsWUFBaEIsRUFBOEJELFNBQTlCLEtBQ0pJLGtCQUFrQixDQUFDckQsSUFBRCxFQUFPa0QsWUFBUCxFQUFxQkEsWUFBWSxDQUFDakMsTUFBYixHQUFzQmdDLFNBQVMsQ0FBQ2hDLE1BQXJELENBRGxCLEVBQ2dGO0FBQUE7QUFBQTs7QUFBQTs7QUFDckY7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF4QixNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjJCLE1BQUFBLFlBQXBCOztBQUNBO0FBQ0Q7QUFDRixHQVhELE1BV087QUFBSTtBQUFBO0FBQUE7O0FBQUFJO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFXTCxTQUFYLEVBQXNCQyxZQUF0QixDQUFKLEVBQXlDO0FBQUE7QUFBQTs7QUFBQTs7QUFDOUM7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF6RCxJQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjBCLElBQUFBLFNBQXBCOztBQUNBO0FBQ0Q7O0FBRURiLEVBQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3dELFNBQVAsRUFBa0JDLFlBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFTSCxPQUFULENBQWlCdEQsSUFBakIsRUFBdUJPLElBQXZCLEVBQTZCMEMsS0FBN0IsRUFBb0NhLElBQXBDLEVBQTBDO0FBQ3hDLE1BQUlOLFNBQVMsR0FBR0gsYUFBYSxDQUFDOUMsSUFBRCxDQUE3QjtBQUFBLE1BQ0lrRCxZQUFZLEdBQUdNLGNBQWMsQ0FBQ2QsS0FBRCxFQUFRTyxTQUFSLENBRGpDOztBQUVBLE1BQUlDLFlBQVksQ0FBQ08sTUFBakIsRUFBeUI7QUFBQTtBQUFBOztBQUFBOztBQUN2Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQWhFLElBQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMkIsSUFBQUEsWUFBWSxDQUFDTyxNQUFqQztBQUNELEdBRkQsTUFFTztBQUNMckIsSUFBQUEsUUFBUSxDQUFDM0MsSUFBRCxFQUFPOEQsSUFBSSxHQUFHTCxZQUFILEdBQWtCRCxTQUE3QixFQUF3Q00sSUFBSSxHQUFHTixTQUFILEdBQWVDLFlBQTNELENBQVI7QUFDRDtBQUNGOztBQUVELFNBQVNkLFFBQVQsQ0FBa0IzQyxJQUFsQixFQUF3Qk8sSUFBeEIsRUFBOEIwQyxLQUE5QixFQUFxQztBQUNuQ2pELEVBQUFBLElBQUksQ0FBQzJDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQTNDLEVBQUFBLElBQUksQ0FBQ0UsS0FBTCxDQUFXNEIsSUFBWCxDQUFnQjtBQUNkYSxJQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkcEMsSUFBQUEsSUFBSSxFQUFFQSxJQUZRO0FBR2RDLElBQUFBLE1BQU0sRUFBRXlDO0FBSE0sR0FBaEI7QUFLRDs7QUFFRCxTQUFTQyxhQUFULENBQXVCbEQsSUFBdkIsRUFBNkJpRSxNQUE3QixFQUFxQ2hCLEtBQXJDLEVBQTRDO0FBQzFDLFNBQU9nQixNQUFNLENBQUNwQixNQUFQLEdBQWdCSSxLQUFLLENBQUNKLE1BQXRCLElBQWdDb0IsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkUsRUFBMkU7QUFDekUsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDQUQsSUFBQUEsTUFBTSxDQUFDcEIsTUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBU1UsY0FBVCxDQUF3QnZELElBQXhCLEVBQThCaUUsTUFBOUIsRUFBc0M7QUFDcEMsU0FBT0EsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkMsRUFBMkM7QUFDekMsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDRDtBQUNGOztBQUVELFNBQVNiLGFBQVQsQ0FBdUJjLEtBQXZCLEVBQThCO0FBQzVCLE1BQUl4RCxHQUFHLEdBQUcsRUFBVjtBQUFBLE1BQ0l5RCxTQUFTLEdBQUdELEtBQUssQ0FBQ2pFLEtBQU4sQ0FBWWlFLEtBQUssQ0FBQ3ZELEtBQWxCLEVBQXlCLENBQXpCLENBRGhCOztBQUVBLFNBQU91RCxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQUFqQyxFQUF5QztBQUN2QyxRQUFJMEMsSUFBSSxHQUFHQyxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFYLENBRHVDLENBR3ZDOztBQUNBLFFBQUl3RCxTQUFTLEtBQUssR0FBZCxJQUFxQkYsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQXJDLEVBQTBDO0FBQ3hDRSxNQUFBQSxTQUFTLEdBQUcsR0FBWjtBQUNEOztBQUVELFFBQUlBLFNBQVMsS0FBS0YsSUFBSSxDQUFDLENBQUQsQ0FBdEIsRUFBMkI7QUFDekJ2RCxNQUFBQSxHQUFHLENBQUNtQixJQUFKLENBQVNvQyxJQUFUO0FBQ0FDLE1BQUFBLEtBQUssQ0FBQ3ZELEtBQU47QUFDRCxLQUhELE1BR087QUFDTDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0QsR0FBUDtBQUNEOztBQUNELFNBQVNvRCxjQUFULENBQXdCSSxLQUF4QixFQUErQkUsWUFBL0IsRUFBNkM7QUFDM0MsTUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFBQSxNQUNJTixNQUFNLEdBQUcsRUFEYjtBQUFBLE1BRUlPLFVBQVUsR0FBRyxDQUZqQjtBQUFBLE1BR0lDLGNBQWMsR0FBRyxLQUhyQjtBQUFBLE1BSUlDLFVBQVUsR0FBRyxLQUpqQjs7QUFLQSxTQUFPRixVQUFVLEdBQUdGLFlBQVksQ0FBQzdDLE1BQTFCLElBQ0UyQyxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQURuQyxFQUMyQztBQUN6QyxRQUFJa0QsTUFBTSxHQUFHUCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFiO0FBQUEsUUFDSStELEtBQUssR0FBR04sWUFBWSxDQUFDRSxVQUFELENBRHhCLENBRHlDLENBSXpDOztBQUNBLFFBQUlJLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtBQUNwQjtBQUNEOztBQUVESCxJQUFBQSxjQUFjLEdBQUdBLGNBQWMsSUFBSUUsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQWpEO0FBRUFWLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWTZDLEtBQVo7QUFDQUosSUFBQUEsVUFBVSxHQVorQixDQWN6QztBQUNBOztBQUNBLFFBQUlHLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBYyxHQUFsQixFQUF1QjtBQUNyQkQsTUFBQUEsVUFBVSxHQUFHLElBQWI7O0FBRUEsYUFBT0MsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQXJCLEVBQTBCO0FBQ3hCSixRQUFBQSxPQUFPLENBQUN4QyxJQUFSLENBQWE0QyxNQUFiO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR1AsS0FBSyxDQUFDakUsS0FBTixDQUFZLEVBQUVpRSxLQUFLLENBQUN2RCxLQUFwQixDQUFUO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJK0QsS0FBSyxDQUFDQyxNQUFOLENBQWEsQ0FBYixNQUFvQkYsTUFBTSxDQUFDRSxNQUFQLENBQWMsQ0FBZCxDQUF4QixFQUEwQztBQUN4Q04sTUFBQUEsT0FBTyxDQUFDeEMsSUFBUixDQUFhNEMsTUFBYjtBQUNBUCxNQUFBQSxLQUFLLENBQUN2RCxLQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0w2RCxNQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxDQUFDSixZQUFZLENBQUNFLFVBQUQsQ0FBWixJQUE0QixFQUE3QixFQUFpQyxDQUFqQyxNQUF3QyxHQUF4QyxJQUNHQyxjQURQLEVBQ3VCO0FBQ3JCQyxJQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEOztBQUVELE1BQUlBLFVBQUosRUFBZ0I7QUFDZCxXQUFPSCxPQUFQO0FBQ0Q7O0FBRUQsU0FBT0MsVUFBVSxHQUFHRixZQUFZLENBQUM3QyxNQUFqQyxFQUF5QztBQUN2Q3dDLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWXVDLFlBQVksQ0FBQ0UsVUFBVSxFQUFYLENBQXhCO0FBQ0Q7O0FBRUQsU0FBTztBQUNMUCxJQUFBQSxNQUFNLEVBQU5BLE1BREs7QUFFTE0sSUFBQUEsT0FBTyxFQUFQQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxTQUFTWixVQUFULENBQW9CWSxPQUFwQixFQUE2QjtBQUMzQixTQUFPQSxPQUFPLENBQUNPLE1BQVIsQ0FBZSxVQUFTQyxJQUFULEVBQWVKLE1BQWYsRUFBdUI7QUFDM0MsV0FBT0ksSUFBSSxJQUFJSixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWMsR0FBN0I7QUFDRCxHQUZNLEVBRUosSUFGSSxDQUFQO0FBR0Q7O0FBQ0QsU0FBU2Qsa0JBQVQsQ0FBNEJPLEtBQTVCLEVBQW1DWSxhQUFuQyxFQUFrREMsS0FBbEQsRUFBeUQ7QUFDdkQsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxLQUFwQixFQUEyQkMsQ0FBQyxFQUE1QixFQUFnQztBQUM5QixRQUFJQyxhQUFhLEdBQUdILGFBQWEsQ0FBQ0EsYUFBYSxDQUFDdkQsTUFBZCxHQUF1QndELEtBQXZCLEdBQStCQyxDQUFoQyxDQUFiLENBQWdETCxNQUFoRCxDQUF1RCxDQUF2RCxDQUFwQjs7QUFDQSxRQUFJVCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFOLEdBQWNxRSxDQUExQixNQUFpQyxNQUFNQyxhQUEzQyxFQUEwRDtBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVEZixFQUFBQSxLQUFLLENBQUN2RCxLQUFOLElBQWVvRSxLQUFmO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUy9FLG1CQUFULENBQTZCQyxLQUE3QixFQUFvQztBQUNsQyxNQUFJQyxRQUFRLEdBQUcsQ0FBZjtBQUNBLE1BQUlDLFFBQVEsR0FBRyxDQUFmO0FBRUFGLEVBQUFBLEtBQUssQ0FBQ2lGLE9BQU4sQ0FBYyxVQUFTakIsSUFBVCxFQUFlO0FBQzNCLFFBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixVQUFJa0IsT0FBTyxHQUFHbkYsbUJBQW1CLENBQUNpRSxJQUFJLENBQUMzRCxJQUFOLENBQWpDO0FBQ0EsVUFBSThFLFVBQVUsR0FBR3BGLG1CQUFtQixDQUFDaUUsSUFBSSxDQUFDMUQsTUFBTixDQUFwQzs7QUFFQSxVQUFJTCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCLFlBQUkrRSxPQUFPLENBQUNqRixRQUFSLEtBQXFCa0YsVUFBVSxDQUFDbEYsUUFBcEMsRUFBOEM7QUFDNUNBLFVBQUFBLFFBQVEsSUFBSWlGLE9BQU8sQ0FBQ2pGLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLFVBQUFBLFFBQVEsR0FBR0UsU0FBWDtBQUNEO0FBQ0Y7O0FBRUQsVUFBSUQsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJK0UsT0FBTyxDQUFDaEYsUUFBUixLQUFxQmlGLFVBQVUsQ0FBQ2pGLFFBQXBDLEVBQThDO0FBQzVDQSxVQUFBQSxRQUFRLElBQUlnRixPQUFPLENBQUNoRixRQUFwQjtBQUNELFNBRkQsTUFFTztBQUNMQSxVQUFBQSxRQUFRLEdBQUdDLFNBQVg7QUFDRDtBQUNGO0FBQ0YsS0FuQkQsTUFtQk87QUFDTCxVQUFJRCxRQUFRLEtBQUtDLFNBQWIsS0FBMkI2RCxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBWixJQUFtQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEU5RCxRQUFBQSxRQUFRO0FBQ1Q7O0FBQ0QsVUFBSUQsUUFBUSxLQUFLRSxTQUFiLEtBQTJCNkQsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQVosSUFBbUJBLElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxHQUExRCxDQUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0= diff --git a/lib/patch/parse.js b/lib/patch/parse.js new file mode 100644 index 000000000..f15010480 --- /dev/null +++ b/lib/patch/parse.js @@ -0,0 +1,167 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parsePatch = parsePatch; + +/*istanbul ignore end*/ +function parsePatch(uniDiff) { + /*istanbul ignore start*/ + var + /*istanbul ignore end*/ + options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], + newStart: +chunkHeader[3], + newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], + lines: [], + linedelimiters: [] + }; // Unified Diff Format quirk: If the chunk size is 0, + // the first number is one lower than one would expect. + // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 + + if (hunk.oldLines === 0) { + hunk.oldStart += 1; + } + + if (hunk.newLines === 0) { + hunk.newStart += 1; + } + + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ== diff --git a/lib/util/array.js b/lib/util/array.js new file mode 100644 index 000000000..aecf67ac8 --- /dev/null +++ b/lib/util/array.js @@ -0,0 +1,32 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.arrayEqual = arrayEqual; +exports.arrayStartsWith = arrayStartsWith; + +/*istanbul ignore end*/ +function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); +} + +function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19 diff --git a/lib/util/distance-iterator.js b/lib/util/distance-iterator.js new file mode 100644 index 000000000..57c06a3f9 --- /dev/null +++ b/lib/util/distance-iterator.js @@ -0,0 +1,57 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +/*istanbul ignore end*/ +// Iterator that traverses in the range of [min, max], stepping +// by distance from a given start position. I.e. for [0, 4], with +// start of 2, this will iterate 2, 3, 1, 4, 0. +function +/*istanbul ignore start*/ +_default +/*istanbul ignore end*/ +(start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0= diff --git a/lib/util/params.js b/lib/util/params.js new file mode 100644 index 000000000..e838eb2f4 --- /dev/null +++ b/lib/util/params.js @@ -0,0 +1,24 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.generateOptions = generateOptions; + +/*istanbul ignore end*/ +function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0= diff --git a/package.json b/package.json index 2b6eea7f1..84d5e61b0 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "import": "./lib/index.mjs", "require": "./lib/index.js" }, - "./package.json": "./package.json", - "./": "./" + "./package.json": "./package.json" }, "scripts": { "clean": "rm -rf lib/ dist/", From 3b33b02165caa12c749ef1f548eb4227803eb198 Mon Sep 17 00:00:00 2001 From: Alex Vazquez Date: Sat, 7 Jan 2023 21:18:34 -0800 Subject: [PATCH 2/3] Remove old exports --- package.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/package.json b/package.json index 84d5e61b0..a1c5a6bb4 100644 --- a/package.json +++ b/package.json @@ -29,15 +29,6 @@ }, "main": "./lib/index.js", "module": "./lib/index.es6.js", - "browser": "./dist/diff.js", - "unpkg": "./dist/diff.js", - "exports": { - ".": { - "import": "./lib/index.mjs", - "require": "./lib/index.js" - }, - "./package.json": "./package.json" - }, "scripts": { "clean": "rm -rf lib/ dist/", "build:node": "yarn babel --out-dir lib --source-maps=inline src", From aca6407788318f98851760ee492e072926221420 Mon Sep 17 00:00:00 2001 From: Alex Vazquez Date: Mon, 5 Aug 2024 18:20:13 -0700 Subject: [PATCH 3/3] update to yarn 4 --- .pnp.cjs | 19291 ++++++++++++++++++++++++++++++++ .pnp.loader.mjs | 2126 ++++ .yarn/install-state.gz | Bin 0 -> 884034 bytes lib/convert/dmp.js | 11 +- lib/convert/xml.js | 9 +- lib/diff/array.js | 22 +- lib/diff/base.js | 305 +- lib/diff/character.js | 20 +- lib/diff/css.js | 21 +- lib/diff/json.js | 96 +- lib/diff/line.js | 82 +- lib/diff/sentence.js | 19 +- lib/diff/word.js | 527 +- lib/index.js | 113 +- lib/patch/apply.js | 413 +- lib/patch/create.js | 497 +- lib/patch/line-endings.js | 176 + lib/patch/merge.js | 192 +- lib/patch/parse.js | 130 +- lib/patch/reverse.js | 58 + lib/util/array.js | 7 +- lib/util/distance-iterator.js | 33 +- lib/util/params.js | 4 +- lib/util/string.js | 131 + package.json | 4 +- yarn.lock | 16087 +++++++++++++++----------- 26 files changed, 32877 insertions(+), 7497 deletions(-) create mode 100755 .pnp.cjs create mode 100644 .pnp.loader.mjs create mode 100644 .yarn/install-state.gz create mode 100644 lib/patch/line-endings.js mode change 100644 => 100755 lib/patch/parse.js create mode 100644 lib/patch/reverse.js create mode 100644 lib/util/string.js diff --git a/.pnp.cjs b/.pnp.cjs new file mode 100755 index 000000000..90c06629b --- /dev/null +++ b/.pnp.cjs @@ -0,0 +1,19291 @@ +#!/usr/bin/env node +/* eslint-disable */ +// @ts-nocheck +"use strict"; + +const RAW_RUNTIME_STATE = +'{\ + "__info": [\ + "This file is automatically generated. Do not touch it, or risk",\ + "your modifications being lost."\ + ],\ + "dependencyTreeRoots": [\ + {\ + "name": "diff",\ + "reference": "workspace:."\ + }\ + ],\ + "enableTopLevelFallback": true,\ + "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ + "fallbackExclusionList": [\ + ["diff", ["workspace:."]]\ + ],\ + "fallbackPool": [\ + ],\ + "packageRegistryData": [\ + [null, [\ + [null, {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["@babel/cli", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/plugin-transform-modules-commonjs", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/preset-env", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.25.3"],\ + ["@babel/register", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.6"],\ + ["@colors/colors", "npm:1.6.0"],\ + ["babel-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:10.1.0"],\ + ["babel-loader", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:9.1.3"],\ + ["chai", "npm:4.5.0"],\ + ["eslint", "npm:5.16.0"],\ + ["grunt", "npm:1.6.1"],\ + ["grunt-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:8.0.0"],\ + ["grunt-cli", "npm:1.5.0"],\ + ["grunt-contrib-clean", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.0.1"],\ + ["grunt-contrib-copy", "npm:1.0.0"],\ + ["grunt-contrib-uglify", "npm:5.2.2"],\ + ["grunt-contrib-watch", "npm:1.1.0"],\ + ["grunt-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:24.3.0"],\ + ["grunt-exec", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:3.0.0"],\ + ["grunt-karma", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.0.2"],\ + ["grunt-mocha-istanbul", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.2"],\ + ["grunt-mocha-test", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:0.13.3"],\ + ["grunt-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:6.0.0"],\ + ["istanbul", "https://github.com/kpdecker/istanbul.git#commit=dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22"],\ + ["karma", "npm:6.4.4"],\ + ["karma-chrome-launcher", "npm:3.2.0"],\ + ["karma-mocha", "npm:2.0.1"],\ + ["karma-mocha-reporter", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.2.5"],\ + ["karma-sourcemap-loader", "npm:0.4.0"],\ + ["karma-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.1"],\ + ["mocha", "npm:7.2.0"],\ + ["rollup", "npm:4.20.0"],\ + ["rollup-plugin-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.4.0"],\ + ["semver", "npm:7.6.3"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"],\ + ["webpack-dev-server", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.4"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["@ampproject/remapping", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@ampproject-remapping-npm-2.3.0-559c14eee4-10c0.zip/node_modules/@ampproject/remapping/",\ + "packageDependencies": [\ + ["@ampproject/remapping", "npm:2.3.0"],\ + ["@jridgewell/gen-mapping", "npm:0.3.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/cli", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-cli-npm-7.24.8-c016c7de12-10c0.zip/node_modules/@babel/cli/",\ + "packageDependencies": [\ + ["@babel/cli", "npm:7.24.8"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8", {\ + "packageLocation": "./.yarn/__virtual__/@babel-cli-virtual-fbdc2c276a/7/.yarn/berry/cache/@babel-cli-npm-7.24.8-c016c7de12-10c0.zip/node_modules/@babel/cli/",\ + "packageDependencies": [\ + ["@babel/cli", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"],\ + ["@nicolo-ribaudo/chokidar-2", "npm:2.1.8-no-fsevents.3"],\ + ["@types/babel__core", null],\ + ["chokidar", "npm:3.6.0"],\ + ["commander", "npm:6.2.1"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["fs-readdir-recursive", "npm:1.1.0"],\ + ["glob", "npm:7.2.3"],\ + ["make-dir", "npm:2.1.0"],\ + ["slash", "npm:2.0.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/code-frame", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-code-frame-npm-7.24.7-315a600a58-10c0.zip/node_modules/@babel/code-frame/",\ + "packageDependencies": [\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["@babel/highlight", "npm:7.24.7"],\ + ["picocolors", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/compat-data", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-compat-data-npm-7.25.2-119057710e-10c0.zip/node_modules/@babel/compat-data/",\ + "packageDependencies": [\ + ["@babel/compat-data", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/core", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-core-npm-7.25.2-341930f809-10c0.zip/node_modules/@babel/core/",\ + "packageDependencies": [\ + ["@babel/core", "npm:7.25.2"],\ + ["@ampproject/remapping", "npm:2.3.0"],\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["@babel/generator", "npm:7.25.0"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/helpers", "npm:7.25.0"],\ + ["@babel/parser", "npm:7.25.3"],\ + ["@babel/template", "npm:7.25.0"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"],\ + ["convert-source-map", "npm:2.0.0"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["gensync", "npm:1.0.0-beta.2"],\ + ["json5", "npm:2.2.3"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/generator", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-generator-npm-7.25.0-4bba208756-10c0.zip/node_modules/@babel/generator/",\ + "packageDependencies": [\ + ["@babel/generator", "npm:7.25.0"],\ + ["@babel/types", "npm:7.25.2"],\ + ["@jridgewell/gen-mapping", "npm:0.3.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"],\ + ["jsesc", "npm:2.5.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-annotate-as-pure", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-annotate-as-pure-npm-7.24.7-537c5e8bf3-10c0.zip/node_modules/@babel/helper-annotate-as-pure/",\ + "packageDependencies": [\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-builder-binary-assignment-operator-visitor", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-builder-binary-assignment-operator-visitor-npm-7.24.7-1653e5773a-10c0.zip/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/",\ + "packageDependencies": [\ + ["@babel/helper-builder-binary-assignment-operator-visitor", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-compilation-targets", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-compilation-targets-npm-7.25.2-27e0232144-10c0.zip/node_modules/@babel/helper-compilation-targets/",\ + "packageDependencies": [\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/compat-data", "npm:7.25.2"],\ + ["@babel/helper-validator-option", "npm:7.24.8"],\ + ["browserslist", "npm:4.23.3"],\ + ["lru-cache", "npm:5.1.1"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-create-class-features-plugin", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-create-class-features-plugin-npm-7.25.0-8c1a9bf7ca-10c0.zip/node_modules/@babel/helper-create-class-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-class-features-plugin", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-create-class-features-plugin-virtual-9132585a08/7/.yarn/berry/cache/@babel-helper-create-class-features-plugin-npm-7.25.0-8c1a9bf7ca-10c0.zip/node_modules/@babel/helper-create-class-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-class-features-plugin", "virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@babel/helper-member-expression-to-functions", "npm:7.24.8"],\ + ["@babel/helper-optimise-call-expression", "npm:7.24.7"],\ + ["@babel/helper-replace-supers", "virtual:9132585a087f24f587bc6bcca54f2c696be8bab1b673fcb64762e6387feffd09edafd9215518643c3dfc7d343334fd424a558b410be265c6c107ea11937a778a#npm:7.25.0"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-create-regexp-features-plugin", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-create-regexp-features-plugin-npm-7.25.2-35b05e1e79-10c0.zip/node_modules/@babel/helper-create-regexp-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-regexp-features-plugin", "npm:7.25.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-create-regexp-features-plugin-virtual-e8e1b52581/7/.yarn/berry/cache/@babel-helper-create-regexp-features-plugin-npm-7.25.2-35b05e1e79-10c0.zip/node_modules/@babel/helper-create-regexp-features-plugin/",\ + "packageDependencies": [\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@types/babel__core", null],\ + ["regexpu-core", "npm:5.3.2"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-define-polyfill-provider", [\ + ["npm:0.6.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-define-polyfill-provider-npm-0.6.2-554cbf22ae-10c0.zip/node_modules/@babel/helper-define-polyfill-provider/",\ + "packageDependencies": [\ + ["@babel/helper-define-polyfill-provider", "npm:0.6.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:8c88497f84ab8b513987f39dffd9d2280db518c986deea245c98460218070a6e4083672a7572f56a18c5590c6ce8c524dc315cef6c4b9925d8b5eda1f1da7c00#npm:0.6.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-define-polyfill-provider-virtual-21cceaa2bd/7/.yarn/berry/cache/@babel-helper-define-polyfill-provider-npm-0.6.2-554cbf22ae-10c0.zip/node_modules/@babel/helper-define-polyfill-provider/",\ + "packageDependencies": [\ + ["@babel/helper-define-polyfill-provider", "virtual:8c88497f84ab8b513987f39dffd9d2280db518c986deea245c98460218070a6e4083672a7572f56a18c5590c6ce8c524dc315cef6c4b9925d8b5eda1f1da7c00#npm:0.6.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["lodash.debounce", "npm:4.0.8"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-member-expression-to-functions", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-member-expression-to-functions-npm-7.24.8-6042e98e38-10c0.zip/node_modules/@babel/helper-member-expression-to-functions/",\ + "packageDependencies": [\ + ["@babel/helper-member-expression-to-functions", "npm:7.24.8"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-module-imports", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-module-imports-npm-7.24.7-f60e66adbf-10c0.zip/node_modules/@babel/helper-module-imports/",\ + "packageDependencies": [\ + ["@babel/helper-module-imports", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-module-transforms", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-module-transforms-npm-7.25.2-2c8d511580-10c0.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/helper-module-transforms", "npm:7.25.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-b14538d1e7/7/.yarn/berry/cache/@babel-helper-module-transforms-npm-7.25.2-2c8d511580-10c0.zip/node_modules/@babel/helper-module-transforms/",\ + "packageDependencies": [\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-imports", "npm:7.24.7"],\ + ["@babel/helper-simple-access", "npm:7.24.7"],\ + ["@babel/helper-validator-identifier", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-optimise-call-expression", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-optimise-call-expression-npm-7.24.7-59b5fb050d-10c0.zip/node_modules/@babel/helper-optimise-call-expression/",\ + "packageDependencies": [\ + ["@babel/helper-optimise-call-expression", "npm:7.24.7"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-plugin-utils", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-plugin-utils-npm-7.24.8-a288f101a7-10c0.zip/node_modules/@babel/helper-plugin-utils/",\ + "packageDependencies": [\ + ["@babel/helper-plugin-utils", "npm:7.24.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-remap-async-to-generator", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-remap-async-to-generator-npm-7.25.0-0f64f09501-10c0.zip/node_modules/@babel/helper-remap-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/helper-remap-async-to-generator", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:cafaea01525feef706cf69aa175ac65bb333ded9cc0f48ea50099e30a0715547a4c3c524d639bbf3a9b46b1b86925863363e161ca5c63bd35467fb247f625233#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-remap-async-to-generator-virtual-f1d2e17b8e/7/.yarn/berry/cache/@babel-helper-remap-async-to-generator-npm-7.25.0-0f64f09501-10c0.zip/node_modules/@babel/helper-remap-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/helper-remap-async-to-generator", "virtual:cafaea01525feef706cf69aa175ac65bb333ded9cc0f48ea50099e30a0715547a4c3c524d639bbf3a9b46b1b86925863363e161ca5c63bd35467fb247f625233#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@babel/helper-wrap-function", "npm:7.25.0"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-replace-supers", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-replace-supers-npm-7.25.0-7aaa2ff595-10c0.zip/node_modules/@babel/helper-replace-supers/",\ + "packageDependencies": [\ + ["@babel/helper-replace-supers", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9132585a087f24f587bc6bcca54f2c696be8bab1b673fcb64762e6387feffd09edafd9215518643c3dfc7d343334fd424a558b410be265c6c107ea11937a778a#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-helper-replace-supers-virtual-aebe97423b/7/.yarn/berry/cache/@babel-helper-replace-supers-npm-7.25.0-7aaa2ff595-10c0.zip/node_modules/@babel/helper-replace-supers/",\ + "packageDependencies": [\ + ["@babel/helper-replace-supers", "virtual:9132585a087f24f587bc6bcca54f2c696be8bab1b673fcb64762e6387feffd09edafd9215518643c3dfc7d343334fd424a558b410be265c6c107ea11937a778a#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-member-expression-to-functions", "npm:7.24.8"],\ + ["@babel/helper-optimise-call-expression", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-simple-access", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-simple-access-npm-7.24.7-beddd00b0e-10c0.zip/node_modules/@babel/helper-simple-access/",\ + "packageDependencies": [\ + ["@babel/helper-simple-access", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-skip-transparent-expression-wrappers", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-skip-transparent-expression-wrappers-npm-7.24.7-f573fe40ee-10c0.zip/node_modules/@babel/helper-skip-transparent-expression-wrappers/",\ + "packageDependencies": [\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-string-parser", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-string-parser-npm-7.24.8-133b2e71e1-10c0.zip/node_modules/@babel/helper-string-parser/",\ + "packageDependencies": [\ + ["@babel/helper-string-parser", "npm:7.24.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-validator-identifier", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-validator-identifier-npm-7.24.7-748889c8d2-10c0.zip/node_modules/@babel/helper-validator-identifier/",\ + "packageDependencies": [\ + ["@babel/helper-validator-identifier", "npm:7.24.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-validator-option", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-validator-option-npm-7.24.8-e093ef5016-10c0.zip/node_modules/@babel/helper-validator-option/",\ + "packageDependencies": [\ + ["@babel/helper-validator-option", "npm:7.24.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helper-wrap-function", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helper-wrap-function-npm-7.25.0-c85147a474-10c0.zip/node_modules/@babel/helper-wrap-function/",\ + "packageDependencies": [\ + ["@babel/helper-wrap-function", "npm:7.25.0"],\ + ["@babel/template", "npm:7.25.0"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/helpers", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-helpers-npm-7.25.0-f552d9aaf3-10c0.zip/node_modules/@babel/helpers/",\ + "packageDependencies": [\ + ["@babel/helpers", "npm:7.25.0"],\ + ["@babel/template", "npm:7.25.0"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/highlight", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-highlight-npm-7.24.7-d792bd8d9f-10c0.zip/node_modules/@babel/highlight/",\ + "packageDependencies": [\ + ["@babel/highlight", "npm:7.24.7"],\ + ["@babel/helper-validator-identifier", "npm:7.24.7"],\ + ["chalk", "npm:2.4.2"],\ + ["js-tokens", "npm:4.0.0"],\ + ["picocolors", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/parser", [\ + ["npm:7.25.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-parser-npm-7.25.3-e33bb4a0e6-10c0.zip/node_modules/@babel/parser/",\ + "packageDependencies": [\ + ["@babel/parser", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", [\ + ["npm:7.25.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-bugfix-firefox-class-in-computed-class-key-npm-7.25.3-d2e8ec6012-10c0.zip/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "npm:7.25.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-firefox-class-in-computed-class-key-virtual-8524da06cf/7/.yarn/berry/cache/@babel-plugin-bugfix-firefox-class-in-computed-class-key-npm-7.25.3-d2e8ec6012-10c0.zip/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-bugfix-safari-class-field-initializer-scope-npm-7.25.0-96be020ed4-10c0.zip/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-safari-class-field-initializer-scope-virtual-e7e459dc8f/7/.yarn/berry/cache/@babel-plugin-bugfix-safari-class-field-initializer-scope-npm-7.25.0-96be020ed4-10c0.zip/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-npm-7.25.0-cd338f5f19-10c0.zip/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-virtual-f30b4ec25a/7/.yarn/berry/cache/@babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression-npm-7.25.0-cd338f5f19-10c0.zip/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-npm-7.24.7-a96e8cc868-10c0.zip/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-virtual-d454e32b20/7/.yarn/berry/cache/@babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining-npm-7.24.7-a96e8cc868-10c0.zip/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@babel/plugin-transform-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-npm-7.25.0-0974fd41ef-10c0.zip/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-virtual-826d3f7e5f/7/.yarn/berry/cache/@babel-plugin-bugfix-v8-static-class-fields-redefine-readonly-npm-7.25.0-0974fd41ef-10c0.zip/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/",\ + "packageDependencies": [\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-proposal-private-property-in-object", [\ + ["npm:7.21.0-placeholder-for-preset-env.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-proposal-private-property-in-object-npm-7.21.0-placeholder-for-preset-env.2-eb70026c88-10c0.zip/node_modules/@babel/plugin-proposal-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-proposal-private-property-in-object", "npm:7.21.0-placeholder-for-preset-env.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.21.0-placeholder-for-preset-env.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-proposal-private-property-in-object-virtual-3c06575a88/7/.yarn/berry/cache/@babel-plugin-proposal-private-property-in-object-npm-7.21.0-placeholder-for-preset-env.2-eb70026c88-10c0.zip/node_modules/@babel/plugin-proposal-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-proposal-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.21.0-placeholder-for-preset-env.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-async-generators", [\ + ["npm:7.8.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-async-generators", "npm:7.8.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-async-generators-virtual-0ec1b79276/7/.yarn/berry/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-10c0.zip/node_modules/@babel/plugin-syntax-async-generators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-async-generators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.4"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-class-properties", [\ + ["npm:7.12.13", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-properties", "npm:7.12.13"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.12.13", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-properties-virtual-6c8ba75a05/7/.yarn/berry/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-10c0.zip/node_modules/@babel/plugin-syntax-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.12.13"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-class-static-block", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-static-block", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-class-static-block-virtual-d1fbc6388a/7/.yarn/berry/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-10c0.zip/node_modules/@babel/plugin-syntax-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-class-static-block", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-dynamic-import", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-dynamic-import-npm-7.8.3-fb9ff5634a-10c0.zip/node_modules/@babel/plugin-syntax-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-dynamic-import", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-dynamic-import-virtual-cb0c3ec8fc/7/.yarn/berry/cache/@babel-plugin-syntax-dynamic-import-npm-7.8.3-fb9ff5634a-10c0.zip/node_modules/@babel/plugin-syntax-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-dynamic-import", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-export-namespace-from", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-export-namespace-from-npm-7.8.3-1747201aa9-10c0.zip/node_modules/@babel/plugin-syntax-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-export-namespace-from", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-export-namespace-from-virtual-0815059452/7/.yarn/berry/cache/@babel-plugin-syntax-export-namespace-from-npm-7.8.3-1747201aa9-10c0.zip/node_modules/@babel/plugin-syntax-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-export-namespace-from", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-assertions", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-import-assertions-npm-7.24.7-06924e77aa-10c0.zip/node_modules/@babel/plugin-syntax-import-assertions/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-assertions", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-assertions-virtual-a9f6c793ae/7/.yarn/berry/cache/@babel-plugin-syntax-import-assertions-npm-7.24.7-06924e77aa-10c0.zip/node_modules/@babel/plugin-syntax-import-assertions/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-assertions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-attributes", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.24.7-6101aa2bfb-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-attributes", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-attributes-virtual-59b9260198/7/.yarn/berry/cache/@babel-plugin-syntax-import-attributes-npm-7.24.7-6101aa2bfb-10c0.zip/node_modules/@babel/plugin-syntax-import-attributes/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-attributes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-import-meta", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-meta", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-import-meta-virtual-da4c431764/7/.yarn/berry/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-10c0.zip/node_modules/@babel/plugin-syntax-import-meta/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-import-meta", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-json-strings", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-json-strings", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-json-strings-virtual-7ba539febe/7/.yarn/berry/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-10c0.zip/node_modules/@babel/plugin-syntax-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-json-strings", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-logical-assignment-operators", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-logical-assignment-operators", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-logical-assignment-operators-virtual-c6f2dcb86e/7/.yarn/berry/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-10c0.zip/node_modules/@babel/plugin-syntax-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-nullish-coalescing-operator-virtual-44ce9c0e92/7/.yarn/berry/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-10c0.zip/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-numeric-separator", [\ + ["npm:7.10.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-numeric-separator", "npm:7.10.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-numeric-separator-virtual-77e553b65e/7/.yarn/berry/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-10c0.zip/node_modules/@babel/plugin-syntax-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-numeric-separator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-object-rest-spread", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-object-rest-spread", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-object-rest-spread-virtual-bc42b45afc/7/.yarn/berry/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-10c0.zip/node_modules/@babel/plugin-syntax-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-optional-catch-binding", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-catch-binding", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-catch-binding-virtual-654fa68468/7/.yarn/berry/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-10c0.zip/node_modules/@babel/plugin-syntax-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-optional-chaining", [\ + ["npm:7.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-chaining", "npm:7.8.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-optional-chaining-virtual-ef55766558/7/.yarn/berry/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-10c0.zip/node_modules/@babel/plugin-syntax-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-private-property-in-object", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-private-property-in-object", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-private-property-in-object-virtual-a8fb4fe590/7/.yarn/berry/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-10c0.zip/node_modules/@babel/plugin-syntax-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-top-level-await", [\ + ["npm:7.14.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-top-level-await", "npm:7.14.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-top-level-await-virtual-ddd4daefb3/7/.yarn/berry/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-10c0.zip/node_modules/@babel/plugin-syntax-top-level-await/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-top-level-await", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-syntax-unicode-sets-regex", [\ + ["npm:7.18.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-syntax-unicode-sets-regex-npm-7.18.6-b618a36bfd-10c0.zip/node_modules/@babel/plugin-syntax-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-unicode-sets-regex", "npm:7.18.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.18.6", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-syntax-unicode-sets-regex-virtual-2a42cc57ff/7/.yarn/berry/cache/@babel-plugin-syntax-unicode-sets-regex-npm-7.18.6-b618a36bfd-10c0.zip/node_modules/@babel/plugin-syntax-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-syntax-unicode-sets-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.18.6"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-arrow-functions", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-arrow-functions-npm-7.24.7-dc9654ba4f-10c0.zip/node_modules/@babel/plugin-transform-arrow-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-arrow-functions", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-arrow-functions-virtual-be0c9e1f8a/7/.yarn/berry/cache/@babel-plugin-transform-arrow-functions-npm-7.24.7-dc9654ba4f-10c0.zip/node_modules/@babel/plugin-transform-arrow-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-arrow-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-async-generator-functions", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-async-generator-functions-npm-7.25.0-f63107cabf-10c0.zip/node_modules/@babel/plugin-transform-async-generator-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-generator-functions", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-async-generator-functions-virtual-cafaea0152/7/.yarn/berry/cache/@babel-plugin-transform-async-generator-functions-npm-7.25.0-f63107cabf-10c0.zip/node_modules/@babel/plugin-transform-async-generator-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-generator-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-remap-async-to-generator", "virtual:cafaea01525feef706cf69aa175ac65bb333ded9cc0f48ea50099e30a0715547a4c3c524d639bbf3a9b46b1b86925863363e161ca5c63bd35467fb247f625233#npm:7.25.0"],\ + ["@babel/plugin-syntax-async-generators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.4"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-async-to-generator", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-async-to-generator-npm-7.24.7-335cbe94e0-10c0.zip/node_modules/@babel/plugin-transform-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-to-generator", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-async-to-generator-virtual-9be4091886/7/.yarn/berry/cache/@babel-plugin-transform-async-to-generator-npm-7.24.7-335cbe94e0-10c0.zip/node_modules/@babel/plugin-transform-async-to-generator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-async-to-generator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-imports", "npm:7.24.7"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-remap-async-to-generator", "virtual:cafaea01525feef706cf69aa175ac65bb333ded9cc0f48ea50099e30a0715547a4c3c524d639bbf3a9b46b1b86925863363e161ca5c63bd35467fb247f625233#npm:7.25.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-block-scoped-functions", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-block-scoped-functions-npm-7.24.7-3bde68de42-10c0.zip/node_modules/@babel/plugin-transform-block-scoped-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoped-functions", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-block-scoped-functions-virtual-2a9b313a9d/7/.yarn/berry/cache/@babel-plugin-transform-block-scoped-functions-npm-7.24.7-3bde68de42-10c0.zip/node_modules/@babel/plugin-transform-block-scoped-functions/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoped-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-block-scoping", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-block-scoping-npm-7.25.0-3cb78e0e8f-10c0.zip/node_modules/@babel/plugin-transform-block-scoping/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoping", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-block-scoping-virtual-16826063a0/7/.yarn/berry/cache/@babel-plugin-transform-block-scoping-npm-7.25.0-3cb78e0e8f-10c0.zip/node_modules/@babel/plugin-transform-block-scoping/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-block-scoping", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-class-properties", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-class-properties-npm-7.24.7-42a5aafd3c-10c0.zip/node_modules/@babel/plugin-transform-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-properties", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-class-properties-virtual-681429c17e/7/.yarn/berry/cache/@babel-plugin-transform-class-properties-npm-7.24.7-42a5aafd3c-10c0.zip/node_modules/@babel/plugin-transform-class-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-class-features-plugin", "virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-class-static-block", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-class-static-block-npm-7.24.7-2ab97b4caf-10c0.zip/node_modules/@babel/plugin-transform-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-static-block", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-class-static-block-virtual-d5196d9865/7/.yarn/berry/cache/@babel-plugin-transform-class-static-block-npm-7.24.7-2ab97b4caf-10c0.zip/node_modules/@babel/plugin-transform-class-static-block/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-class-static-block", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-class-features-plugin", "virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-classes", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-classes-npm-7.25.0-82eaa19fb4-10c0.zip/node_modules/@babel/plugin-transform-classes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-classes", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-classes-virtual-eb304a18b1/7/.yarn/berry/cache/@babel-plugin-transform-classes-npm-7.25.0-82eaa19fb4-10c0.zip/node_modules/@babel/plugin-transform-classes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-classes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-replace-supers", "virtual:9132585a087f24f587bc6bcca54f2c696be8bab1b673fcb64762e6387feffd09edafd9215518643c3dfc7d343334fd424a558b410be265c6c107ea11937a778a#npm:7.25.0"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null],\ + ["globals", "npm:11.12.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-computed-properties", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-computed-properties-npm-7.24.7-707065a998-10c0.zip/node_modules/@babel/plugin-transform-computed-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-computed-properties", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-computed-properties-virtual-c761d02806/7/.yarn/berry/cache/@babel-plugin-transform-computed-properties-npm-7.24.7-707065a998-10c0.zip/node_modules/@babel/plugin-transform-computed-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-computed-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/template", "npm:7.25.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-destructuring", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-destructuring-npm-7.24.8-d05798f0dc-10c0.zip/node_modules/@babel/plugin-transform-destructuring/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-destructuring", "npm:7.24.8"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-destructuring-virtual-b41cca5902/7/.yarn/berry/cache/@babel-plugin-transform-destructuring-npm-7.24.8-d05798f0dc-10c0.zip/node_modules/@babel/plugin-transform-destructuring/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-destructuring", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-dotall-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-dotall-regex-npm-7.24.7-1e4ebcbb6c-10c0.zip/node_modules/@babel/plugin-transform-dotall-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dotall-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-dotall-regex-virtual-aa2abfc0db/7/.yarn/berry/cache/@babel-plugin-transform-dotall-regex-npm-7.24.7-1e4ebcbb6c-10c0.zip/node_modules/@babel/plugin-transform-dotall-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dotall-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-duplicate-keys", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-duplicate-keys-npm-7.24.7-c999e46d25-10c0.zip/node_modules/@babel/plugin-transform-duplicate-keys/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-keys", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-duplicate-keys-virtual-a7ded592ab/7/.yarn/berry/cache/@babel-plugin-transform-duplicate-keys-npm-7.24.7-c999e46d25-10c0.zip/node_modules/@babel/plugin-transform-duplicate-keys/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-keys", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-duplicate-named-capturing-groups-regex-npm-7.25.0-4d6aab7c02-10c0.zip/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-duplicate-named-capturing-groups-regex-virtual-cf6b87df08/7/.yarn/berry/cache/@babel-plugin-transform-duplicate-named-capturing-groups-regex-npm-7.25.0-4d6aab7c02-10c0.zip/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-dynamic-import", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-dynamic-import-npm-7.24.7-e15a724c6c-10c0.zip/node_modules/@babel/plugin-transform-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dynamic-import", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-dynamic-import-virtual-9f615ca228/7/.yarn/berry/cache/@babel-plugin-transform-dynamic-import-npm-7.24.7-e15a724c6c-10c0.zip/node_modules/@babel/plugin-transform-dynamic-import/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-dynamic-import", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-dynamic-import", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-exponentiation-operator", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-exponentiation-operator-npm-7.24.7-1bd197e640-10c0.zip/node_modules/@babel/plugin-transform-exponentiation-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-exponentiation-operator", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-exponentiation-operator-virtual-1e2d967ed7/7/.yarn/berry/cache/@babel-plugin-transform-exponentiation-operator-npm-7.24.7-1bd197e640-10c0.zip/node_modules/@babel/plugin-transform-exponentiation-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-exponentiation-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-builder-binary-assignment-operator-visitor", "npm:7.24.7"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-export-namespace-from", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-export-namespace-from-npm-7.24.7-2e43f5c58e-10c0.zip/node_modules/@babel/plugin-transform-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-export-namespace-from", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-export-namespace-from-virtual-690d43f6a8/7/.yarn/berry/cache/@babel-plugin-transform-export-namespace-from-npm-7.24.7-2e43f5c58e-10c0.zip/node_modules/@babel/plugin-transform-export-namespace-from/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-export-namespace-from", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-export-namespace-from", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-for-of", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-for-of-npm-7.24.7-e85b1239ae-10c0.zip/node_modules/@babel/plugin-transform-for-of/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-for-of", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-for-of-virtual-d401ac4ae1/7/.yarn/berry/cache/@babel-plugin-transform-for-of-npm-7.24.7-e85b1239ae-10c0.zip/node_modules/@babel/plugin-transform-for-of/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-for-of", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-function-name", [\ + ["npm:7.25.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-function-name-npm-7.25.1-abd6b587c7-10c0.zip/node_modules/@babel/plugin-transform-function-name/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-function-name", "npm:7.25.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.1", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-function-name-virtual-6f2f570778/7/.yarn/berry/cache/@babel-plugin-transform-function-name-npm-7.25.1-abd6b587c7-10c0.zip/node_modules/@babel/plugin-transform-function-name/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-function-name", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.1"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-json-strings", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-json-strings-npm-7.24.7-17858f14f3-10c0.zip/node_modules/@babel/plugin-transform-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-json-strings", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-json-strings-virtual-ceaeb3a147/7/.yarn/berry/cache/@babel-plugin-transform-json-strings-npm-7.24.7-17858f14f3-10c0.zip/node_modules/@babel/plugin-transform-json-strings/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-json-strings", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-json-strings", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-literals", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-literals-npm-7.25.2-7f2fb8bbc9-10c0.zip/node_modules/@babel/plugin-transform-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-literals", "npm:7.25.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.2", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-literals-virtual-3b2ed1187c/7/.yarn/berry/cache/@babel-plugin-transform-literals-npm-7.25.2-7f2fb8bbc9-10c0.zip/node_modules/@babel/plugin-transform-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-logical-assignment-operators", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-logical-assignment-operators-npm-7.24.7-8d08c296f2-10c0.zip/node_modules/@babel/plugin-transform-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-logical-assignment-operators", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-logical-assignment-operators-virtual-8d15cd5b8e/7/.yarn/berry/cache/@babel-plugin-transform-logical-assignment-operators-npm-7.24.7-8d08c296f2-10c0.zip/node_modules/@babel/plugin-transform-logical-assignment-operators/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-logical-assignment-operators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-member-expression-literals", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-member-expression-literals-npm-7.24.7-566bef1c80-10c0.zip/node_modules/@babel/plugin-transform-member-expression-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-member-expression-literals", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-member-expression-literals-virtual-2908acb6a7/7/.yarn/berry/cache/@babel-plugin-transform-member-expression-literals-npm-7.24.7-566bef1c80-10c0.zip/node_modules/@babel/plugin-transform-member-expression-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-member-expression-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-amd", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-modules-amd-npm-7.24.7-7b9b7c2d4b-10c0.zip/node_modules/@babel/plugin-transform-modules-amd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-amd", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-amd-virtual-75670d3706/7/.yarn/berry/cache/@babel-plugin-transform-modules-amd-npm-7.24.7-7b9b7c2d4b-10c0.zip/node_modules/@babel/plugin-transform-modules-amd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-amd", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-commonjs", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-modules-commonjs-npm-7.24.8-4d32ab4533-10c0.zip/node_modules/@babel/plugin-transform-modules-commonjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-commonjs", "npm:7.24.8"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-commonjs-virtual-c2e8c0e4bf/7/.yarn/berry/cache/@babel-plugin-transform-modules-commonjs-npm-7.24.8-4d32ab4533-10c0.zip/node_modules/@babel/plugin-transform-modules-commonjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-commonjs", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-simple-access", "npm:7.24.7"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-systemjs", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-modules-systemjs-npm-7.25.0-838c85ab7f-10c0.zip/node_modules/@babel/plugin-transform-modules-systemjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-systemjs", "npm:7.25.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-systemjs-virtual-09bb0d9e76/7/.yarn/berry/cache/@babel-plugin-transform-modules-systemjs-npm-7.25.0-838c85ab7f-10c0.zip/node_modules/@babel/plugin-transform-modules-systemjs/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-systemjs", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-validator-identifier", "npm:7.24.7"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-modules-umd", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-modules-umd-npm-7.24.7-46b61a2a8a-10c0.zip/node_modules/@babel/plugin-transform-modules-umd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-umd", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-modules-umd-virtual-e6410147b3/7/.yarn/berry/cache/@babel-plugin-transform-modules-umd-npm-7.24.7-46b61a2a8a-10c0.zip/node_modules/@babel/plugin-transform-modules-umd/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-modules-umd", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-transforms", "virtual:341930f80996f4b1e479f0ee33257969b2165bf70992bcc76aa889af20d1c39a2bfc637461175a3ea65d6c75949d04c5fd87140f3b91c8912352de080c45e357#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-named-capturing-groups-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-named-capturing-groups-regex-npm-7.24.7-68b2f48b40-10c0.zip/node_modules/@babel/plugin-transform-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-named-capturing-groups-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-named-capturing-groups-regex-virtual-8bd6c20689/7/.yarn/berry/cache/@babel-plugin-transform-named-capturing-groups-regex-npm-7.24.7-68b2f48b40-10c0.zip/node_modules/@babel/plugin-transform-named-capturing-groups-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-named-capturing-groups-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-new-target", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-new-target-npm-7.24.7-cb95d780d4-10c0.zip/node_modules/@babel/plugin-transform-new-target/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-new-target", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-new-target-virtual-8f61fb93ce/7/.yarn/berry/cache/@babel-plugin-transform-new-target-npm-7.24.7-cb95d780d4-10c0.zip/node_modules/@babel/plugin-transform-new-target/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-new-target", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-nullish-coalescing-operator", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-nullish-coalescing-operator-npm-7.24.7-91cfb40042-10c0.zip/node_modules/@babel/plugin-transform-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-nullish-coalescing-operator", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-nullish-coalescing-operator-virtual-c5811c06a7/7/.yarn/berry/cache/@babel-plugin-transform-nullish-coalescing-operator-npm-7.24.7-91cfb40042-10c0.zip/node_modules/@babel/plugin-transform-nullish-coalescing-operator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-nullish-coalescing-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-numeric-separator", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-numeric-separator-npm-7.24.7-70370e84d8-10c0.zip/node_modules/@babel/plugin-transform-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-numeric-separator", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-numeric-separator-virtual-b930fd3931/7/.yarn/berry/cache/@babel-plugin-transform-numeric-separator-npm-7.24.7-70370e84d8-10c0.zip/node_modules/@babel/plugin-transform-numeric-separator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-numeric-separator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-object-rest-spread", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-object-rest-spread-npm-7.24.7-c5bcb6d635-10c0.zip/node_modules/@babel/plugin-transform-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-rest-spread", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-object-rest-spread-virtual-059cd07b28/7/.yarn/berry/cache/@babel-plugin-transform-object-rest-spread-npm-7.24.7-c5bcb6d635-10c0.zip/node_modules/@babel/plugin-transform-object-rest-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-rest-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-transform-parameters", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-object-super", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-object-super-npm-7.24.7-8b4ef26bc1-10c0.zip/node_modules/@babel/plugin-transform-object-super/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-super", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-object-super-virtual-2d8abf1200/7/.yarn/berry/cache/@babel-plugin-transform-object-super-npm-7.24.7-8b4ef26bc1-10c0.zip/node_modules/@babel/plugin-transform-object-super/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-object-super", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-replace-supers", "virtual:9132585a087f24f587bc6bcca54f2c696be8bab1b673fcb64762e6387feffd09edafd9215518643c3dfc7d343334fd424a558b410be265c6c107ea11937a778a#npm:7.25.0"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-optional-catch-binding", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-optional-catch-binding-npm-7.24.7-4dc481e34f-10c0.zip/node_modules/@babel/plugin-transform-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-catch-binding", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-optional-catch-binding-virtual-9bfd95239d/7/.yarn/berry/cache/@babel-plugin-transform-optional-catch-binding-npm-7.24.7-4dc481e34f-10c0.zip/node_modules/@babel/plugin-transform-optional-catch-binding/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-catch-binding", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-optional-chaining", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-optional-chaining-npm-7.24.8-3f07208b22-10c0.zip/node_modules/@babel/plugin-transform-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-chaining", "npm:7.24.8"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-optional-chaining-virtual-10568edece/7/.yarn/berry/cache/@babel-plugin-transform-optional-chaining-npm-7.24.8-3f07208b22-10c0.zip/node_modules/@babel/plugin-transform-optional-chaining/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-parameters", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-parameters-npm-7.24.7-d18b1cfc71-10c0.zip/node_modules/@babel/plugin-transform-parameters/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-parameters", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-parameters-virtual-1d12a0457b/7/.yarn/berry/cache/@babel-plugin-transform-parameters-npm-7.24.7-d18b1cfc71-10c0.zip/node_modules/@babel/plugin-transform-parameters/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-parameters", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-private-methods", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-private-methods-npm-7.24.7-a20cce0583-10c0.zip/node_modules/@babel/plugin-transform-private-methods/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-methods", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-private-methods-virtual-3d917c6228/7/.yarn/berry/cache/@babel-plugin-transform-private-methods-npm-7.24.7-a20cce0583-10c0.zip/node_modules/@babel/plugin-transform-private-methods/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-methods", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-class-features-plugin", "virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-private-property-in-object", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-private-property-in-object-npm-7.24.7-96a62af9e6-10c0.zip/node_modules/@babel/plugin-transform-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-property-in-object", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-private-property-in-object-virtual-0efa89283f/7/.yarn/berry/cache/@babel-plugin-transform-private-property-in-object-npm-7.24.7-96a62af9e6-10c0.zip/node_modules/@babel/plugin-transform-private-property-in-object/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-annotate-as-pure", "npm:7.24.7"],\ + ["@babel/helper-create-class-features-plugin", "virtual:681429c17edac5a4b7f0bc75426ec9782fc051d5f7ad6b1150cf05a1d9bbd05135c8356556eacffa09ce7dd734a8d4723efd727b79c2b09677c3175f86ff133e#npm:7.25.0"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-property-literals", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-property-literals-npm-7.24.7-d2b997a7b0-10c0.zip/node_modules/@babel/plugin-transform-property-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-property-literals", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-property-literals-virtual-84968bee1f/7/.yarn/berry/cache/@babel-plugin-transform-property-literals-npm-7.24.7-d2b997a7b0-10c0.zip/node_modules/@babel/plugin-transform-property-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-property-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-regenerator", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-regenerator-npm-7.24.7-7ba719f821-10c0.zip/node_modules/@babel/plugin-transform-regenerator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-regenerator", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-regenerator-virtual-eefad47ec7/7/.yarn/berry/cache/@babel-plugin-transform-regenerator-npm-7.24.7-7ba719f821-10c0.zip/node_modules/@babel/plugin-transform-regenerator/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-regenerator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null],\ + ["regenerator-transform", "npm:0.15.2"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-reserved-words", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-reserved-words-npm-7.24.7-b2adfbf85a-10c0.zip/node_modules/@babel/plugin-transform-reserved-words/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-reserved-words", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-reserved-words-virtual-18cecaaeaf/7/.yarn/berry/cache/@babel-plugin-transform-reserved-words-npm-7.24.7-b2adfbf85a-10c0.zip/node_modules/@babel/plugin-transform-reserved-words/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-reserved-words", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-shorthand-properties", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-shorthand-properties-npm-7.24.7-bc90ee60de-10c0.zip/node_modules/@babel/plugin-transform-shorthand-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-shorthand-properties", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-shorthand-properties-virtual-b708b42e3a/7/.yarn/berry/cache/@babel-plugin-transform-shorthand-properties-npm-7.24.7-bc90ee60de-10c0.zip/node_modules/@babel/plugin-transform-shorthand-properties/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-shorthand-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-spread", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-spread-npm-7.24.7-0009f44d3c-10c0.zip/node_modules/@babel/plugin-transform-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-spread", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-spread-virtual-c4b9a66e76/7/.yarn/berry/cache/@babel-plugin-transform-spread-npm-7.24.7-0009f44d3c-10c0.zip/node_modules/@babel/plugin-transform-spread/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-skip-transparent-expression-wrappers", "npm:7.24.7"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-sticky-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-sticky-regex-npm-7.24.7-98cd1af8a9-10c0.zip/node_modules/@babel/plugin-transform-sticky-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-sticky-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-sticky-regex-virtual-264602be27/7/.yarn/berry/cache/@babel-plugin-transform-sticky-regex-npm-7.24.7-98cd1af8a9-10c0.zip/node_modules/@babel/plugin-transform-sticky-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-sticky-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-template-literals", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-template-literals-npm-7.24.7-0ecb9f0cf5-10c0.zip/node_modules/@babel/plugin-transform-template-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-template-literals", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-template-literals-virtual-1769620cd0/7/.yarn/berry/cache/@babel-plugin-transform-template-literals-npm-7.24.7-0ecb9f0cf5-10c0.zip/node_modules/@babel/plugin-transform-template-literals/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-template-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-typeof-symbol", [\ + ["npm:7.24.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-typeof-symbol-npm-7.24.8-105494a49d-10c0.zip/node_modules/@babel/plugin-transform-typeof-symbol/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-typeof-symbol", "npm:7.24.8"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-typeof-symbol-virtual-54b35ebcc5/7/.yarn/berry/cache/@babel-plugin-transform-typeof-symbol-npm-7.24.8-105494a49d-10c0.zip/node_modules/@babel/plugin-transform-typeof-symbol/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-typeof-symbol", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-escapes", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-unicode-escapes-npm-7.24.7-39ca160006-10c0.zip/node_modules/@babel/plugin-transform-unicode-escapes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-escapes", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-escapes-virtual-76df78369e/7/.yarn/berry/cache/@babel-plugin-transform-unicode-escapes-npm-7.24.7-39ca160006-10c0.zip/node_modules/@babel/plugin-transform-unicode-escapes/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-escapes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-property-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-unicode-property-regex-npm-7.24.7-6d5a35d7ce-10c0.zip/node_modules/@babel/plugin-transform-unicode-property-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-property-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-property-regex-virtual-ee7b606c92/7/.yarn/berry/cache/@babel-plugin-transform-unicode-property-regex-npm-7.24.7-6d5a35d7ce-10c0.zip/node_modules/@babel/plugin-transform-unicode-property-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-property-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-unicode-regex-npm-7.24.7-c5a44da0ea-10c0.zip/node_modules/@babel/plugin-transform-unicode-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-regex-virtual-62b4c5aa06/7/.yarn/berry/cache/@babel-plugin-transform-unicode-regex-npm-7.24.7-c5a44da0ea-10c0.zip/node_modules/@babel/plugin-transform-unicode-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/plugin-transform-unicode-sets-regex", [\ + ["npm:7.24.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-plugin-transform-unicode-sets-regex-npm-7.24.7-f4501a8afb-10c0.zip/node_modules/@babel/plugin-transform-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-sets-regex", "npm:7.24.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7", {\ + "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-unicode-sets-regex-virtual-bb741e9736/7/.yarn/berry/cache/@babel-plugin-transform-unicode-sets-regex-npm-7.24.7-f4501a8afb-10c0.zip/node_modules/@babel/plugin-transform-unicode-sets-regex/",\ + "packageDependencies": [\ + ["@babel/plugin-transform-unicode-sets-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-create-regexp-features-plugin", "virtual:2a42cc57ff94711d4160b886899c2c3cd35c897c2b49c834e9cfbdd0111a69dd946a7fd16fb629c5cd2b443a91cfa7b3ea9cb9516a36ecfee1279517471e7615#npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/preset-env", [\ + ["npm:7.25.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-preset-env-npm-7.25.3-a7ef94f447-10c0.zip/node_modules/@babel/preset-env/",\ + "packageDependencies": [\ + ["@babel/preset-env", "npm:7.25.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.25.3", {\ + "packageLocation": "./.yarn/__virtual__/@babel-preset-env-virtual-94915a8efb/7/.yarn/berry/cache/@babel-preset-env-npm-7.25.3-a7ef94f447-10c0.zip/node_modules/@babel/preset-env/",\ + "packageDependencies": [\ + ["@babel/preset-env", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.25.3"],\ + ["@babel/compat-data", "npm:7.25.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-compilation-targets", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/helper-validator-option", "npm:7.24.8"],\ + ["@babel/plugin-bugfix-firefox-class-in-computed-class-key", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.3"],\ + ["@babel/plugin-bugfix-safari-class-field-initializer-scope", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-proposal-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.21.0-placeholder-for-preset-env.2"],\ + ["@babel/plugin-syntax-async-generators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.4"],\ + ["@babel/plugin-syntax-class-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.12.13"],\ + ["@babel/plugin-syntax-class-static-block", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/plugin-syntax-dynamic-import", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-export-namespace-from", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-import-assertions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-syntax-import-attributes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-syntax-import-meta", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/plugin-syntax-json-strings", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-logical-assignment-operators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/plugin-syntax-nullish-coalescing-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-numeric-separator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.10.4"],\ + ["@babel/plugin-syntax-object-rest-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-catch-binding", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.8.3"],\ + ["@babel/plugin-syntax-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/plugin-syntax-top-level-await", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.14.5"],\ + ["@babel/plugin-syntax-unicode-sets-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.18.6"],\ + ["@babel/plugin-transform-arrow-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-async-generator-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-transform-async-to-generator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-block-scoped-functions", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-block-scoping", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-transform-class-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-class-static-block", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-classes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-transform-computed-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-destructuring", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/plugin-transform-dotall-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-duplicate-keys", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-duplicate-named-capturing-groups-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-transform-dynamic-import", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-exponentiation-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-export-namespace-from", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-for-of", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-function-name", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.1"],\ + ["@babel/plugin-transform-json-strings", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.2"],\ + ["@babel/plugin-transform-logical-assignment-operators", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-member-expression-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-modules-amd", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-modules-commonjs", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/plugin-transform-modules-systemjs", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.25.0"],\ + ["@babel/plugin-transform-modules-umd", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-named-capturing-groups-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-new-target", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-nullish-coalescing-operator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-numeric-separator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-object-rest-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-object-super", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-optional-catch-binding", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-optional-chaining", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/plugin-transform-parameters", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-private-methods", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-private-property-in-object", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-property-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-regenerator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-reserved-words", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-shorthand-properties", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-spread", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-sticky-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-template-literals", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-typeof-symbol", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.8"],\ + ["@babel/plugin-transform-unicode-escapes", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-unicode-property-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-unicode-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/plugin-transform-unicode-sets-regex", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:7.24.7"],\ + ["@babel/preset-modules", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.1.6-no-external-plugins"],\ + ["@types/babel__core", null],\ + ["babel-plugin-polyfill-corejs2", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.4.11"],\ + ["babel-plugin-polyfill-corejs3", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.10.6"],\ + ["babel-plugin-polyfill-regenerator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.6.2"],\ + ["core-js-compat", "npm:3.38.0"],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/preset-modules", [\ + ["npm:0.1.6-no-external-plugins", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-preset-modules-npm-0.1.6-no-external-plugins-0ae0b52ff3-10c0.zip/node_modules/@babel/preset-modules/",\ + "packageDependencies": [\ + ["@babel/preset-modules", "npm:0.1.6-no-external-plugins"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.1.6-no-external-plugins", {\ + "packageLocation": "./.yarn/__virtual__/@babel-preset-modules-virtual-13af8e0946/7/.yarn/berry/cache/@babel-preset-modules-npm-0.1.6-no-external-plugins-0ae0b52ff3-10c0.zip/node_modules/@babel/preset-modules/",\ + "packageDependencies": [\ + ["@babel/preset-modules", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.1.6-no-external-plugins"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-plugin-utils", "npm:7.24.8"],\ + ["@babel/types", "npm:7.25.2"],\ + ["@types/babel__core", null],\ + ["esutils", "npm:2.0.3"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/register", [\ + ["npm:7.24.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-register-npm-7.24.6-624417b242-10c0.zip/node_modules/@babel/register/",\ + "packageDependencies": [\ + ["@babel/register", "npm:7.24.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.6", {\ + "packageLocation": "./.yarn/__virtual__/@babel-register-virtual-8ebf69d00d/7/.yarn/berry/cache/@babel-register-npm-7.24.6-624417b242-10c0.zip/node_modules/@babel/register/",\ + "packageDependencies": [\ + ["@babel/register", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.6"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@types/babel__core", null],\ + ["clone-deep", "npm:4.0.1"],\ + ["find-cache-dir", "npm:2.1.0"],\ + ["make-dir", "npm:2.1.0"],\ + ["pirates", "npm:4.0.6"],\ + ["source-map-support", "npm:0.5.21"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/regjsgen", [\ + ["npm:0.8.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-regjsgen-npm-0.8.0-b0fbdbf644-10c0.zip/node_modules/@babel/regjsgen/",\ + "packageDependencies": [\ + ["@babel/regjsgen", "npm:0.8.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/runtime", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-runtime-npm-7.25.0-a7bca33687-10c0.zip/node_modules/@babel/runtime/",\ + "packageDependencies": [\ + ["@babel/runtime", "npm:7.25.0"],\ + ["regenerator-runtime", "npm:0.14.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/template", [\ + ["npm:7.25.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-template-npm-7.25.0-2c6ddcb43a-10c0.zip/node_modules/@babel/template/",\ + "packageDependencies": [\ + ["@babel/template", "npm:7.25.0"],\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["@babel/parser", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/traverse", [\ + ["npm:7.25.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-traverse-npm-7.25.3-69c3455e97-10c0.zip/node_modules/@babel/traverse/",\ + "packageDependencies": [\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["@babel/generator", "npm:7.25.0"],\ + ["@babel/parser", "npm:7.25.3"],\ + ["@babel/template", "npm:7.25.0"],\ + ["@babel/types", "npm:7.25.2"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["globals", "npm:11.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@babel/types", [\ + ["npm:7.25.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@babel-types-npm-7.25.2-7d3fc0ed1e-10c0.zip/node_modules/@babel/types/",\ + "packageDependencies": [\ + ["@babel/types", "npm:7.25.2"],\ + ["@babel/helper-string-parser", "npm:7.24.8"],\ + ["@babel/helper-validator-identifier", "npm:7.24.7"],\ + ["to-fast-properties", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@colors/colors", [\ + ["npm:1.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@colors-colors-npm-1.5.0-875af3a8b4-10c0.zip/node_modules/@colors/colors/",\ + "packageDependencies": [\ + ["@colors/colors", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@colors-colors-npm-1.6.0-47f686c4e2-10c0.zip/node_modules/@colors/colors/",\ + "packageDependencies": [\ + ["@colors/colors", "npm:1.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint-community/eslint-utils", [\ + ["npm:4.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-10c0.zip/node_modules/@eslint-community/eslint-utils/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "npm:4.4.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:4286e12a3a0f74af013bc8f16c6d8fdde823cfbf6389660266b171e551f576c805b0a7a8eb2a7087a5cee7dfe6ebb6e1ea3808d93daf915edc95656907a381bb#npm:4.4.0", {\ + "packageLocation": "./.yarn/__virtual__/@eslint-community-eslint-utils-virtual-1c7da85a1a/7/.yarn/berry/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-10c0.zip/node_modules/@eslint-community/eslint-utils/",\ + "packageDependencies": [\ + ["@eslint-community/eslint-utils", "virtual:4286e12a3a0f74af013bc8f16c6d8fdde823cfbf6389660266b171e551f576c805b0a7a8eb2a7087a5cee7dfe6ebb6e1ea3808d93daf915edc95656907a381bb#npm:4.4.0"],\ + ["@types/eslint", null],\ + ["eslint", "npm:8.57.0"],\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint-community/regexpp", [\ + ["npm:4.11.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@eslint-community-regexpp-npm-4.11.0-dd7ae18a6d-10c0.zip/node_modules/@eslint-community/regexpp/",\ + "packageDependencies": [\ + ["@eslint-community/regexpp", "npm:4.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint/eslintrc", [\ + ["npm:2.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10c0.zip/node_modules/@eslint/eslintrc/",\ + "packageDependencies": [\ + ["@eslint/eslintrc", "npm:2.1.4"],\ + ["ajv", "npm:6.12.6"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["espree", "npm:9.6.1"],\ + ["globals", "npm:13.24.0"],\ + ["ignore", "npm:5.3.1"],\ + ["import-fresh", "npm:3.3.0"],\ + ["js-yaml", "npm:4.1.0"],\ + ["minimatch", "npm:3.1.2"],\ + ["strip-json-comments", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@eslint/js", [\ + ["npm:8.57.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@eslint-js-npm-8.57.0-00ead3710a-10c0.zip/node_modules/@eslint/js/",\ + "packageDependencies": [\ + ["@eslint/js", "npm:8.57.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/config-array", [\ + ["npm:0.11.14", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@humanwhocodes-config-array-npm-0.11.14-94a02fcc87-10c0.zip/node_modules/@humanwhocodes/config-array/",\ + "packageDependencies": [\ + ["@humanwhocodes/config-array", "npm:0.11.14"],\ + ["@humanwhocodes/object-schema", "npm:2.0.3"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["minimatch", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/module-importer", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-10c0.zip/node_modules/@humanwhocodes/module-importer/",\ + "packageDependencies": [\ + ["@humanwhocodes/module-importer", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@humanwhocodes/object-schema", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@humanwhocodes-object-schema-npm-2.0.3-4f0e508cd9-10c0.zip/node_modules/@humanwhocodes/object-schema/",\ + "packageDependencies": [\ + ["@humanwhocodes/object-schema", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@isaacs/cliui", [\ + ["npm:8.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-10c0.zip/node_modules/@isaacs/cliui/",\ + "packageDependencies": [\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["string-width", "npm:5.1.2"],\ + ["string-width-cjs", [\ + "string-width",\ + "npm:4.2.3"\ + ]],\ + ["strip-ansi", "npm:7.1.0"],\ + ["strip-ansi-cjs", [\ + "strip-ansi",\ + "npm:6.0.1"\ + ]],\ + ["wrap-ansi", "npm:8.1.0"],\ + ["wrap-ansi-cjs", [\ + "wrap-ansi",\ + "npm:7.0.0"\ + ]]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/gen-mapping", [\ + ["npm:0.3.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-gen-mapping-npm-0.3.5-d8b85ebeaf-10c0.zip/node_modules/@jridgewell/gen-mapping/",\ + "packageDependencies": [\ + ["@jridgewell/gen-mapping", "npm:0.3.5"],\ + ["@jridgewell/set-array", "npm:1.2.1"],\ + ["@jridgewell/sourcemap-codec", "npm:1.5.0"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/resolve-uri", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-resolve-uri-npm-3.1.2-5bc4245992-10c0.zip/node_modules/@jridgewell/resolve-uri/",\ + "packageDependencies": [\ + ["@jridgewell/resolve-uri", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/set-array", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-set-array-npm-1.2.1-2312928209-10c0.zip/node_modules/@jridgewell/set-array/",\ + "packageDependencies": [\ + ["@jridgewell/set-array", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/source-map", [\ + ["npm:0.3.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-source-map-npm-0.3.6-fe0849eb05-10c0.zip/node_modules/@jridgewell/source-map/",\ + "packageDependencies": [\ + ["@jridgewell/source-map", "npm:0.3.6"],\ + ["@jridgewell/gen-mapping", "npm:0.3.5"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/sourcemap-codec", [\ + ["npm:1.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-sourcemap-codec-npm-1.5.0-dfd9126d71-10c0.zip/node_modules/@jridgewell/sourcemap-codec/",\ + "packageDependencies": [\ + ["@jridgewell/sourcemap-codec", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jridgewell/trace-mapping", [\ + ["npm:0.3.25", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jridgewell-trace-mapping-npm-0.3.25-c076fd2279-10c0.zip/node_modules/@jridgewell/trace-mapping/",\ + "packageDependencies": [\ + ["@jridgewell/trace-mapping", "npm:0.3.25"],\ + ["@jridgewell/resolve-uri", "npm:3.1.2"],\ + ["@jridgewell/sourcemap-codec", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jsonjoy.com/base64", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jsonjoy.com-base64-npm-1.1.2-dc65678552-10c0.zip/node_modules/@jsonjoy.com/base64/",\ + "packageDependencies": [\ + ["@jsonjoy.com/base64", "npm:1.1.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.1.2", {\ + "packageLocation": "./.yarn/__virtual__/@jsonjoy.com-base64-virtual-f8dc4d027a/7/.yarn/berry/cache/@jsonjoy.com-base64-npm-1.1.2-dc65678552-10c0.zip/node_modules/@jsonjoy.com/base64/",\ + "packageDependencies": [\ + ["@jsonjoy.com/base64", "virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.1.2"],\ + ["@types/tslib", null],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "packagePeers": [\ + "@types/tslib",\ + "tslib"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jsonjoy.com/json-pack", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jsonjoy.com-json-pack-npm-1.0.4-52a7eae8bc-10c0.zip/node_modules/@jsonjoy.com/json-pack/",\ + "packageDependencies": [\ + ["@jsonjoy.com/json-pack", "npm:1.0.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.4", {\ + "packageLocation": "./.yarn/__virtual__/@jsonjoy.com-json-pack-virtual-280cc392d2/7/.yarn/berry/cache/@jsonjoy.com-json-pack-npm-1.0.4-52a7eae8bc-10c0.zip/node_modules/@jsonjoy.com/json-pack/",\ + "packageDependencies": [\ + ["@jsonjoy.com/json-pack", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.4"],\ + ["@jsonjoy.com/base64", "virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.1.2"],\ + ["@jsonjoy.com/util", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.3.0"],\ + ["@types/tslib", null],\ + ["hyperdyperid", "npm:1.2.0"],\ + ["thingies", "virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.21.0"],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "packagePeers": [\ + "@types/tslib",\ + "tslib"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@jsonjoy.com/util", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@jsonjoy.com-util-npm-1.3.0-43ce0768ec-10c0.zip/node_modules/@jsonjoy.com/util/",\ + "packageDependencies": [\ + ["@jsonjoy.com/util", "npm:1.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.3.0", {\ + "packageLocation": "./.yarn/__virtual__/@jsonjoy.com-util-virtual-a5ef13ad22/7/.yarn/berry/cache/@jsonjoy.com-util-npm-1.3.0-43ce0768ec-10c0.zip/node_modules/@jsonjoy.com/util/",\ + "packageDependencies": [\ + ["@jsonjoy.com/util", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.3.0"],\ + ["@types/tslib", null],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "packagePeers": [\ + "@types/tslib",\ + "tslib"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@leichtgewicht/ip-codec", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@leichtgewicht-ip-codec-npm-2.0.5-23deb9e4c5-10c0.zip/node_modules/@leichtgewicht/ip-codec/",\ + "packageDependencies": [\ + ["@leichtgewicht/ip-codec", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nicolo-ribaudo/chokidar-2", [\ + ["npm:2.1.8-no-fsevents.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@nicolo-ribaudo-chokidar-2-npm-2.1.8-no-fsevents.3-79ca8bfcef-10c0.zip/node_modules/@nicolo-ribaudo/chokidar-2/",\ + "packageDependencies": [\ + ["@nicolo-ribaudo/chokidar-2", "npm:2.1.8-no-fsevents.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.scandir", [\ + ["npm:2.1.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-10c0.zip/node_modules/@nodelib/fs.scandir/",\ + "packageDependencies": [\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["@nodelib/fs.stat", "npm:2.0.5"],\ + ["run-parallel", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.stat", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-10c0.zip/node_modules/@nodelib/fs.stat/",\ + "packageDependencies": [\ + ["@nodelib/fs.stat", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.walk", [\ + ["npm:1.2.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-10c0.zip/node_modules/@nodelib/fs.walk/",\ + "packageDependencies": [\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["fastq", "npm:1.17.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/agent", [\ + ["npm:2.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@npmcli-agent-npm-2.2.2-e2f559d6c0-10c0.zip/node_modules/@npmcli/agent/",\ + "packageDependencies": [\ + ["@npmcli/agent", "npm:2.2.2"],\ + ["agent-base", "npm:7.1.1"],\ + ["http-proxy-agent", "npm:7.0.2"],\ + ["https-proxy-agent", "npm:7.0.5"],\ + ["lru-cache", "npm:10.4.3"],\ + ["socks-proxy-agent", "npm:8.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@npmcli/fs", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@npmcli-fs-npm-3.1.1-c19bd09f3c-10c0.zip/node_modules/@npmcli/fs/",\ + "packageDependencies": [\ + ["@npmcli/fs", "npm:3.1.1"],\ + ["semver", "npm:7.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@pkgjs/parseargs", [\ + ["npm:0.11.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-10c0.zip/node_modules/@pkgjs/parseargs/",\ + "packageDependencies": [\ + ["@pkgjs/parseargs", "npm:0.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm-eabi", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.20.0-9f3c8246b3/node_modules/@rollup/rollup-android-arm-eabi/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm-eabi", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-android-arm64", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm64-npm-4.20.0-06ef8b091e/node_modules/@rollup/rollup-android-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-android-arm64", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-arm64", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-arm64-npm-4.20.0-7383387ad5/node_modules/@rollup/rollup-darwin-arm64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-arm64", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-darwin-x64", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-x64-npm-4.20.0-cc007e13bd/node_modules/@rollup/rollup-darwin-x64/",\ + "packageDependencies": [\ + ["@rollup/rollup-darwin-x64", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-gnueabihf", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-gnueabihf-npm-4.20.0-7310d197c4/node_modules/@rollup/rollup-linux-arm-gnueabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm-musleabihf", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-musleabihf-npm-4.20.0-d7fb772035/node_modules/@rollup/rollup-linux-arm-musleabihf/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-gnu", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-gnu-npm-4.20.0-53bae9ba20/node_modules/@rollup/rollup-linux-arm64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-arm64-musl", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-musl-npm-4.20.0-d73aa72852/node_modules/@rollup/rollup-linux-arm64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-powerpc64le-gnu", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-powerpc64le-gnu-npm-4.20.0-2d406bee7e/node_modules/@rollup/rollup-linux-powerpc64le-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-powerpc64le-gnu", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-riscv64-gnu", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-riscv64-gnu-npm-4.20.0-d23afc482b/node_modules/@rollup/rollup-linux-riscv64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-s390x-gnu", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-s390x-gnu-npm-4.20.0-9ff43ee6c6/node_modules/@rollup/rollup-linux-s390x-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-gnu", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-gnu-npm-4.20.0-3a2f9a8c64/node_modules/@rollup/rollup-linux-x64-gnu/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-linux-x64-musl", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-musl-npm-4.20.0-40461f28e6/node_modules/@rollup/rollup-linux-x64-musl/",\ + "packageDependencies": [\ + ["@rollup/rollup-linux-x64-musl", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-arm64-msvc", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-arm64-msvc-npm-4.20.0-3087d4cbb1/node_modules/@rollup/rollup-win32-arm64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-ia32-msvc", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-ia32-msvc-npm-4.20.0-c31640e23e/node_modules/@rollup/rollup-win32-ia32-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@rollup/rollup-win32-x64-msvc", [\ + ["npm:4.20.0", {\ + "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-msvc-npm-4.20.0-c63a25623d/node_modules/@rollup/rollup-win32-x64-msvc/",\ + "packageDependencies": [\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.20.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@socket.io/component-emitter", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@socket.io-component-emitter-npm-3.1.2-bc4133d33f-10c0.zip/node_modules/@socket.io/component-emitter/",\ + "packageDependencies": [\ + ["@socket.io/component-emitter", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/body-parser", [\ + ["npm:1.19.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-body-parser-npm-1.19.5-97fb106976-10c0.zip/node_modules/@types/body-parser/",\ + "packageDependencies": [\ + ["@types/body-parser", "npm:1.19.5"],\ + ["@types/connect", "npm:3.4.38"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/bonjour", [\ + ["npm:3.5.13", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-bonjour-npm-3.5.13-6614f112a1-10c0.zip/node_modules/@types/bonjour/",\ + "packageDependencies": [\ + ["@types/bonjour", "npm:3.5.13"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/connect", [\ + ["npm:3.4.38", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-connect-npm-3.4.38-a8a4c38337-10c0.zip/node_modules/@types/connect/",\ + "packageDependencies": [\ + ["@types/connect", "npm:3.4.38"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/connect-history-api-fallback", [\ + ["npm:1.5.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-connect-history-api-fallback-npm-1.5.4-c8b583432c-10c0.zip/node_modules/@types/connect-history-api-fallback/",\ + "packageDependencies": [\ + ["@types/connect-history-api-fallback", "npm:1.5.4"],\ + ["@types/express-serve-static-core", "npm:4.19.5"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/cookie", [\ + ["npm:0.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-cookie-npm-0.4.1-274a704dc6-10c0.zip/node_modules/@types/cookie/",\ + "packageDependencies": [\ + ["@types/cookie", "npm:0.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/cors", [\ + ["npm:2.8.17", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-cors-npm-2.8.17-2556d16051-10c0.zip/node_modules/@types/cors/",\ + "packageDependencies": [\ + ["@types/cors", "npm:2.8.17"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/eslint", [\ + ["npm:9.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-eslint-npm-9.6.0-85c3542082-10c0.zip/node_modules/@types/eslint/",\ + "packageDependencies": [\ + ["@types/eslint", "npm:9.6.0"],\ + ["@types/estree", "npm:1.0.5"],\ + ["@types/json-schema", "npm:7.0.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/eslint-scope", [\ + ["npm:3.7.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-eslint-scope-npm-3.7.7-efa26592f6-10c0.zip/node_modules/@types/eslint-scope/",\ + "packageDependencies": [\ + ["@types/eslint-scope", "npm:3.7.7"],\ + ["@types/eslint", "npm:9.6.0"],\ + ["@types/estree", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/estree", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-estree-npm-1.0.5-5b7faed3b4-10c0.zip/node_modules/@types/estree/",\ + "packageDependencies": [\ + ["@types/estree", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/express", [\ + ["npm:4.17.21", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-express-npm-4.17.21-be92a0245e-10c0.zip/node_modules/@types/express/",\ + "packageDependencies": [\ + ["@types/express", "npm:4.17.21"],\ + ["@types/body-parser", "npm:1.19.5"],\ + ["@types/express-serve-static-core", "npm:4.19.5"],\ + ["@types/qs", "npm:6.9.15"],\ + ["@types/serve-static", "npm:1.15.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/express-serve-static-core", [\ + ["npm:4.19.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-express-serve-static-core-npm-4.19.5-6a71bb1fe8-10c0.zip/node_modules/@types/express-serve-static-core/",\ + "packageDependencies": [\ + ["@types/express-serve-static-core", "npm:4.19.5"],\ + ["@types/node", "npm:22.1.0"],\ + ["@types/qs", "npm:6.9.15"],\ + ["@types/range-parser", "npm:1.2.7"],\ + ["@types/send", "npm:0.17.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/http-errors", [\ + ["npm:2.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-http-errors-npm-2.0.4-8b39ca5d7c-10c0.zip/node_modules/@types/http-errors/",\ + "packageDependencies": [\ + ["@types/http-errors", "npm:2.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/http-proxy", [\ + ["npm:1.17.14", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-http-proxy-npm-1.17.14-170e4e32fb-10c0.zip/node_modules/@types/http-proxy/",\ + "packageDependencies": [\ + ["@types/http-proxy", "npm:1.17.14"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/json-schema", [\ + ["npm:7.0.15", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-json-schema-npm-7.0.15-fd16381786-10c0.zip/node_modules/@types/json-schema/",\ + "packageDependencies": [\ + ["@types/json-schema", "npm:7.0.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/mime", [\ + ["npm:1.3.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-mime-npm-1.3.5-48d28990db-10c0.zip/node_modules/@types/mime/",\ + "packageDependencies": [\ + ["@types/mime", "npm:1.3.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/node", [\ + ["npm:22.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-node-npm-22.1.0-3ca0e36ca8-10c0.zip/node_modules/@types/node/",\ + "packageDependencies": [\ + ["@types/node", "npm:22.1.0"],\ + ["undici-types", "npm:6.13.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/node-forge", [\ + ["npm:1.3.11", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-node-forge-npm-1.3.11-132541fb70-10c0.zip/node_modules/@types/node-forge/",\ + "packageDependencies": [\ + ["@types/node-forge", "npm:1.3.11"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/qs", [\ + ["npm:6.9.15", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-qs-npm-6.9.15-aae1b1e2f7-10c0.zip/node_modules/@types/qs/",\ + "packageDependencies": [\ + ["@types/qs", "npm:6.9.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/range-parser", [\ + ["npm:1.2.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-range-parser-npm-1.2.7-a83c0b6429-10c0.zip/node_modules/@types/range-parser/",\ + "packageDependencies": [\ + ["@types/range-parser", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/retry", [\ + ["npm:0.12.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-retry-npm-0.12.2-e1f0617c50-10c0.zip/node_modules/@types/retry/",\ + "packageDependencies": [\ + ["@types/retry", "npm:0.12.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/send", [\ + ["npm:0.17.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-send-npm-0.17.4-9d7c55577f-10c0.zip/node_modules/@types/send/",\ + "packageDependencies": [\ + ["@types/send", "npm:0.17.4"],\ + ["@types/mime", "npm:1.3.5"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/serve-index", [\ + ["npm:1.9.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-serve-index-npm-1.9.4-957ae0ac38-10c0.zip/node_modules/@types/serve-index/",\ + "packageDependencies": [\ + ["@types/serve-index", "npm:1.9.4"],\ + ["@types/express", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/serve-static", [\ + ["npm:1.15.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-serve-static-npm-1.15.7-d4eef0bd1a-10c0.zip/node_modules/@types/serve-static/",\ + "packageDependencies": [\ + ["@types/serve-static", "npm:1.15.7"],\ + ["@types/http-errors", "npm:2.0.4"],\ + ["@types/node", "npm:22.1.0"],\ + ["@types/send", "npm:0.17.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/sockjs", [\ + ["npm:0.3.36", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-sockjs-npm-0.3.36-e07c2960d5-10c0.zip/node_modules/@types/sockjs/",\ + "packageDependencies": [\ + ["@types/sockjs", "npm:0.3.36"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@types/ws", [\ + ["npm:8.5.12", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@types-ws-npm-8.5.12-90c42288cf-10c0.zip/node_modules/@types/ws/",\ + "packageDependencies": [\ + ["@types/ws", "npm:8.5.12"],\ + ["@types/node", "npm:22.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@ungap/structured-clone", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-10c0.zip/node_modules/@ungap/structured-clone/",\ + "packageDependencies": [\ + ["@ungap/structured-clone", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/ast", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-ast-npm-1.12.1-3ff9ea1c0e-10c0.zip/node_modules/@webassemblyjs/ast/",\ + "packageDependencies": [\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-numbers", "npm:1.11.6"],\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/floating-point-hex-parser", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-floating-point-hex-parser-npm-1.11.6-3a9928fc76-10c0.zip/node_modules/@webassemblyjs/floating-point-hex-parser/",\ + "packageDependencies": [\ + ["@webassemblyjs/floating-point-hex-parser", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/helper-api-error", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-helper-api-error-npm-1.11.6-75f6275ff4-10c0.zip/node_modules/@webassemblyjs/helper-api-error/",\ + "packageDependencies": [\ + ["@webassemblyjs/helper-api-error", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/helper-buffer", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-helper-buffer-npm-1.12.1-d025434a45-10c0.zip/node_modules/@webassemblyjs/helper-buffer/",\ + "packageDependencies": [\ + ["@webassemblyjs/helper-buffer", "npm:1.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/helper-numbers", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-helper-numbers-npm-1.11.6-819ddab1da-10c0.zip/node_modules/@webassemblyjs/helper-numbers/",\ + "packageDependencies": [\ + ["@webassemblyjs/helper-numbers", "npm:1.11.6"],\ + ["@webassemblyjs/floating-point-hex-parser", "npm:1.11.6"],\ + ["@webassemblyjs/helper-api-error", "npm:1.11.6"],\ + ["@xtuc/long", "npm:4.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/helper-wasm-bytecode", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-helper-wasm-bytecode-npm-1.11.6-3bc23747de-10c0.zip/node_modules/@webassemblyjs/helper-wasm-bytecode/",\ + "packageDependencies": [\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/helper-wasm-section", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-helper-wasm-section-npm-1.12.1-cd0e2f1eab-10c0.zip/node_modules/@webassemblyjs/helper-wasm-section/",\ + "packageDependencies": [\ + ["@webassemblyjs/helper-wasm-section", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-buffer", "npm:1.12.1"],\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"],\ + ["@webassemblyjs/wasm-gen", "npm:1.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/ieee754", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-ieee754-npm-1.11.6-95c92f446a-10c0.zip/node_modules/@webassemblyjs/ieee754/",\ + "packageDependencies": [\ + ["@webassemblyjs/ieee754", "npm:1.11.6"],\ + ["@xtuc/ieee754", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/leb128", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-leb128-npm-1.11.6-697d62da2e-10c0.zip/node_modules/@webassemblyjs/leb128/",\ + "packageDependencies": [\ + ["@webassemblyjs/leb128", "npm:1.11.6"],\ + ["@xtuc/long", "npm:4.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/utf8", [\ + ["npm:1.11.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-utf8-npm-1.11.6-102c4e5d68-10c0.zip/node_modules/@webassemblyjs/utf8/",\ + "packageDependencies": [\ + ["@webassemblyjs/utf8", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/wasm-edit", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-wasm-edit-npm-1.12.1-727bec592a-10c0.zip/node_modules/@webassemblyjs/wasm-edit/",\ + "packageDependencies": [\ + ["@webassemblyjs/wasm-edit", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-buffer", "npm:1.12.1"],\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"],\ + ["@webassemblyjs/helper-wasm-section", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-gen", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-opt", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-parser", "npm:1.12.1"],\ + ["@webassemblyjs/wast-printer", "npm:1.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/wasm-gen", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-wasm-gen-npm-1.12.1-bbe22ad265-10c0.zip/node_modules/@webassemblyjs/wasm-gen/",\ + "packageDependencies": [\ + ["@webassemblyjs/wasm-gen", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"],\ + ["@webassemblyjs/ieee754", "npm:1.11.6"],\ + ["@webassemblyjs/leb128", "npm:1.11.6"],\ + ["@webassemblyjs/utf8", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/wasm-opt", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-wasm-opt-npm-1.12.1-450c932de6-10c0.zip/node_modules/@webassemblyjs/wasm-opt/",\ + "packageDependencies": [\ + ["@webassemblyjs/wasm-opt", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-buffer", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-gen", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-parser", "npm:1.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/wasm-parser", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-wasm-parser-npm-1.12.1-54a7a19806-10c0.zip/node_modules/@webassemblyjs/wasm-parser/",\ + "packageDependencies": [\ + ["@webassemblyjs/wasm-parser", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/helper-api-error", "npm:1.11.6"],\ + ["@webassemblyjs/helper-wasm-bytecode", "npm:1.11.6"],\ + ["@webassemblyjs/ieee754", "npm:1.11.6"],\ + ["@webassemblyjs/leb128", "npm:1.11.6"],\ + ["@webassemblyjs/utf8", "npm:1.11.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@webassemblyjs/wast-printer", [\ + ["npm:1.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@webassemblyjs-wast-printer-npm-1.12.1-e75655c7ff-10c0.zip/node_modules/@webassemblyjs/wast-printer/",\ + "packageDependencies": [\ + ["@webassemblyjs/wast-printer", "npm:1.12.1"],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@xtuc/long", "npm:4.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@xtuc/ieee754", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@xtuc-ieee754-npm-1.2.0-ec0ce4e025-10c0.zip/node_modules/@xtuc/ieee754/",\ + "packageDependencies": [\ + ["@xtuc/ieee754", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@xtuc/long", [\ + ["npm:4.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/@xtuc-long-npm-4.2.2-37236e6d72-10c0.zip/node_modules/@xtuc/long/",\ + "packageDependencies": [\ + ["@xtuc/long", "npm:4.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["abbrev", [\ + ["npm:1.0.9", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/abbrev-npm-1.0.9-cd7db4ee43-10c0.zip/node_modules/abbrev/",\ + "packageDependencies": [\ + ["abbrev", "npm:1.0.9"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/abbrev-npm-1.1.1-3659247eab-10c0.zip/node_modules/abbrev/",\ + "packageDependencies": [\ + ["abbrev", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/abbrev-npm-2.0.0-0eb38a17e5-10c0.zip/node_modules/abbrev/",\ + "packageDependencies": [\ + ["abbrev", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["accepts", [\ + ["npm:1.3.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/accepts-npm-1.3.8-9a812371c9-10c0.zip/node_modules/accepts/",\ + "packageDependencies": [\ + ["accepts", "npm:1.3.8"],\ + ["mime-types", "npm:2.1.35"],\ + ["negotiator", "npm:0.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn", [\ + ["npm:6.4.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/acorn-npm-6.4.2-94943eb66c-10c0.zip/node_modules/acorn/",\ + "packageDependencies": [\ + ["acorn", "npm:6.4.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.12.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/acorn-npm-8.12.1-610871d57c-10c0.zip/node_modules/acorn/",\ + "packageDependencies": [\ + ["acorn", "npm:8.12.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn-import-attributes", [\ + ["npm:1.9.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/acorn-import-attributes-npm-1.9.5-d1e666eb35-10c0.zip/node_modules/acorn-import-attributes/",\ + "packageDependencies": [\ + ["acorn-import-attributes", "npm:1.9.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:1.9.5", {\ + "packageLocation": "./.yarn/__virtual__/acorn-import-attributes-virtual-52222bd60f/7/.yarn/berry/cache/acorn-import-attributes-npm-1.9.5-d1e666eb35-10c0.zip/node_modules/acorn-import-attributes/",\ + "packageDependencies": [\ + ["acorn-import-attributes", "virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:1.9.5"],\ + ["@types/acorn", null],\ + ["acorn", "npm:8.12.1"]\ + ],\ + "packagePeers": [\ + "@types/acorn",\ + "acorn"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["acorn-jsx", [\ + ["npm:5.3.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/acorn-jsx-npm-5.3.2-d7594599ea-10c0.zip/node_modules/acorn-jsx/",\ + "packageDependencies": [\ + ["acorn-jsx", "npm:5.3.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2", {\ + "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-834321b202/7/.yarn/berry/cache/acorn-jsx-npm-5.3.2-d7594599ea-10c0.zip/node_modules/acorn-jsx/",\ + "packageDependencies": [\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\ + ["@types/acorn", null],\ + ["acorn", "npm:8.12.1"]\ + ],\ + "packagePeers": [\ + "@types/acorn",\ + "acorn"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:abcab55b2813e51f08b801082c9f38afdbe481e334ba7d6e40dd2f60fbd9c724d465f043f920e1b30d36fbfa22aee00a31e3e712b3233975130b29ff0b980775#npm:5.3.2", {\ + "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-a17777525d/7/.yarn/berry/cache/acorn-jsx-npm-5.3.2-d7594599ea-10c0.zip/node_modules/acorn-jsx/",\ + "packageDependencies": [\ + ["acorn-jsx", "virtual:abcab55b2813e51f08b801082c9f38afdbe481e334ba7d6e40dd2f60fbd9c724d465f043f920e1b30d36fbfa22aee00a31e3e712b3233975130b29ff0b980775#npm:5.3.2"],\ + ["@types/acorn", null],\ + ["acorn", "npm:6.4.2"]\ + ],\ + "packagePeers": [\ + "@types/acorn",\ + "acorn"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["agent-base", [\ + ["npm:7.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/agent-base-npm-7.1.1-c9e1a4b59e-10c0.zip/node_modules/agent-base/",\ + "packageDependencies": [\ + ["agent-base", "npm:7.1.1"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["aggregate-error", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/aggregate-error-npm-3.1.0-415a406f4e-10c0.zip/node_modules/aggregate-error/",\ + "packageDependencies": [\ + ["aggregate-error", "npm:3.1.0"],\ + ["clean-stack", "npm:2.2.0"],\ + ["indent-string", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ajv", [\ + ["npm:6.12.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ajv-npm-6.12.6-4b5105e2b2-10c0.zip/node_modules/ajv/",\ + "packageDependencies": [\ + ["ajv", "npm:6.12.6"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["fast-json-stable-stringify", "npm:2.1.0"],\ + ["json-schema-traverse", "npm:0.4.1"],\ + ["uri-js", "npm:4.4.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.17.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ajv-npm-8.17.1-12ade7edc6-10c0.zip/node_modules/ajv/",\ + "packageDependencies": [\ + ["ajv", "npm:8.17.1"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["fast-uri", "npm:3.0.1"],\ + ["json-schema-traverse", "npm:1.0.0"],\ + ["require-from-string", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ajv-formats", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ajv-formats-npm-2.1.1-3cec02eae9-10c0.zip/node_modules/ajv-formats/",\ + "packageDependencies": [\ + ["ajv-formats", "npm:2.1.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:2.1.1", {\ + "packageLocation": "./.yarn/__virtual__/ajv-formats-virtual-39fabfe016/7/.yarn/berry/cache/ajv-formats-npm-2.1.1-3cec02eae9-10c0.zip/node_modules/ajv-formats/",\ + "packageDependencies": [\ + ["ajv-formats", "virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:2.1.1"],\ + ["@types/ajv", null],\ + ["ajv", "npm:8.17.1"]\ + ],\ + "packagePeers": [\ + "@types/ajv",\ + "ajv"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ajv-keywords", [\ + ["npm:3.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ajv-keywords-npm-3.5.2-0e391b70e2-10c0.zip/node_modules/ajv-keywords/",\ + "packageDependencies": [\ + ["ajv-keywords", "npm:3.5.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:5.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ajv-keywords-npm-5.1.0-ee670a3944-10c0.zip/node_modules/ajv-keywords/",\ + "packageDependencies": [\ + ["ajv-keywords", "npm:5.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/ajv-keywords-virtual-7d79801060/7/.yarn/berry/cache/ajv-keywords-npm-5.1.0-ee670a3944-10c0.zip/node_modules/ajv-keywords/",\ + "packageDependencies": [\ + ["ajv-keywords", "virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:5.1.0"],\ + ["@types/ajv", null],\ + ["ajv", "npm:8.17.1"],\ + ["fast-deep-equal", "npm:3.1.3"]\ + ],\ + "packagePeers": [\ + "@types/ajv",\ + "ajv"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:f2b36937f163b579815d3163513b3330d7a31aaf0599eea66346382b8838395c613f4204e9809cc2ff6bba09c17ab0c34b37deadcb147de7e2f5e535d6ccc245#npm:3.5.2", {\ + "packageLocation": "./.yarn/__virtual__/ajv-keywords-virtual-80fc73abbe/7/.yarn/berry/cache/ajv-keywords-npm-3.5.2-0e391b70e2-10c0.zip/node_modules/ajv-keywords/",\ + "packageDependencies": [\ + ["ajv-keywords", "virtual:f2b36937f163b579815d3163513b3330d7a31aaf0599eea66346382b8838395c613f4204e9809cc2ff6bba09c17ab0c34b37deadcb147de7e2f5e535d6ccc245#npm:3.5.2"],\ + ["@types/ajv", null],\ + ["ajv", "npm:6.12.6"]\ + ],\ + "packagePeers": [\ + "@types/ajv",\ + "ajv"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["amdefine", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/amdefine-npm-1.0.1-40b219807a-10c0.zip/node_modules/amdefine/",\ + "packageDependencies": [\ + ["amdefine", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-colors", [\ + ["npm:3.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-colors-npm-3.2.3-7befce9489-10c0.zip/node_modules/ansi-colors/",\ + "packageDependencies": [\ + ["ansi-colors", "npm:3.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-escapes", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-escapes-npm-3.2.0-a9d573100e-10c0.zip/node_modules/ansi-escapes/",\ + "packageDependencies": [\ + ["ansi-escapes", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-html-community", [\ + ["npm:0.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-html-community-npm-0.0.8-5eaef55f1b-10c0.zip/node_modules/ansi-html-community/",\ + "packageDependencies": [\ + ["ansi-html-community", "npm:0.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-regex", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-regex-npm-2.1.1-ddd24d102b-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-regex-npm-3.0.1-01f44078a3-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-regex-npm-4.1.1-af0a582bb9-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:4.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-regex-npm-5.0.1-c963a48615-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-regex-npm-6.0.1-8d663a607d-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ansi-styles", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-styles-npm-2.2.1-f3297e782c-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-styles-npm-3.2.1-8cb8107983-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:3.2.1"],\ + ["color-convert", "npm:1.9.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-styles-npm-4.3.0-245c7d42c7-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:4.3.0"],\ + ["color-convert", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ansi-styles-npm-6.2.1-d43647018c-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:6.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["anymatch", [\ + ["npm:3.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/anymatch-npm-3.1.3-bc81d103b1-10c0.zip/node_modules/anymatch/",\ + "packageDependencies": [\ + ["anymatch", "npm:3.1.3"],\ + ["normalize-path", "npm:3.0.0"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["argparse", [\ + ["npm:1.0.10", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/argparse-npm-1.0.10-528934e59d-10c0.zip/node_modules/argparse/",\ + "packageDependencies": [\ + ["argparse", "npm:1.0.10"],\ + ["sprintf-js", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/argparse-npm-2.0.1-faff7999e6-10c0.zip/node_modules/argparse/",\ + "packageDependencies": [\ + ["argparse", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-buffer-byte-length", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/array-buffer-byte-length-npm-1.0.1-e7afc30010-10c0.zip/node_modules/array-buffer-byte-length/",\ + "packageDependencies": [\ + ["array-buffer-byte-length", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.7"],\ + ["is-array-buffer", "npm:3.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-each", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/array-each-npm-1.0.1-c676f7d9e8-10c0.zip/node_modules/array-each/",\ + "packageDependencies": [\ + ["array-each", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-flatten", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/array-flatten-npm-1.1.1-9d94ad5f1d-10c0.zip/node_modules/array-flatten/",\ + "packageDependencies": [\ + ["array-flatten", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array-slice", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/array-slice-npm-1.1.0-6c5995b3ce-10c0.zip/node_modules/array-slice/",\ + "packageDependencies": [\ + ["array-slice", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["array.prototype.reduce", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/array.prototype.reduce-npm-1.0.7-68b13a3834-10c0.zip/node_modules/array.prototype.reduce/",\ + "packageDependencies": [\ + ["array.prototype.reduce", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.23.3"],\ + ["es-array-method-boxes-properly", "npm:1.0.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.0.0"],\ + ["is-string", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["arraybuffer.prototype.slice", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/arraybuffer.prototype.slice-npm-1.0.3-97a993a091-10c0.zip/node_modules/arraybuffer.prototype.slice/",\ + "packageDependencies": [\ + ["arraybuffer.prototype.slice", "npm:1.0.3"],\ + ["array-buffer-byte-length", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.23.3"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["is-array-buffer", "npm:3.0.4"],\ + ["is-shared-array-buffer", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["assertion-error", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/assertion-error-npm-1.1.0-66b893015e-10c0.zip/node_modules/assertion-error/",\ + "packageDependencies": [\ + ["assertion-error", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["astral-regex", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/astral-regex-npm-1.0.0-2df7c41332-10c0.zip/node_modules/astral-regex/",\ + "packageDependencies": [\ + ["astral-regex", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["async", [\ + ["npm:1.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/async-npm-1.5.2-e971969e27-10c0.zip/node_modules/async/",\ + "packageDependencies": [\ + ["async", "npm:1.5.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.6.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/async-npm-2.6.4-3155e80151-10c0.zip/node_modules/async/",\ + "packageDependencies": [\ + ["async", "npm:2.6.4"],\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/async-npm-3.2.5-f5dbdabdfc-10c0.zip/node_modules/async/",\ + "packageDependencies": [\ + ["async", "npm:3.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["available-typed-arrays", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/available-typed-arrays-npm-1.0.7-e5e5d79687-10c0.zip/node_modules/available-typed-arrays/",\ + "packageDependencies": [\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["possible-typed-array-names", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-eslint", [\ + ["npm:10.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/babel-eslint-npm-10.1.0-6a6d2b1533-10c0.zip/node_modules/babel-eslint/",\ + "packageDependencies": [\ + ["babel-eslint", "npm:10.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:10.1.0", {\ + "packageLocation": "./.yarn/__virtual__/babel-eslint-virtual-b46495c994/7/.yarn/berry/cache/babel-eslint-npm-10.1.0-6a6d2b1533-10c0.zip/node_modules/babel-eslint/",\ + "packageDependencies": [\ + ["babel-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:10.1.0"],\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["@babel/parser", "npm:7.25.3"],\ + ["@babel/traverse", "npm:7.25.3"],\ + ["@babel/types", "npm:7.25.2"],\ + ["@types/eslint", null],\ + ["eslint", "npm:5.16.0"],\ + ["eslint-visitor-keys", "npm:1.3.0"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"]\ + ],\ + "packagePeers": [\ + "@types/eslint",\ + "eslint"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-loader", [\ + ["npm:9.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/babel-loader-npm-9.1.3-cbf4da21df-10c0.zip/node_modules/babel-loader/",\ + "packageDependencies": [\ + ["babel-loader", "npm:9.1.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:9.1.3", {\ + "packageLocation": "./.yarn/__virtual__/babel-loader-virtual-40b0064aa6/7/.yarn/berry/cache/babel-loader-npm-9.1.3-cbf4da21df-10c0.zip/node_modules/babel-loader/",\ + "packageDependencies": [\ + ["babel-loader", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:9.1.3"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@types/babel__core", null],\ + ["@types/webpack", null],\ + ["find-cache-dir", "npm:4.0.0"],\ + ["schema-utils", "npm:4.2.0"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core",\ + "@types/webpack",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-corejs2", [\ + ["npm:0.4.11", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/babel-plugin-polyfill-corejs2-npm-0.4.11-77e1239277-10c0.zip/node_modules/babel-plugin-polyfill-corejs2/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs2", "npm:0.4.11"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.4.11", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-corejs2-virtual-8c88497f84/7/.yarn/berry/cache/babel-plugin-polyfill-corejs2-npm-0.4.11-77e1239277-10c0.zip/node_modules/babel-plugin-polyfill-corejs2/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs2", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.4.11"],\ + ["@babel/compat-data", "npm:7.25.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-define-polyfill-provider", "virtual:8c88497f84ab8b513987f39dffd9d2280db518c986deea245c98460218070a6e4083672a7572f56a18c5590c6ce8c524dc315cef6c4b9925d8b5eda1f1da7c00#npm:0.6.2"],\ + ["@types/babel__core", null],\ + ["semver", "npm:6.3.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-corejs3", [\ + ["npm:0.10.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/babel-plugin-polyfill-corejs3-npm-0.10.6-066bf0a146-10c0.zip/node_modules/babel-plugin-polyfill-corejs3/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs3", "npm:0.10.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.10.6", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-corejs3-virtual-ed9288efc0/7/.yarn/berry/cache/babel-plugin-polyfill-corejs3-npm-0.10.6-066bf0a146-10c0.zip/node_modules/babel-plugin-polyfill-corejs3/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-corejs3", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.10.6"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-define-polyfill-provider", "virtual:8c88497f84ab8b513987f39dffd9d2280db518c986deea245c98460218070a6e4083672a7572f56a18c5590c6ce8c524dc315cef6c4b9925d8b5eda1f1da7c00#npm:0.6.2"],\ + ["@types/babel__core", null],\ + ["core-js-compat", "npm:3.38.0"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["babel-plugin-polyfill-regenerator", [\ + ["npm:0.6.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/babel-plugin-polyfill-regenerator-npm-0.6.2-c6dd64788f-10c0.zip/node_modules/babel-plugin-polyfill-regenerator/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-regenerator", "npm:0.6.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.6.2", {\ + "packageLocation": "./.yarn/__virtual__/babel-plugin-polyfill-regenerator-virtual-91874c89c7/7/.yarn/berry/cache/babel-plugin-polyfill-regenerator-npm-0.6.2-c6dd64788f-10c0.zip/node_modules/babel-plugin-polyfill-regenerator/",\ + "packageDependencies": [\ + ["babel-plugin-polyfill-regenerator", "virtual:94915a8efbc52d60cde0f39d634672fc8d272d1388fab64a64c6a67ed869612164e56349d5afc590a808084779fdf0eb29233480ac80a1a68154296a465ae445#npm:0.6.2"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-define-polyfill-provider", "virtual:8c88497f84ab8b513987f39dffd9d2280db518c986deea245c98460218070a6e4083672a7572f56a18c5590c6ce8c524dc315cef6c4b9925d8b5eda1f1da7c00#npm:0.6.2"],\ + ["@types/babel__core", null]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["balanced-match", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/balanced-match-npm-1.0.2-a53c126459-10c0.zip/node_modules/balanced-match/",\ + "packageDependencies": [\ + ["balanced-match", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["base64id", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/base64id-npm-2.0.0-ef4afeee0a-10c0.zip/node_modules/base64id/",\ + "packageDependencies": [\ + ["base64id", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["batch", [\ + ["npm:0.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/batch-npm-0.6.1-70e2e81169-10c0.zip/node_modules/batch/",\ + "packageDependencies": [\ + ["batch", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["binary-extensions", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/binary-extensions-npm-2.3.0-bd3f20d865-10c0.zip/node_modules/binary-extensions/",\ + "packageDependencies": [\ + ["binary-extensions", "npm:2.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["body", [\ + ["npm:5.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/body-npm-5.1.0-3668a2507f-10c0.zip/node_modules/body/",\ + "packageDependencies": [\ + ["body", "npm:5.1.0"],\ + ["continuable-cache", "npm:0.3.1"],\ + ["error", "npm:7.2.1"],\ + ["raw-body", "npm:1.1.7"],\ + ["safe-json-parse", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["body-parser", [\ + ["npm:1.20.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/body-parser-npm-1.20.2-44738662cf-10c0.zip/node_modules/body-parser/",\ + "packageDependencies": [\ + ["body-parser", "npm:1.20.2"],\ + ["bytes", "npm:3.1.2"],\ + ["content-type", "npm:1.0.5"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["depd", "npm:2.0.0"],\ + ["destroy", "npm:1.2.0"],\ + ["http-errors", "npm:2.0.0"],\ + ["iconv-lite", "npm:0.4.24"],\ + ["on-finished", "npm:2.4.1"],\ + ["qs", "npm:6.11.0"],\ + ["raw-body", "npm:2.5.2"],\ + ["type-is", "npm:1.6.18"],\ + ["unpipe", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bonjour-service", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/bonjour-service-npm-1.2.1-3b11acdfe6-10c0.zip/node_modules/bonjour-service/",\ + "packageDependencies": [\ + ["bonjour-service", "npm:1.2.1"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["multicast-dns", "npm:7.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["brace-expansion", [\ + ["npm:1.1.11", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/brace-expansion-npm-1.1.11-fb95eb05ad-10c0.zip/node_modules/brace-expansion/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:1.1.11"],\ + ["balanced-match", "npm:1.0.2"],\ + ["concat-map", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/brace-expansion-npm-2.0.1-17aa2616f9-10c0.zip/node_modules/brace-expansion/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:2.0.1"],\ + ["balanced-match", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["braces", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/braces-npm-3.0.3-582c14023c-10c0.zip/node_modules/braces/",\ + "packageDependencies": [\ + ["braces", "npm:3.0.3"],\ + ["fill-range", "npm:7.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["browser-stdout", [\ + ["npm:1.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/browser-stdout-npm-1.3.1-6b2376bf3f-10c0.zip/node_modules/browser-stdout/",\ + "packageDependencies": [\ + ["browser-stdout", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["browserslist", [\ + ["npm:4.23.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/browserslist-npm-4.23.3-4e727c7b5b-10c0.zip/node_modules/browserslist/",\ + "packageDependencies": [\ + ["browserslist", "npm:4.23.3"],\ + ["caniuse-lite", "npm:1.0.30001649"],\ + ["electron-to-chromium", "npm:1.5.4"],\ + ["node-releases", "npm:2.0.18"],\ + ["update-browserslist-db", "virtual:4e727c7b5b033f8d5ac7299f9860cb61f5802656f7b4fea2accd32d68dc1a767387a6d23f0724065d3c65e61cb31b9eec2438ae937ce36e7602b4586ede55af6#npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["buffer-from", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/buffer-from-npm-1.1.2-03d2f20d7e-10c0.zip/node_modules/buffer-from/",\ + "packageDependencies": [\ + ["buffer-from", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bundle-name", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/bundle-name-npm-4.1.0-4688335533-10c0.zip/node_modules/bundle-name/",\ + "packageDependencies": [\ + ["bundle-name", "npm:4.1.0"],\ + ["run-applescript", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["bytes", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/bytes-npm-1.0.0-fa189a9a8a-10c0.zip/node_modules/bytes/",\ + "packageDependencies": [\ + ["bytes", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/bytes-npm-3.0.0-19be09472d-10c0.zip/node_modules/bytes/",\ + "packageDependencies": [\ + ["bytes", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/bytes-npm-3.1.2-28b8643004-10c0.zip/node_modules/bytes/",\ + "packageDependencies": [\ + ["bytes", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cacache", [\ + ["npm:18.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cacache-npm-18.0.4-3dc4edc849-10c0.zip/node_modules/cacache/",\ + "packageDependencies": [\ + ["cacache", "npm:18.0.4"],\ + ["@npmcli/fs", "npm:3.1.1"],\ + ["fs-minipass", "npm:3.0.3"],\ + ["glob", "npm:10.4.5"],\ + ["lru-cache", "npm:10.4.3"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-collect", "npm:2.0.1"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["p-map", "npm:4.0.0"],\ + ["ssri", "npm:10.0.6"],\ + ["tar", "npm:6.2.1"],\ + ["unique-filename", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["call-bind", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/call-bind-npm-1.0.7-762763ef96-10c0.zip/node_modules/call-bind/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.7"],\ + ["es-define-property", "npm:1.0.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["function-bind", "npm:1.1.2"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["set-function-length", "npm:1.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["callsites", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/callsites-npm-3.1.0-268f989910-10c0.zip/node_modules/callsites/",\ + "packageDependencies": [\ + ["callsites", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["camelcase", [\ + ["npm:5.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/camelcase-npm-5.3.1-5db8af62c5-10c0.zip/node_modules/camelcase/",\ + "packageDependencies": [\ + ["camelcase", "npm:5.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["caniuse-lite", [\ + ["npm:1.0.30001649", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/caniuse-lite-npm-1.0.30001649-f371b9b86d-10c0.zip/node_modules/caniuse-lite/",\ + "packageDependencies": [\ + ["caniuse-lite", "npm:1.0.30001649"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chai", [\ + ["npm:4.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chai-npm-4.5.0-428447e206-10c0.zip/node_modules/chai/",\ + "packageDependencies": [\ + ["chai", "npm:4.5.0"],\ + ["assertion-error", "npm:1.1.0"],\ + ["check-error", "npm:1.0.3"],\ + ["deep-eql", "npm:4.1.4"],\ + ["get-func-name", "npm:2.0.2"],\ + ["loupe", "npm:2.3.7"],\ + ["pathval", "npm:1.1.1"],\ + ["type-detect", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chalk", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chalk-npm-1.1.3-59144c3a87-10c0.zip/node_modules/chalk/",\ + "packageDependencies": [\ + ["chalk", "npm:1.1.3"],\ + ["ansi-styles", "npm:2.2.1"],\ + ["escape-string-regexp", "npm:1.0.5"],\ + ["has-ansi", "npm:2.0.0"],\ + ["strip-ansi", "npm:3.0.1"],\ + ["supports-color", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.4.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chalk-npm-2.4.2-3ea16dd91e-10c0.zip/node_modules/chalk/",\ + "packageDependencies": [\ + ["chalk", "npm:2.4.2"],\ + ["ansi-styles", "npm:3.2.1"],\ + ["escape-string-regexp", "npm:1.0.5"],\ + ["supports-color", "npm:5.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chalk-npm-4.1.2-ba8b67ab80-10c0.zip/node_modules/chalk/",\ + "packageDependencies": [\ + ["chalk", "npm:4.1.2"],\ + ["ansi-styles", "npm:4.3.0"],\ + ["supports-color", "npm:7.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chardet", [\ + ["npm:0.7.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chardet-npm-0.7.0-27933dd6c7-10c0.zip/node_modules/chardet/",\ + "packageDependencies": [\ + ["chardet", "npm:0.7.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["check-error", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/check-error-npm-1.0.3-137994eabc-10c0.zip/node_modules/check-error/",\ + "packageDependencies": [\ + ["check-error", "npm:1.0.3"],\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chokidar", [\ + ["npm:3.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chokidar-npm-3.3.0-4f97d28195-10c0.zip/node_modules/chokidar/",\ + "packageDependencies": [\ + ["chokidar", "npm:3.3.0"],\ + ["anymatch", "npm:3.1.3"],\ + ["braces", "npm:3.0.3"],\ + ["fsevents", "patch:fsevents@npm%3A2.1.3#optional!builtin::version=2.1.3&hash=31d12a"],\ + ["glob-parent", "npm:5.1.2"],\ + ["is-binary-path", "npm:2.1.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["normalize-path", "npm:3.0.0"],\ + ["readdirp", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chokidar-npm-3.6.0-3c413a828f-10c0.zip/node_modules/chokidar/",\ + "packageDependencies": [\ + ["chokidar", "npm:3.6.0"],\ + ["anymatch", "npm:3.1.3"],\ + ["braces", "npm:3.0.3"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["glob-parent", "npm:5.1.2"],\ + ["is-binary-path", "npm:2.1.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["normalize-path", "npm:3.0.0"],\ + ["readdirp", "npm:3.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chownr", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chownr-npm-2.0.0-638f1c9c61-10c0.zip/node_modules/chownr/",\ + "packageDependencies": [\ + ["chownr", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["chrome-trace-event", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/chrome-trace-event-npm-1.0.4-4f22eb2c55-10c0.zip/node_modules/chrome-trace-event/",\ + "packageDependencies": [\ + ["chrome-trace-event", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["clean-stack", [\ + ["npm:2.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/clean-stack-npm-2.2.0-a8ce435a5c-10c0.zip/node_modules/clean-stack/",\ + "packageDependencies": [\ + ["clean-stack", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cli-cursor", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cli-cursor-npm-2.1.0-3920629c9c-10c0.zip/node_modules/cli-cursor/",\ + "packageDependencies": [\ + ["cli-cursor", "npm:2.1.0"],\ + ["restore-cursor", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cli-width", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cli-width-npm-2.2.1-4bdb77393c-10c0.zip/node_modules/cli-width/",\ + "packageDependencies": [\ + ["cli-width", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cliui", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cliui-npm-5.0.0-885b5f48ee-10c0.zip/node_modules/cliui/",\ + "packageDependencies": [\ + ["cliui", "npm:5.0.0"],\ + ["string-width", "npm:3.1.0"],\ + ["strip-ansi", "npm:5.2.0"],\ + ["wrap-ansi", "npm:5.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cliui-npm-7.0.4-d6b8a9edb6-10c0.zip/node_modules/cliui/",\ + "packageDependencies": [\ + ["cliui", "npm:7.0.4"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["wrap-ansi", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["clone-deep", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/clone-deep-npm-4.0.1-70adab92c8-10c0.zip/node_modules/clone-deep/",\ + "packageDependencies": [\ + ["clone-deep", "npm:4.0.1"],\ + ["is-plain-object", "npm:2.0.4"],\ + ["kind-of", "npm:6.0.3"],\ + ["shallow-clone", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["color-convert", [\ + ["npm:1.9.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/color-convert-npm-1.9.3-1fe690075e-10c0.zip/node_modules/color-convert/",\ + "packageDependencies": [\ + ["color-convert", "npm:1.9.3"],\ + ["color-name", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/color-convert-npm-2.0.1-79730e935b-10c0.zip/node_modules/color-convert/",\ + "packageDependencies": [\ + ["color-convert", "npm:2.0.1"],\ + ["color-name", "npm:1.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["color-name", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/color-name-npm-1.1.3-728b7b5d39-10c0.zip/node_modules/color-name/",\ + "packageDependencies": [\ + ["color-name", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/color-name-npm-1.1.4-025792b0ea-10c0.zip/node_modules/color-name/",\ + "packageDependencies": [\ + ["color-name", "npm:1.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["colorette", [\ + ["npm:2.0.20", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/colorette-npm-2.0.20-692d428726-10c0.zip/node_modules/colorette/",\ + "packageDependencies": [\ + ["colorette", "npm:2.0.20"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["colors", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/colors-npm-1.1.2-7fe5e2d983-10c0.zip/node_modules/colors/",\ + "packageDependencies": [\ + ["colors", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["commander", [\ + ["npm:2.20.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/commander-npm-2.20.3-d8dcbaa39b-10c0.zip/node_modules/commander/",\ + "packageDependencies": [\ + ["commander", "npm:2.20.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/commander-npm-6.2.1-d5b635f237-10c0.zip/node_modules/commander/",\ + "packageDependencies": [\ + ["commander", "npm:6.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["common-path-prefix", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/common-path-prefix-npm-3.0.0-68b78785c1-10c0.zip/node_modules/common-path-prefix/",\ + "packageDependencies": [\ + ["common-path-prefix", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["commondir", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/commondir-npm-1.0.1-291b790340-10c0.zip/node_modules/commondir/",\ + "packageDependencies": [\ + ["commondir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["compressible", [\ + ["npm:2.0.18", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/compressible-npm-2.0.18-ee5ab04d88-10c0.zip/node_modules/compressible/",\ + "packageDependencies": [\ + ["compressible", "npm:2.0.18"],\ + ["mime-db", "npm:1.53.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["compression", [\ + ["npm:1.7.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/compression-npm-1.7.4-e0cd6afa69-10c0.zip/node_modules/compression/",\ + "packageDependencies": [\ + ["compression", "npm:1.7.4"],\ + ["accepts", "npm:1.3.8"],\ + ["bytes", "npm:3.0.0"],\ + ["compressible", "npm:2.0.18"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["on-headers", "npm:1.0.2"],\ + ["safe-buffer", "npm:5.1.2"],\ + ["vary", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["concat-map", [\ + ["npm:0.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/concat-map-npm-0.0.1-85a921b7ee-10c0.zip/node_modules/concat-map/",\ + "packageDependencies": [\ + ["concat-map", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["connect", [\ + ["npm:3.7.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/connect-npm-3.7.0-25ccb085cc-10c0.zip/node_modules/connect/",\ + "packageDependencies": [\ + ["connect", "npm:3.7.0"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["finalhandler", "npm:1.1.2"],\ + ["parseurl", "npm:1.3.3"],\ + ["utils-merge", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["connect-history-api-fallback", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/connect-history-api-fallback-npm-2.0.0-27b00b1571-10c0.zip/node_modules/connect-history-api-fallback/",\ + "packageDependencies": [\ + ["connect-history-api-fallback", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["content-disposition", [\ + ["npm:0.5.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/content-disposition-npm-0.5.4-2d93678616-10c0.zip/node_modules/content-disposition/",\ + "packageDependencies": [\ + ["content-disposition", "npm:0.5.4"],\ + ["safe-buffer", "npm:5.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["content-type", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/content-type-npm-1.0.5-3e037bf9ab-10c0.zip/node_modules/content-type/",\ + "packageDependencies": [\ + ["content-type", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["continuable-cache", [\ + ["npm:0.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/continuable-cache-npm-0.3.1-acd27a67eb-10c0.zip/node_modules/continuable-cache/",\ + "packageDependencies": [\ + ["continuable-cache", "npm:0.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["convert-source-map", [\ + ["npm:1.9.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/convert-source-map-npm-1.9.0-e294555f4b-10c0.zip/node_modules/convert-source-map/",\ + "packageDependencies": [\ + ["convert-source-map", "npm:1.9.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/convert-source-map-npm-2.0.0-7ab664dc4e-10c0.zip/node_modules/convert-source-map/",\ + "packageDependencies": [\ + ["convert-source-map", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cookie", [\ + ["npm:0.4.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cookie-npm-0.4.2-7761894d5f-10c0.zip/node_modules/cookie/",\ + "packageDependencies": [\ + ["cookie", "npm:0.4.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cookie-npm-0.6.0-362d6a2e45-10c0.zip/node_modules/cookie/",\ + "packageDependencies": [\ + ["cookie", "npm:0.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cookie-signature", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cookie-signature-npm-1.0.6-93f325f7f0-10c0.zip/node_modules/cookie-signature/",\ + "packageDependencies": [\ + ["cookie-signature", "npm:1.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["core-js-compat", [\ + ["npm:3.38.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/core-js-compat-npm-3.38.0-cd0aa312bc-10c0.zip/node_modules/core-js-compat/",\ + "packageDependencies": [\ + ["core-js-compat", "npm:3.38.0"],\ + ["browserslist", "npm:4.23.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["core-util-is", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/core-util-is-npm-1.0.3-ca74b76c90-10c0.zip/node_modules/core-util-is/",\ + "packageDependencies": [\ + ["core-util-is", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cors", [\ + ["npm:2.8.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cors-npm-2.8.5-c9935a2d12-10c0.zip/node_modules/cors/",\ + "packageDependencies": [\ + ["cors", "npm:2.8.5"],\ + ["object-assign", "npm:4.1.1"],\ + ["vary", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cross-spawn", [\ + ["npm:6.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cross-spawn-npm-6.0.5-2deab6c280-10c0.zip/node_modules/cross-spawn/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:6.0.5"],\ + ["nice-try", "npm:1.0.5"],\ + ["path-key", "npm:2.0.1"],\ + ["semver", "npm:5.7.2"],\ + ["shebang-command", "npm:1.2.0"],\ + ["which", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-10c0.zip/node_modules/cross-spawn/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:7.0.3"],\ + ["path-key", "npm:3.1.1"],\ + ["shebang-command", "npm:2.0.0"],\ + ["which", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["custom-event", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/custom-event-npm-1.0.1-6693c8e298-10c0.zip/node_modules/custom-event/",\ + "packageDependencies": [\ + ["custom-event", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-buffer", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/data-view-buffer-npm-1.0.1-d911beebce-10c0.zip/node_modules/data-view-buffer/",\ + "packageDependencies": [\ + ["data-view-buffer", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-byte-length", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/data-view-byte-length-npm-1.0.1-538a9e432e-10c0.zip/node_modules/data-view-byte-length/",\ + "packageDependencies": [\ + ["data-view-byte-length", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["data-view-byte-offset", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/data-view-byte-offset-npm-1.0.0-7112a24a4b-10c0.zip/node_modules/data-view-byte-offset/",\ + "packageDependencies": [\ + ["data-view-byte-offset", "npm:1.0.0"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-data-view", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["date-format", [\ + ["npm:4.0.14", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/date-format-npm-4.0.14-50da5e5139-10c0.zip/node_modules/date-format/",\ + "packageDependencies": [\ + ["date-format", "npm:4.0.14"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dateformat", [\ + ["npm:4.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/dateformat-npm-4.6.3-aa1a4cb7f9-10c0.zip/node_modules/dateformat/",\ + "packageDependencies": [\ + ["dateformat", "npm:4.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["debug", [\ + ["npm:2.6.9", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/debug-npm-2.6.9-7d4cb597dc-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:2.6.9"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:3.2.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/debug-npm-3.2.6-6214e40f12-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:3.2.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:3.2.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:3.2.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:4.3.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/debug-npm-4.3.6-ecb233d831-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "npm:4.3.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-fad9a3537e/7/.yarn/berry/cache/debug-npm-2.6.9-7d4cb597dc-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["@types/supports-color", null],\ + ["ms", "npm:2.0.0"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:612e500d6d9d9c332d8475cbf619d8fa9fe7de63ec445b4de39cc68ccfbc77429a4327f46d9b5572a19ca0de9f285af134301bc8843c271b7712b6d1256451cc#npm:3.2.6", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-d84ce13359/7/.yarn/berry/cache/debug-npm-3.2.6-6214e40f12-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "virtual:612e500d6d9d9c332d8475cbf619d8fa9fe7de63ec445b4de39cc68ccfbc77429a4327f46d9b5572a19ca0de9f285af134301bc8843c271b7712b6d1256451cc#npm:3.2.6"],\ + ["@types/supports-color", null],\ + ["ms", "npm:2.1.3"],\ + ["supports-color", "npm:6.0.0"]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-4475a483b5/7/.yarn/berry/cache/debug-npm-4.3.6-ecb233d831-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["@types/supports-color", null],\ + ["ms", "npm:2.1.2"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:710fa9e84c411e9a6d38057111fc8f87ba51ce39b63d470861c88972bf2b279427700d359b58a66dff9d7497a6091b73f49b16317fa95e6ed5ec2f1aa737346f#npm:3.2.7", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-f817ea3bdb/7/.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-10c0.zip/node_modules/debug/",\ + "packageDependencies": [\ + ["debug", "virtual:710fa9e84c411e9a6d38057111fc8f87ba51ce39b63d470861c88972bf2b279427700d359b58a66dff9d7497a6091b73f49b16317fa95e6ed5ec2f1aa737346f#npm:3.2.7"],\ + ["@types/supports-color", null],\ + ["ms", "npm:2.1.3"],\ + ["supports-color", null]\ + ],\ + "packagePeers": [\ + "@types/supports-color",\ + "supports-color"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["decamelize", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/decamelize-npm-1.2.0-c5a2fdc622-10c0.zip/node_modules/decamelize/",\ + "packageDependencies": [\ + ["decamelize", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["deep-eql", [\ + ["npm:4.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/deep-eql-npm-4.1.4-bc4d39c2ca-10c0.zip/node_modules/deep-eql/",\ + "packageDependencies": [\ + ["deep-eql", "npm:4.1.4"],\ + ["type-detect", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["deep-for-each", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/deep-for-each-npm-3.0.0-5aa901f30c-10c0.zip/node_modules/deep-for-each/",\ + "packageDependencies": [\ + ["deep-for-each", "npm:3.0.0"],\ + ["lodash.isplainobject", "npm:4.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["deep-is", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/deep-is-npm-0.1.4-88938b5a67-10c0.zip/node_modules/deep-is/",\ + "packageDependencies": [\ + ["deep-is", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["default-browser", [\ + ["npm:5.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/default-browser-npm-5.2.1-e2f8bca718-10c0.zip/node_modules/default-browser/",\ + "packageDependencies": [\ + ["default-browser", "npm:5.2.1"],\ + ["bundle-name", "npm:4.1.0"],\ + ["default-browser-id", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["default-browser-id", [\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/default-browser-id-npm-5.0.0-41fa64d5bb-10c0.zip/node_modules/default-browser-id/",\ + "packageDependencies": [\ + ["default-browser-id", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["default-gateway", [\ + ["npm:6.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/default-gateway-npm-6.0.3-d8d9292176-10c0.zip/node_modules/default-gateway/",\ + "packageDependencies": [\ + ["default-gateway", "npm:6.0.3"],\ + ["execa", "npm:5.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["define-data-property", [\ + ["npm:1.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/define-data-property-npm-1.1.4-4cbd8efc51-10c0.zip/node_modules/define-data-property/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.4"],\ + ["es-define-property", "npm:1.0.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["gopd", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["define-lazy-prop", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/define-lazy-prop-npm-3.0.0-6bb0fc1510-10c0.zip/node_modules/define-lazy-prop/",\ + "packageDependencies": [\ + ["define-lazy-prop", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["define-properties", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/define-properties-npm-1.2.1-8a4d42413b-10c0.zip/node_modules/define-properties/",\ + "packageDependencies": [\ + ["define-properties", "npm:1.2.1"],\ + ["define-data-property", "npm:1.1.4"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["depd", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/depd-npm-1.1.2-b0c8414da7-10c0.zip/node_modules/depd/",\ + "packageDependencies": [\ + ["depd", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/depd-npm-2.0.0-b6c51a4b43-10c0.zip/node_modules/depd/",\ + "packageDependencies": [\ + ["depd", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["destroy", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/destroy-npm-1.2.0-6a511802e2-10c0.zip/node_modules/destroy/",\ + "packageDependencies": [\ + ["destroy", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["detect-file", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/detect-file-npm-1.0.0-a22ca7c5b6-10c0.zip/node_modules/detect-file/",\ + "packageDependencies": [\ + ["detect-file", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["detect-node", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/detect-node-npm-2.1.0-e8de0e94f7-10c0.zip/node_modules/detect-node/",\ + "packageDependencies": [\ + ["detect-node", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["di", [\ + ["npm:0.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/di-npm-0.0.1-bff5be391f-10c0.zip/node_modules/di/",\ + "packageDependencies": [\ + ["di", "npm:0.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["diff", [\ + ["npm:3.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/diff-npm-3.5.0-a321a0df19-10c0.zip/node_modules/diff/",\ + "packageDependencies": [\ + ["diff", "npm:3.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["workspace:.", {\ + "packageLocation": "./",\ + "packageDependencies": [\ + ["diff", "workspace:."],\ + ["@babel/cli", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/plugin-transform-modules-commonjs", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.8"],\ + ["@babel/preset-env", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.25.3"],\ + ["@babel/register", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:7.24.6"],\ + ["@colors/colors", "npm:1.6.0"],\ + ["babel-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:10.1.0"],\ + ["babel-loader", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:9.1.3"],\ + ["chai", "npm:4.5.0"],\ + ["eslint", "npm:5.16.0"],\ + ["grunt", "npm:1.6.1"],\ + ["grunt-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:8.0.0"],\ + ["grunt-cli", "npm:1.5.0"],\ + ["grunt-contrib-clean", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.0.1"],\ + ["grunt-contrib-copy", "npm:1.0.0"],\ + ["grunt-contrib-uglify", "npm:5.2.2"],\ + ["grunt-contrib-watch", "npm:1.1.0"],\ + ["grunt-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:24.3.0"],\ + ["grunt-exec", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:3.0.0"],\ + ["grunt-karma", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.0.2"],\ + ["grunt-mocha-istanbul", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.2"],\ + ["grunt-mocha-test", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:0.13.3"],\ + ["grunt-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:6.0.0"],\ + ["istanbul", "https://github.com/kpdecker/istanbul.git#commit=dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22"],\ + ["karma", "npm:6.4.4"],\ + ["karma-chrome-launcher", "npm:3.2.0"],\ + ["karma-mocha", "npm:2.0.1"],\ + ["karma-mocha-reporter", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.2.5"],\ + ["karma-sourcemap-loader", "npm:0.4.0"],\ + ["karma-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.1"],\ + ["mocha", "npm:7.2.0"],\ + ["rollup", "npm:4.20.0"],\ + ["rollup-plugin-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.4.0"],\ + ["semver", "npm:7.6.3"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"],\ + ["webpack-dev-server", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.4"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ + ["dns-packet", [\ + ["npm:5.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/dns-packet-npm-5.6.1-9543a780b5-10c0.zip/node_modules/dns-packet/",\ + "packageDependencies": [\ + ["dns-packet", "npm:5.6.1"],\ + ["@leichtgewicht/ip-codec", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["doctrine", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/doctrine-npm-3.0.0-c6f1615f04-10c0.zip/node_modules/doctrine/",\ + "packageDependencies": [\ + ["doctrine", "npm:3.0.0"],\ + ["esutils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["dom-serialize", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/dom-serialize-npm-2.2.1-01ec16503e-10c0.zip/node_modules/dom-serialize/",\ + "packageDependencies": [\ + ["dom-serialize", "npm:2.2.1"],\ + ["custom-event", "npm:1.0.1"],\ + ["ent", "npm:2.2.1"],\ + ["extend", "npm:3.0.2"],\ + ["void-elements", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["duplexer", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/duplexer-npm-0.1.2-952c810235-10c0.zip/node_modules/duplexer/",\ + "packageDependencies": [\ + ["duplexer", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eastasianwidth", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-10c0.zip/node_modules/eastasianwidth/",\ + "packageDependencies": [\ + ["eastasianwidth", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ee-first", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ee-first-npm-1.1.1-33f8535b39-10c0.zip/node_modules/ee-first/",\ + "packageDependencies": [\ + ["ee-first", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["electron-to-chromium", [\ + ["npm:1.5.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/electron-to-chromium-npm-1.5.4-58d50ae1f7-10c0.zip/node_modules/electron-to-chromium/",\ + "packageDependencies": [\ + ["electron-to-chromium", "npm:1.5.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["emoji-regex", [\ + ["npm:7.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/emoji-regex-npm-7.0.3-cfe9479bb3-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:7.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/emoji-regex-npm-8.0.0-213764015c-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:8.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/emoji-regex-npm-9.2.2-e6fac8d058-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:9.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["encodeurl", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/encodeurl-npm-1.0.2-f8c8454c41-10c0.zip/node_modules/encodeurl/",\ + "packageDependencies": [\ + ["encodeurl", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["encoding", [\ + ["npm:0.1.13", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/encoding-npm-0.1.13-82a1837d30-10c0.zip/node_modules/encoding/",\ + "packageDependencies": [\ + ["encoding", "npm:0.1.13"],\ + ["iconv-lite", "npm:0.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["engine.io", [\ + ["npm:6.5.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/engine.io-npm-6.5.5-201f4587c3-10c0.zip/node_modules/engine.io/",\ + "packageDependencies": [\ + ["engine.io", "npm:6.5.5"],\ + ["@types/cookie", "npm:0.4.1"],\ + ["@types/cors", "npm:2.8.17"],\ + ["@types/node", "npm:22.1.0"],\ + ["accepts", "npm:1.3.8"],\ + ["base64id", "npm:2.0.0"],\ + ["cookie", "npm:0.4.2"],\ + ["cors", "npm:2.8.5"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["engine.io-parser", "npm:5.2.3"],\ + ["ws", "virtual:201f4587c39a7a192113375ce43a71e5a1567792f21ea290c6e2507b8b7c6b8980aa9b7dfc638634a990c0de35e58ff73595d82d7c5966172113abc98241545d#npm:8.17.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["engine.io-parser", [\ + ["npm:5.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/engine.io-parser-npm-5.2.3-6dfa36cede-10c0.zip/node_modules/engine.io-parser/",\ + "packageDependencies": [\ + ["engine.io-parser", "npm:5.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["enhanced-resolve", [\ + ["npm:5.17.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/enhanced-resolve-npm-5.17.1-296305b69f-10c0.zip/node_modules/enhanced-resolve/",\ + "packageDependencies": [\ + ["enhanced-resolve", "npm:5.17.1"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["tapable", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ent", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ent-npm-2.2.1-f4df3425be-10c0.zip/node_modules/ent/",\ + "packageDependencies": [\ + ["ent", "npm:2.2.1"],\ + ["punycode", "npm:1.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["env-paths", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/env-paths-npm-2.2.1-7c7577428c-10c0.zip/node_modules/env-paths/",\ + "packageDependencies": [\ + ["env-paths", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["err-code", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/err-code-npm-2.0.3-082e0ff9a7-10c0.zip/node_modules/err-code/",\ + "packageDependencies": [\ + ["err-code", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["error", [\ + ["npm:7.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/error-npm-7.2.1-628e82313a-10c0.zip/node_modules/error/",\ + "packageDependencies": [\ + ["error", "npm:7.2.1"],\ + ["string-template", "npm:0.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-abstract", [\ + ["npm:1.23.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-abstract-npm-1.23.3-ffd85665f7-10c0.zip/node_modules/es-abstract/",\ + "packageDependencies": [\ + ["es-abstract", "npm:1.23.3"],\ + ["array-buffer-byte-length", "npm:1.0.1"],\ + ["arraybuffer.prototype.slice", "npm:1.0.3"],\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.7"],\ + ["data-view-buffer", "npm:1.0.1"],\ + ["data-view-byte-length", "npm:1.0.1"],\ + ["data-view-byte-offset", "npm:1.0.0"],\ + ["es-define-property", "npm:1.0.0"],\ + ["es-errors", "npm:1.3.0"],\ + ["es-object-atoms", "npm:1.0.0"],\ + ["es-set-tostringtag", "npm:2.0.3"],\ + ["es-to-primitive", "npm:1.2.1"],\ + ["function.prototype.name", "npm:1.1.6"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["get-symbol-description", "npm:1.0.2"],\ + ["globalthis", "npm:1.0.4"],\ + ["gopd", "npm:1.0.1"],\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["has-proto", "npm:1.0.3"],\ + ["has-symbols", "npm:1.0.3"],\ + ["hasown", "npm:2.0.2"],\ + ["internal-slot", "npm:1.0.7"],\ + ["is-array-buffer", "npm:3.0.4"],\ + ["is-callable", "npm:1.2.7"],\ + ["is-data-view", "npm:1.0.1"],\ + ["is-negative-zero", "npm:2.0.3"],\ + ["is-regex", "npm:1.1.4"],\ + ["is-shared-array-buffer", "npm:1.0.3"],\ + ["is-string", "npm:1.0.7"],\ + ["is-typed-array", "npm:1.1.13"],\ + ["is-weakref", "npm:1.0.2"],\ + ["object-inspect", "npm:1.13.2"],\ + ["object-keys", "npm:1.1.1"],\ + ["object.assign", "npm:4.1.5"],\ + ["regexp.prototype.flags", "npm:1.5.2"],\ + ["safe-array-concat", "npm:1.1.2"],\ + ["safe-regex-test", "npm:1.0.3"],\ + ["string.prototype.trim", "npm:1.2.9"],\ + ["string.prototype.trimend", "npm:1.0.8"],\ + ["string.prototype.trimstart", "npm:1.0.8"],\ + ["typed-array-buffer", "npm:1.0.2"],\ + ["typed-array-byte-length", "npm:1.0.1"],\ + ["typed-array-byte-offset", "npm:1.0.2"],\ + ["typed-array-length", "npm:1.0.6"],\ + ["unbox-primitive", "npm:1.0.2"],\ + ["which-typed-array", "npm:1.1.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-array-method-boxes-properly", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-array-method-boxes-properly-npm-1.0.0-d4bc728109-10c0.zip/node_modules/es-array-method-boxes-properly/",\ + "packageDependencies": [\ + ["es-array-method-boxes-properly", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-define-property", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-define-property-npm-1.0.0-e23aa9b242-10c0.zip/node_modules/es-define-property/",\ + "packageDependencies": [\ + ["es-define-property", "npm:1.0.0"],\ + ["get-intrinsic", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-errors", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-errors-npm-1.3.0-fda0c9b8a8-10c0.zip/node_modules/es-errors/",\ + "packageDependencies": [\ + ["es-errors", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-module-lexer", [\ + ["npm:1.5.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-module-lexer-npm-1.5.4-b52b96b8fc-10c0.zip/node_modules/es-module-lexer/",\ + "packageDependencies": [\ + ["es-module-lexer", "npm:1.5.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-object-atoms", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-object-atoms-npm-1.0.0-c5cca6d760-10c0.zip/node_modules/es-object-atoms/",\ + "packageDependencies": [\ + ["es-object-atoms", "npm:1.0.0"],\ + ["es-errors", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-set-tostringtag", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-set-tostringtag-npm-2.0.3-8a191fed13-10c0.zip/node_modules/es-set-tostringtag/",\ + "packageDependencies": [\ + ["es-set-tostringtag", "npm:2.0.3"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["has-tostringtag", "npm:1.0.2"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["es-to-primitive", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-10c0.zip/node_modules/es-to-primitive/",\ + "packageDependencies": [\ + ["es-to-primitive", "npm:1.2.1"],\ + ["is-callable", "npm:1.2.7"],\ + ["is-date-object", "npm:1.0.5"],\ + ["is-symbol", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escalade", [\ + ["npm:3.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/escalade-npm-3.1.2-5826d31cf8-10c0.zip/node_modules/escalade/",\ + "packageDependencies": [\ + ["escalade", "npm:3.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escape-html", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/escape-html-npm-1.0.3-376c22ee74-10c0.zip/node_modules/escape-html/",\ + "packageDependencies": [\ + ["escape-html", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escape-string-regexp", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/escape-string-regexp-npm-1.0.5-3284de402f-10c0.zip/node_modules/escape-string-regexp/",\ + "packageDependencies": [\ + ["escape-string-regexp", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-10c0.zip/node_modules/escape-string-regexp/",\ + "packageDependencies": [\ + ["escape-string-regexp", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["escodegen", [\ + ["npm:1.7.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/escodegen-npm-1.7.1-a0f4ef9246-10c0.zip/node_modules/escodegen/",\ + "packageDependencies": [\ + ["escodegen", "npm:1.7.1"],\ + ["esprima", "npm:1.2.5"],\ + ["estraverse", "npm:1.9.3"],\ + ["esutils", "npm:2.0.3"],\ + ["optionator", "npm:0.5.0"],\ + ["source-map", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint", [\ + ["npm:5.16.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-npm-5.16.0-91d3d3fc21-10c0.zip/node_modules/eslint/",\ + "packageDependencies": [\ + ["eslint", "npm:5.16.0"],\ + ["@babel/code-frame", "npm:7.24.7"],\ + ["ajv", "npm:6.12.6"],\ + ["chalk", "npm:2.4.2"],\ + ["cross-spawn", "npm:6.0.5"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["doctrine", "npm:3.0.0"],\ + ["eslint-scope", "npm:4.0.3"],\ + ["eslint-utils", "npm:1.4.3"],\ + ["eslint-visitor-keys", "npm:1.3.0"],\ + ["espree", "npm:5.0.1"],\ + ["esquery", "npm:1.6.0"],\ + ["esutils", "npm:2.0.3"],\ + ["file-entry-cache", "npm:5.0.1"],\ + ["functional-red-black-tree", "npm:1.0.1"],\ + ["glob", "npm:7.2.3"],\ + ["globals", "npm:11.12.0"],\ + ["ignore", "npm:4.0.6"],\ + ["import-fresh", "npm:3.3.0"],\ + ["imurmurhash", "npm:0.1.4"],\ + ["inquirer", "npm:6.5.2"],\ + ["js-yaml", "npm:3.14.1"],\ + ["json-stable-stringify-without-jsonify", "npm:1.0.1"],\ + ["levn", "npm:0.3.0"],\ + ["lodash", "npm:4.17.21"],\ + ["minimatch", "npm:3.1.2"],\ + ["mkdirp", "npm:0.5.6"],\ + ["natural-compare", "npm:1.4.0"],\ + ["optionator", "npm:0.8.3"],\ + ["path-is-inside", "npm:1.0.2"],\ + ["progress", "npm:2.0.3"],\ + ["regexpp", "npm:2.0.1"],\ + ["semver", "npm:5.7.2"],\ + ["strip-ansi", "npm:4.0.0"],\ + ["strip-json-comments", "npm:2.0.1"],\ + ["table", "npm:5.4.6"],\ + ["text-table", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.57.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-npm-8.57.0-4286e12a3a-10c0.zip/node_modules/eslint/",\ + "packageDependencies": [\ + ["eslint", "npm:8.57.0"],\ + ["@eslint-community/eslint-utils", "virtual:4286e12a3a0f74af013bc8f16c6d8fdde823cfbf6389660266b171e551f576c805b0a7a8eb2a7087a5cee7dfe6ebb6e1ea3808d93daf915edc95656907a381bb#npm:4.4.0"],\ + ["@eslint-community/regexpp", "npm:4.11.0"],\ + ["@eslint/eslintrc", "npm:2.1.4"],\ + ["@eslint/js", "npm:8.57.0"],\ + ["@humanwhocodes/config-array", "npm:0.11.14"],\ + ["@humanwhocodes/module-importer", "npm:1.0.1"],\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["@ungap/structured-clone", "npm:1.2.0"],\ + ["ajv", "npm:6.12.6"],\ + ["chalk", "npm:4.1.2"],\ + ["cross-spawn", "npm:7.0.3"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["doctrine", "npm:3.0.0"],\ + ["escape-string-regexp", "npm:4.0.0"],\ + ["eslint-scope", "npm:7.2.2"],\ + ["eslint-visitor-keys", "npm:3.4.3"],\ + ["espree", "npm:9.6.1"],\ + ["esquery", "npm:1.6.0"],\ + ["esutils", "npm:2.0.3"],\ + ["fast-deep-equal", "npm:3.1.3"],\ + ["file-entry-cache", "npm:6.0.1"],\ + ["find-up", "npm:5.0.0"],\ + ["glob-parent", "npm:6.0.2"],\ + ["globals", "npm:13.24.0"],\ + ["graphemer", "npm:1.4.0"],\ + ["ignore", "npm:5.3.1"],\ + ["imurmurhash", "npm:0.1.4"],\ + ["is-glob", "npm:4.0.3"],\ + ["is-path-inside", "npm:3.0.3"],\ + ["js-yaml", "npm:4.1.0"],\ + ["json-stable-stringify-without-jsonify", "npm:1.0.1"],\ + ["levn", "npm:0.4.1"],\ + ["lodash.merge", "npm:4.6.2"],\ + ["minimatch", "npm:3.1.2"],\ + ["natural-compare", "npm:1.4.0"],\ + ["optionator", "npm:0.9.4"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["text-table", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-scope", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-scope-npm-4.0.3-1492c6d263-10c0.zip/node_modules/eslint-scope/",\ + "packageDependencies": [\ + ["eslint-scope", "npm:4.0.3"],\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:4.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-scope-npm-5.1.1-71fe59b18a-10c0.zip/node_modules/eslint-scope/",\ + "packageDependencies": [\ + ["eslint-scope", "npm:5.1.1"],\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:4.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-scope-npm-7.2.2-53cb0df8e8-10c0.zip/node_modules/eslint-scope/",\ + "packageDependencies": [\ + ["eslint-scope", "npm:7.2.2"],\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-utils", [\ + ["npm:1.4.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-utils-npm-1.4.3-b8f8bce3ac-10c0.zip/node_modules/eslint-utils/",\ + "packageDependencies": [\ + ["eslint-utils", "npm:1.4.3"],\ + ["eslint-visitor-keys", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eslint-visitor-keys", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-visitor-keys-npm-1.3.0-c07780a0fb-10c0.zip/node_modules/eslint-visitor-keys/",\ + "packageDependencies": [\ + ["eslint-visitor-keys", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.4.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-10c0.zip/node_modules/eslint-visitor-keys/",\ + "packageDependencies": [\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["espree", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/espree-npm-5.0.1-abcab55b28-10c0.zip/node_modules/espree/",\ + "packageDependencies": [\ + ["espree", "npm:5.0.1"],\ + ["acorn", "npm:6.4.2"],\ + ["acorn-jsx", "virtual:abcab55b2813e51f08b801082c9f38afdbe481e334ba7d6e40dd2f60fbd9c724d465f043f920e1b30d36fbfa22aee00a31e3e712b3233975130b29ff0b980775#npm:5.3.2"],\ + ["eslint-visitor-keys", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/espree-npm-9.6.1-a50722a5a9-10c0.zip/node_modules/espree/",\ + "packageDependencies": [\ + ["espree", "npm:9.6.1"],\ + ["acorn", "npm:8.12.1"],\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esprima", [\ + ["npm:1.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esprima-npm-1.2.5-eb75c3b366-10c0.zip/node_modules/esprima/",\ + "packageDependencies": [\ + ["esprima", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esprima-npm-2.5.0-c5a5171589-10c0.zip/node_modules/esprima/",\ + "packageDependencies": [\ + ["esprima", "npm:2.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esprima-npm-4.0.1-1084e98778-10c0.zip/node_modules/esprima/",\ + "packageDependencies": [\ + ["esprima", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esquery", [\ + ["npm:1.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esquery-npm-1.6.0-16fee31531-10c0.zip/node_modules/esquery/",\ + "packageDependencies": [\ + ["esquery", "npm:1.6.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esrecurse", [\ + ["npm:4.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esrecurse-npm-4.3.0-10b86a887a-10c0.zip/node_modules/esrecurse/",\ + "packageDependencies": [\ + ["esrecurse", "npm:4.3.0"],\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["estraverse", [\ + ["npm:1.9.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/estraverse-npm-1.9.3-d92e28664e-10c0.zip/node_modules/estraverse/",\ + "packageDependencies": [\ + ["estraverse", "npm:1.9.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/estraverse-npm-4.3.0-920a32f3c6-10c0.zip/node_modules/estraverse/",\ + "packageDependencies": [\ + ["estraverse", "npm:4.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/estraverse-npm-5.3.0-03284f8f63-10c0.zip/node_modules/estraverse/",\ + "packageDependencies": [\ + ["estraverse", "npm:5.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["estree-walker", [\ + ["npm:0.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/estree-walker-npm-0.6.1-fe92d0e1f6-10c0.zip/node_modules/estree-walker/",\ + "packageDependencies": [\ + ["estree-walker", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["esutils", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/esutils-npm-2.0.3-f865beafd5-10c0.zip/node_modules/esutils/",\ + "packageDependencies": [\ + ["esutils", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["etag", [\ + ["npm:1.8.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/etag-npm-1.8.1-54a3b989d9-10c0.zip/node_modules/etag/",\ + "packageDependencies": [\ + ["etag", "npm:1.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eventemitter2", [\ + ["npm:0.4.14", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eventemitter2-npm-0.4.14-a8292eaed8-10c0.zip/node_modules/eventemitter2/",\ + "packageDependencies": [\ + ["eventemitter2", "npm:0.4.14"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["eventemitter3", [\ + ["npm:4.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/eventemitter3-npm-4.0.7-7afcdd74ae-10c0.zip/node_modules/eventemitter3/",\ + "packageDependencies": [\ + ["eventemitter3", "npm:4.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["events", [\ + ["npm:3.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/events-npm-3.3.0-c280bc7e48-10c0.zip/node_modules/events/",\ + "packageDependencies": [\ + ["events", "npm:3.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["execa", [\ + ["npm:5.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/execa-npm-5.1.1-191347acf5-10c0.zip/node_modules/execa/",\ + "packageDependencies": [\ + ["execa", "npm:5.1.1"],\ + ["cross-spawn", "npm:7.0.3"],\ + ["get-stream", "npm:6.0.1"],\ + ["human-signals", "npm:2.1.0"],\ + ["is-stream", "npm:2.0.1"],\ + ["merge-stream", "npm:2.0.0"],\ + ["npm-run-path", "npm:4.0.1"],\ + ["onetime", "npm:5.1.2"],\ + ["signal-exit", "npm:3.0.7"],\ + ["strip-final-newline", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["exit", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/exit-npm-0.1.2-ef3761a67d-10c0.zip/node_modules/exit/",\ + "packageDependencies": [\ + ["exit", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["expand-tilde", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/expand-tilde-npm-2.0.2-a4020a62f5-10c0.zip/node_modules/expand-tilde/",\ + "packageDependencies": [\ + ["expand-tilde", "npm:2.0.2"],\ + ["homedir-polyfill", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["exponential-backoff", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/exponential-backoff-npm-3.1.1-04df458b30-10c0.zip/node_modules/exponential-backoff/",\ + "packageDependencies": [\ + ["exponential-backoff", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["express", [\ + ["npm:4.19.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/express-npm-4.19.2-f81334a22a-10c0.zip/node_modules/express/",\ + "packageDependencies": [\ + ["express", "npm:4.19.2"],\ + ["accepts", "npm:1.3.8"],\ + ["array-flatten", "npm:1.1.1"],\ + ["body-parser", "npm:1.20.2"],\ + ["content-disposition", "npm:0.5.4"],\ + ["content-type", "npm:1.0.5"],\ + ["cookie", "npm:0.6.0"],\ + ["cookie-signature", "npm:1.0.6"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["depd", "npm:2.0.0"],\ + ["encodeurl", "npm:1.0.2"],\ + ["escape-html", "npm:1.0.3"],\ + ["etag", "npm:1.8.1"],\ + ["finalhandler", "npm:1.2.0"],\ + ["fresh", "npm:0.5.2"],\ + ["http-errors", "npm:2.0.0"],\ + ["merge-descriptors", "npm:1.0.1"],\ + ["methods", "npm:1.1.2"],\ + ["on-finished", "npm:2.4.1"],\ + ["parseurl", "npm:1.3.3"],\ + ["path-to-regexp", "npm:0.1.7"],\ + ["proxy-addr", "npm:2.0.7"],\ + ["qs", "npm:6.11.0"],\ + ["range-parser", "npm:1.2.1"],\ + ["safe-buffer", "npm:5.2.1"],\ + ["send", "npm:0.18.0"],\ + ["serve-static", "npm:1.15.0"],\ + ["setprototypeof", "npm:1.2.0"],\ + ["statuses", "npm:2.0.1"],\ + ["type-is", "npm:1.6.18"],\ + ["utils-merge", "npm:1.0.1"],\ + ["vary", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["extend", [\ + ["npm:3.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/extend-npm-3.0.2-e1ca07ac54-10c0.zip/node_modules/extend/",\ + "packageDependencies": [\ + ["extend", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["external-editor", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/external-editor-npm-3.1.0-878e7807af-10c0.zip/node_modules/external-editor/",\ + "packageDependencies": [\ + ["external-editor", "npm:3.1.0"],\ + ["chardet", "npm:0.7.0"],\ + ["iconv-lite", "npm:0.4.24"],\ + ["tmp", "npm:0.0.33"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-deep-equal", [\ + ["npm:3.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-10c0.zip/node_modules/fast-deep-equal/",\ + "packageDependencies": [\ + ["fast-deep-equal", "npm:3.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-json-stable-stringify", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-10c0.zip/node_modules/fast-json-stable-stringify/",\ + "packageDependencies": [\ + ["fast-json-stable-stringify", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-levenshtein", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fast-levenshtein-npm-1.0.7-16becd3aab-10c0.zip/node_modules/fast-levenshtein/",\ + "packageDependencies": [\ + ["fast-levenshtein", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-10c0.zip/node_modules/fast-levenshtein/",\ + "packageDependencies": [\ + ["fast-levenshtein", "npm:2.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-uri", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fast-uri-npm-3.0.1-20477a5d16-10c0.zip/node_modules/fast-uri/",\ + "packageDependencies": [\ + ["fast-uri", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fastq", [\ + ["npm:1.17.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fastq-npm-1.17.1-56d4554993-10c0.zip/node_modules/fastq/",\ + "packageDependencies": [\ + ["fastq", "npm:1.17.1"],\ + ["reusify", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["faye-websocket", [\ + ["npm:0.10.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/faye-websocket-npm-0.10.0-161b37cfdf-10c0.zip/node_modules/faye-websocket/",\ + "packageDependencies": [\ + ["faye-websocket", "npm:0.10.0"],\ + ["websocket-driver", "npm:0.7.4"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.11.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/faye-websocket-npm-0.11.4-1f0de76de9-10c0.zip/node_modules/faye-websocket/",\ + "packageDependencies": [\ + ["faye-websocket", "npm:0.11.4"],\ + ["websocket-driver", "npm:0.7.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["figures", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/figures-npm-2.0.0-f2db814eec-10c0.zip/node_modules/figures/",\ + "packageDependencies": [\ + ["figures", "npm:2.0.0"],\ + ["escape-string-regexp", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/figures-npm-3.2.0-85d357e955-10c0.zip/node_modules/figures/",\ + "packageDependencies": [\ + ["figures", "npm:3.2.0"],\ + ["escape-string-regexp", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["file-entry-cache", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/file-entry-cache-npm-5.0.1-7212af17f3-10c0.zip/node_modules/file-entry-cache/",\ + "packageDependencies": [\ + ["file-entry-cache", "npm:5.0.1"],\ + ["flat-cache", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/file-entry-cache-npm-6.0.1-31965cf0af-10c0.zip/node_modules/file-entry-cache/",\ + "packageDependencies": [\ + ["file-entry-cache", "npm:6.0.1"],\ + ["flat-cache", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["file-sync-cmp", [\ + ["npm:0.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/file-sync-cmp-npm-0.1.1-f85eb83c1e-10c0.zip/node_modules/file-sync-cmp/",\ + "packageDependencies": [\ + ["file-sync-cmp", "npm:0.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fileset", [\ + ["npm:0.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fileset-npm-0.2.1-a763bb891f-10c0.zip/node_modules/fileset/",\ + "packageDependencies": [\ + ["fileset", "npm:0.2.1"],\ + ["glob", "npm:5.0.15"],\ + ["minimatch", "npm:2.0.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fill-range", [\ + ["npm:7.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fill-range-npm-7.1.1-bf491486db-10c0.zip/node_modules/fill-range/",\ + "packageDependencies": [\ + ["fill-range", "npm:7.1.1"],\ + ["to-regex-range", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["finalhandler", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/finalhandler-npm-1.1.2-55a75d6b53-10c0.zip/node_modules/finalhandler/",\ + "packageDependencies": [\ + ["finalhandler", "npm:1.1.2"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["encodeurl", "npm:1.0.2"],\ + ["escape-html", "npm:1.0.3"],\ + ["on-finished", "npm:2.3.0"],\ + ["parseurl", "npm:1.3.3"],\ + ["statuses", "npm:1.5.0"],\ + ["unpipe", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/finalhandler-npm-1.2.0-593d001463-10c0.zip/node_modules/finalhandler/",\ + "packageDependencies": [\ + ["finalhandler", "npm:1.2.0"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["encodeurl", "npm:1.0.2"],\ + ["escape-html", "npm:1.0.3"],\ + ["on-finished", "npm:2.4.1"],\ + ["parseurl", "npm:1.3.3"],\ + ["statuses", "npm:2.0.1"],\ + ["unpipe", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["find-cache-dir", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/find-cache-dir-npm-2.1.0-772aa82638-10c0.zip/node_modules/find-cache-dir/",\ + "packageDependencies": [\ + ["find-cache-dir", "npm:2.1.0"],\ + ["commondir", "npm:1.0.1"],\ + ["make-dir", "npm:2.1.0"],\ + ["pkg-dir", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/find-cache-dir-npm-4.0.0-ad2504e37e-10c0.zip/node_modules/find-cache-dir/",\ + "packageDependencies": [\ + ["find-cache-dir", "npm:4.0.0"],\ + ["common-path-prefix", "npm:3.0.0"],\ + ["pkg-dir", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["find-up", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/find-up-npm-3.0.0-a2d4b1b317-10c0.zip/node_modules/find-up/",\ + "packageDependencies": [\ + ["find-up", "npm:3.0.0"],\ + ["locate-path", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/find-up-npm-5.0.0-e03e9b796d-10c0.zip/node_modules/find-up/",\ + "packageDependencies": [\ + ["find-up", "npm:5.0.0"],\ + ["locate-path", "npm:6.0.0"],\ + ["path-exists", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/find-up-npm-6.3.0-e5056fc655-10c0.zip/node_modules/find-up/",\ + "packageDependencies": [\ + ["find-up", "npm:6.3.0"],\ + ["locate-path", "npm:7.2.0"],\ + ["path-exists", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["findup-sync", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/findup-sync-npm-4.0.0-3884c677a0-10c0.zip/node_modules/findup-sync/",\ + "packageDependencies": [\ + ["findup-sync", "npm:4.0.0"],\ + ["detect-file", "npm:1.0.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["micromatch", "npm:4.0.7"],\ + ["resolve-dir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/findup-sync-npm-5.0.0-3de27edc83-10c0.zip/node_modules/findup-sync/",\ + "packageDependencies": [\ + ["findup-sync", "npm:5.0.0"],\ + ["detect-file", "npm:1.0.0"],\ + ["is-glob", "npm:4.0.3"],\ + ["micromatch", "npm:4.0.7"],\ + ["resolve-dir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fined", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fined-npm-1.2.0-4f8ee1586e-10c0.zip/node_modules/fined/",\ + "packageDependencies": [\ + ["fined", "npm:1.2.0"],\ + ["expand-tilde", "npm:2.0.2"],\ + ["is-plain-object", "npm:2.0.4"],\ + ["object.defaults", "npm:1.1.0"],\ + ["object.pick", "npm:1.3.0"],\ + ["parse-filepath", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flagged-respawn", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flagged-respawn-npm-1.0.1-06d03c443b-10c0.zip/node_modules/flagged-respawn/",\ + "packageDependencies": [\ + ["flagged-respawn", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flat", [\ + ["npm:4.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flat-npm-4.1.1-b787c178f2-10c0.zip/node_modules/flat/",\ + "packageDependencies": [\ + ["flat", "npm:4.1.1"],\ + ["is-buffer", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flat-cache", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flat-cache-npm-2.0.1-abf037b0b9-10c0.zip/node_modules/flat-cache/",\ + "packageDependencies": [\ + ["flat-cache", "npm:2.0.1"],\ + ["flatted", "npm:2.0.2"],\ + ["rimraf", "npm:2.6.3"],\ + ["write", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flat-cache-npm-3.2.0-9a887f084e-10c0.zip/node_modules/flat-cache/",\ + "packageDependencies": [\ + ["flat-cache", "npm:3.2.0"],\ + ["flatted", "npm:3.3.1"],\ + ["keyv", "npm:4.5.4"],\ + ["rimraf", "npm:3.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["flatted", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flatted-npm-2.0.2-ccb06e14ff-10c0.zip/node_modules/flatted/",\ + "packageDependencies": [\ + ["flatted", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/flatted-npm-3.3.1-458870f59b-10c0.zip/node_modules/flatted/",\ + "packageDependencies": [\ + ["flatted", "npm:3.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["follow-redirects", [\ + ["npm:1.15.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/follow-redirects-npm-1.15.6-50635fe51d-10c0.zip/node_modules/follow-redirects/",\ + "packageDependencies": [\ + ["follow-redirects", "npm:1.15.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:a313c479c5c7e54d9ec8fbeeea69ff640f56b8989ea2dff42351a3fa5c4061fb80a52d8ede0f0826a181a216820c2d2c3f15da881e7fdf31cef1c446e42f0c45#npm:1.15.6", {\ + "packageLocation": "./.yarn/__virtual__/follow-redirects-virtual-23ff1601e1/7/.yarn/berry/cache/follow-redirects-npm-1.15.6-50635fe51d-10c0.zip/node_modules/follow-redirects/",\ + "packageDependencies": [\ + ["follow-redirects", "virtual:a313c479c5c7e54d9ec8fbeeea69ff640f56b8989ea2dff42351a3fa5c4061fb80a52d8ede0f0826a181a216820c2d2c3f15da881e7fdf31cef1c446e42f0c45#npm:1.15.6"],\ + ["@types/debug", null],\ + ["debug", null]\ + ],\ + "packagePeers": [\ + "@types/debug",\ + "debug"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["for-each", [\ + ["npm:0.3.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/for-each-npm-0.3.3-0010ca8cdd-10c0.zip/node_modules/for-each/",\ + "packageDependencies": [\ + ["for-each", "npm:0.3.3"],\ + ["is-callable", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["for-in", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/for-in-npm-1.0.2-37e3d7aae5-10c0.zip/node_modules/for-in/",\ + "packageDependencies": [\ + ["for-in", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["for-own", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/for-own-npm-1.0.0-d7cbccdc1b-10c0.zip/node_modules/for-own/",\ + "packageDependencies": [\ + ["for-own", "npm:1.0.0"],\ + ["for-in", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["foreground-child", [\ + ["npm:3.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/foreground-child-npm-3.2.1-788dc2267e-10c0.zip/node_modules/foreground-child/",\ + "packageDependencies": [\ + ["foreground-child", "npm:3.2.1"],\ + ["cross-spawn", "npm:7.0.3"],\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["forwarded", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/forwarded-npm-0.2.0-6473dabe35-10c0.zip/node_modules/forwarded/",\ + "packageDependencies": [\ + ["forwarded", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fresh", [\ + ["npm:0.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fresh-npm-0.5.2-ad2bb4c0a2-10c0.zip/node_modules/fresh/",\ + "packageDependencies": [\ + ["fresh", "npm:0.5.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs-extra", [\ + ["npm:8.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fs-extra-npm-8.1.0-197473387f-10c0.zip/node_modules/fs-extra/",\ + "packageDependencies": [\ + ["fs-extra", "npm:8.1.0"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["jsonfile", "npm:4.0.0"],\ + ["universalify", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs-minipass", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-10c0.zip/node_modules/fs-minipass/",\ + "packageDependencies": [\ + ["fs-minipass", "npm:2.1.0"],\ + ["minipass", "npm:3.3.6"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fs-minipass-npm-3.0.3-d148d6ac19-10c0.zip/node_modules/fs-minipass/",\ + "packageDependencies": [\ + ["fs-minipass", "npm:3.0.3"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs-readdir-recursive", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fs-readdir-recursive-npm-1.1.0-258e230a4b-10c0.zip/node_modules/fs-readdir-recursive/",\ + "packageDependencies": [\ + ["fs-readdir-recursive", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fs.realpath", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/fs.realpath-npm-1.0.0-c8f05d8126-10c0.zip/node_modules/fs.realpath/",\ + "packageDependencies": [\ + ["fs.realpath", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fsevents", [\ + ["patch:fsevents@npm%3A2.1.3#optional!builtin::version=2.1.3&hash=31d12a", {\ + "packageLocation": "./.yarn/unplugged/fsevents-patch-da71431527/node_modules/fsevents/",\ + "packageDependencies": [\ + ["fsevents", "patch:fsevents@npm%3A2.1.3#optional!builtin::version=2.1.3&hash=31d12a"],\ + ["node-gyp", "npm:10.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1", {\ + "packageLocation": "./.yarn/unplugged/fsevents-patch-6b67494872/node_modules/fsevents/",\ + "packageDependencies": [\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"],\ + ["node-gyp", "npm:10.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["function-bind", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/function-bind-npm-1.1.2-7a55be9b03-10c0.zip/node_modules/function-bind/",\ + "packageDependencies": [\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["function.prototype.name", [\ + ["npm:1.1.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-10c0.zip/node_modules/function.prototype.name/",\ + "packageDependencies": [\ + ["function.prototype.name", "npm:1.1.6"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.23.3"],\ + ["functions-have-names", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["functional-red-black-tree", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/functional-red-black-tree-npm-1.0.1-ccfe924dcd-10c0.zip/node_modules/functional-red-black-tree/",\ + "packageDependencies": [\ + ["functional-red-black-tree", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["functions-have-names", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/functions-have-names-npm-1.2.3-e5cf1e2208-10c0.zip/node_modules/functions-have-names/",\ + "packageDependencies": [\ + ["functions-have-names", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gaze", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/gaze-npm-1.1.3-cd09a2e834-10c0.zip/node_modules/gaze/",\ + "packageDependencies": [\ + ["gaze", "npm:1.1.3"],\ + ["globule", "npm:1.3.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gensync", [\ + ["npm:1.0.0-beta.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/gensync-npm-1.0.0-beta.2-224666d72f-10c0.zip/node_modules/gensync/",\ + "packageDependencies": [\ + ["gensync", "npm:1.0.0-beta.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-caller-file", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/get-caller-file-npm-2.0.5-80e8a86305-10c0.zip/node_modules/get-caller-file/",\ + "packageDependencies": [\ + ["get-caller-file", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-func-name", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/get-func-name-npm-2.0.2-409dbe3703-10c0.zip/node_modules/get-func-name/",\ + "packageDependencies": [\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-intrinsic", [\ + ["npm:1.2.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/get-intrinsic-npm-1.2.4-1dad3427b2-10c0.zip/node_modules/get-intrinsic/",\ + "packageDependencies": [\ + ["get-intrinsic", "npm:1.2.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["function-bind", "npm:1.1.2"],\ + ["has-proto", "npm:1.0.3"],\ + ["has-symbols", "npm:1.0.3"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-stream", [\ + ["npm:6.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/get-stream-npm-6.0.1-83e51a4642-10c0.zip/node_modules/get-stream/",\ + "packageDependencies": [\ + ["get-stream", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["get-symbol-description", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/get-symbol-description-npm-1.0.2-f8c332e0b5-10c0.zip/node_modules/get-symbol-description/",\ + "packageDependencies": [\ + ["get-symbol-description", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["getobject", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/getobject-npm-1.0.2-028e0dfb19-10c0.zip/node_modules/getobject/",\ + "packageDependencies": [\ + ["getobject", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob", [\ + ["npm:10.4.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-npm-10.4.5-8c63175f05-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:10.4.5"],\ + ["foreground-child", "npm:3.2.1"],\ + ["jackspeak", "npm:3.4.3"],\ + ["minimatch", "npm:9.0.5"],\ + ["minipass", "npm:7.1.2"],\ + ["package-json-from-dist", "npm:1.0.0"],\ + ["path-scurry", "npm:1.11.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.15", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-npm-5.0.15-59b17ec4cb-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:5.0.15"],\ + ["inflight", "npm:1.0.6"],\ + ["inherits", "npm:2.0.4"],\ + ["minimatch", "npm:3.1.2"],\ + ["once", "npm:1.4.0"],\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-npm-7.1.3-c65cc4bde2-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:7.1.3"],\ + ["fs.realpath", "npm:1.0.0"],\ + ["inflight", "npm:1.0.6"],\ + ["inherits", "npm:2.0.4"],\ + ["minimatch", "npm:3.1.2"],\ + ["once", "npm:1.4.0"],\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-npm-7.1.7-5698ad9c48-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:7.1.7"],\ + ["fs.realpath", "npm:1.0.0"],\ + ["inflight", "npm:1.0.6"],\ + ["inherits", "npm:2.0.4"],\ + ["minimatch", "npm:3.1.2"],\ + ["once", "npm:1.4.0"],\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-npm-7.2.3-2d866d17a5-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:7.2.3"],\ + ["fs.realpath", "npm:1.0.0"],\ + ["inflight", "npm:1.0.6"],\ + ["inherits", "npm:2.0.4"],\ + ["minimatch", "npm:3.1.2"],\ + ["once", "npm:1.4.0"],\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob-parent", [\ + ["npm:5.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-parent-npm-5.1.2-021ab32634-10c0.zip/node_modules/glob-parent/",\ + "packageDependencies": [\ + ["glob-parent", "npm:5.1.2"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-parent-npm-6.0.2-2cbef12738-10c0.zip/node_modules/glob-parent/",\ + "packageDependencies": [\ + ["glob-parent", "npm:6.0.2"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["glob-to-regexp", [\ + ["npm:0.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/glob-to-regexp-npm-0.4.1-cd697e0fc7-10c0.zip/node_modules/glob-to-regexp/",\ + "packageDependencies": [\ + ["glob-to-regexp", "npm:0.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["global-modules", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/global-modules-npm-1.0.0-70c522e57a-10c0.zip/node_modules/global-modules/",\ + "packageDependencies": [\ + ["global-modules", "npm:1.0.0"],\ + ["global-prefix", "npm:1.0.2"],\ + ["is-windows", "npm:1.0.2"],\ + ["resolve-dir", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["global-prefix", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/global-prefix-npm-1.0.2-a96996834b-10c0.zip/node_modules/global-prefix/",\ + "packageDependencies": [\ + ["global-prefix", "npm:1.0.2"],\ + ["expand-tilde", "npm:2.0.2"],\ + ["homedir-polyfill", "npm:1.0.3"],\ + ["ini", "npm:1.3.8"],\ + ["is-windows", "npm:1.0.2"],\ + ["which", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globals", [\ + ["npm:11.12.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/globals-npm-11.12.0-1fa7f41a6c-10c0.zip/node_modules/globals/",\ + "packageDependencies": [\ + ["globals", "npm:11.12.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:13.24.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/globals-npm-13.24.0-cc7713139c-10c0.zip/node_modules/globals/",\ + "packageDependencies": [\ + ["globals", "npm:13.24.0"],\ + ["type-fest", "npm:0.20.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globalthis", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/globalthis-npm-1.0.4-de22ac6193-10c0.zip/node_modules/globalthis/",\ + "packageDependencies": [\ + ["globalthis", "npm:1.0.4"],\ + ["define-properties", "npm:1.2.1"],\ + ["gopd", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["globule", [\ + ["npm:1.3.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/globule-npm-1.3.4-b973c73701-10c0.zip/node_modules/globule/",\ + "packageDependencies": [\ + ["globule", "npm:1.3.4"],\ + ["glob", "npm:7.1.7"],\ + ["lodash", "npm:4.17.21"],\ + ["minimatch", "npm:3.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gopd", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/gopd-npm-1.0.1-10c1d0b534-10c0.zip/node_modules/gopd/",\ + "packageDependencies": [\ + ["gopd", "npm:1.0.1"],\ + ["get-intrinsic", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["graceful-fs", [\ + ["npm:4.2.11", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/graceful-fs-npm-4.2.11-24bb648a68-10c0.zip/node_modules/graceful-fs/",\ + "packageDependencies": [\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["graphemer", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/graphemer-npm-1.4.0-0627732d35-10c0.zip/node_modules/graphemer/",\ + "packageDependencies": [\ + ["graphemer", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["growl", [\ + ["npm:1.10.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/growl-npm-1.10.5-2d1da54198-10c0.zip/node_modules/growl/",\ + "packageDependencies": [\ + ["growl", "npm:1.10.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt", [\ + ["npm:1.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-npm-1.6.1-1472b04671-10c0.zip/node_modules/grunt/",\ + "packageDependencies": [\ + ["grunt", "npm:1.6.1"],\ + ["dateformat", "npm:4.6.3"],\ + ["eventemitter2", "npm:0.4.14"],\ + ["exit", "npm:0.1.2"],\ + ["findup-sync", "npm:5.0.0"],\ + ["glob", "npm:7.1.7"],\ + ["grunt-cli", "npm:1.4.3"],\ + ["grunt-known-options", "npm:2.0.0"],\ + ["grunt-legacy-log", "npm:3.0.0"],\ + ["grunt-legacy-util", "npm:2.0.1"],\ + ["iconv-lite", "npm:0.6.3"],\ + ["js-yaml", "npm:3.14.1"],\ + ["minimatch", "npm:3.0.8"],\ + ["nopt", "npm:3.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-babel", [\ + ["npm:8.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-babel-npm-8.0.0-b24f704da0-10c0.zip/node_modules/grunt-babel/",\ + "packageDependencies": [\ + ["grunt-babel", "npm:8.0.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:8.0.0", {\ + "packageLocation": "./.yarn/__virtual__/grunt-babel-virtual-3b2116929e/7/.yarn/berry/cache/grunt-babel-npm-8.0.0-b24f704da0-10c0.zip/node_modules/grunt-babel/",\ + "packageDependencies": [\ + ["grunt-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:8.0.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@types/babel__core", null],\ + ["@types/grunt", null],\ + ["grunt", "npm:1.6.1"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core",\ + "@types/grunt",\ + "grunt"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-cli", [\ + ["npm:1.4.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-cli-npm-1.4.3-4375c9a800-10c0.zip/node_modules/grunt-cli/",\ + "packageDependencies": [\ + ["grunt-cli", "npm:1.4.3"],\ + ["grunt-known-options", "npm:2.0.0"],\ + ["interpret", "npm:1.1.0"],\ + ["liftup", "npm:3.0.1"],\ + ["nopt", "npm:4.0.3"],\ + ["v8flags", "npm:3.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-cli-npm-1.5.0-316f5fd2b4-10c0.zip/node_modules/grunt-cli/",\ + "packageDependencies": [\ + ["grunt-cli", "npm:1.5.0"],\ + ["grunt-known-options", "npm:2.0.0"],\ + ["interpret", "npm:1.1.0"],\ + ["liftup", "npm:3.0.1"],\ + ["nopt", "npm:5.0.0"],\ + ["v8flags", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-contrib-clean", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-contrib-clean-npm-2.0.1-5e629dfa5f-10c0.zip/node_modules/grunt-contrib-clean/",\ + "packageDependencies": [\ + ["grunt-contrib-clean", "npm:2.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.0.1", {\ + "packageLocation": "./.yarn/__virtual__/grunt-contrib-clean-virtual-f61174dfac/7/.yarn/berry/cache/grunt-contrib-clean-npm-2.0.1-5e629dfa5f-10c0.zip/node_modules/grunt-contrib-clean/",\ + "packageDependencies": [\ + ["grunt-contrib-clean", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.0.1"],\ + ["@types/grunt", null],\ + ["async", "npm:3.2.5"],\ + ["grunt", "npm:1.6.1"],\ + ["rimraf", "npm:2.7.1"]\ + ],\ + "packagePeers": [\ + "@types/grunt",\ + "grunt"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-contrib-copy", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-contrib-copy-npm-1.0.0-496f41401b-10c0.zip/node_modules/grunt-contrib-copy/",\ + "packageDependencies": [\ + ["grunt-contrib-copy", "npm:1.0.0"],\ + ["chalk", "npm:1.1.3"],\ + ["file-sync-cmp", "npm:0.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-contrib-uglify", [\ + ["npm:5.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-contrib-uglify-npm-5.2.2-a76bfc0d14-10c0.zip/node_modules/grunt-contrib-uglify/",\ + "packageDependencies": [\ + ["grunt-contrib-uglify", "npm:5.2.2"],\ + ["chalk", "npm:4.1.2"],\ + ["maxmin", "npm:3.0.0"],\ + ["uglify-js", "npm:3.19.1"],\ + ["uri-path", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-contrib-watch", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-contrib-watch-npm-1.1.0-af15d290a3-10c0.zip/node_modules/grunt-contrib-watch/",\ + "packageDependencies": [\ + ["grunt-contrib-watch", "npm:1.1.0"],\ + ["async", "npm:2.6.4"],\ + ["gaze", "npm:1.1.3"],\ + ["lodash", "npm:4.17.21"],\ + ["tiny-lr", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-eslint", [\ + ["npm:24.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-eslint-npm-24.3.0-61c303badd-10c0.zip/node_modules/grunt-eslint/",\ + "packageDependencies": [\ + ["grunt-eslint", "npm:24.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:24.3.0", {\ + "packageLocation": "./.yarn/__virtual__/grunt-eslint-virtual-f39fd2f8ee/7/.yarn/berry/cache/grunt-eslint-npm-24.3.0-61c303badd-10c0.zip/node_modules/grunt-eslint/",\ + "packageDependencies": [\ + ["grunt-eslint", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:24.3.0"],\ + ["@types/grunt", null],\ + ["chalk", "npm:4.1.2"],\ + ["eslint", "npm:8.57.0"],\ + ["grunt", "npm:1.6.1"]\ + ],\ + "packagePeers": [\ + "@types/grunt",\ + "grunt"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-exec", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-exec-npm-3.0.0-881fc96197-10c0.zip/node_modules/grunt-exec/",\ + "packageDependencies": [\ + ["grunt-exec", "npm:3.0.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:3.0.0", {\ + "packageLocation": "./.yarn/__virtual__/grunt-exec-virtual-b1ff90ebdf/7/.yarn/berry/cache/grunt-exec-npm-3.0.0-881fc96197-10c0.zip/node_modules/grunt-exec/",\ + "packageDependencies": [\ + ["grunt-exec", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:3.0.0"],\ + ["@types/grunt", null],\ + ["grunt", "npm:1.6.1"]\ + ],\ + "packagePeers": [\ + "@types/grunt",\ + "grunt"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-karma", [\ + ["npm:4.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-karma-npm-4.0.2-e6c17a12a7-10c0.zip/node_modules/grunt-karma/",\ + "packageDependencies": [\ + ["grunt-karma", "npm:4.0.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.0.2", {\ + "packageLocation": "./.yarn/__virtual__/grunt-karma-virtual-a40462e612/7/.yarn/berry/cache/grunt-karma-npm-4.0.2-e6c17a12a7-10c0.zip/node_modules/grunt-karma/",\ + "packageDependencies": [\ + ["grunt-karma", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.0.2"],\ + ["@types/grunt", null],\ + ["@types/karma", null],\ + ["grunt", "npm:1.6.1"],\ + ["karma", "npm:6.4.4"],\ + ["lodash", "npm:4.17.21"]\ + ],\ + "packagePeers": [\ + "@types/grunt",\ + "@types/karma",\ + "grunt",\ + "karma"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-known-options", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-known-options-npm-2.0.0-bce4400d18-10c0.zip/node_modules/grunt-known-options/",\ + "packageDependencies": [\ + ["grunt-known-options", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-legacy-log", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-legacy-log-npm-3.0.0-f16318133b-10c0.zip/node_modules/grunt-legacy-log/",\ + "packageDependencies": [\ + ["grunt-legacy-log", "npm:3.0.0"],\ + ["colors", "npm:1.1.2"],\ + ["grunt-legacy-log-utils", "npm:2.1.0"],\ + ["hooker", "npm:0.2.3"],\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-legacy-log-utils", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-legacy-log-utils-npm-2.1.0-f7dc5486f7-10c0.zip/node_modules/grunt-legacy-log-utils/",\ + "packageDependencies": [\ + ["grunt-legacy-log-utils", "npm:2.1.0"],\ + ["chalk", "npm:4.1.2"],\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-legacy-util", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-legacy-util-npm-2.0.1-a2405f7758-10c0.zip/node_modules/grunt-legacy-util/",\ + "packageDependencies": [\ + ["grunt-legacy-util", "npm:2.0.1"],\ + ["async", "npm:3.2.5"],\ + ["exit", "npm:0.1.2"],\ + ["getobject", "npm:1.0.2"],\ + ["hooker", "npm:0.2.3"],\ + ["lodash", "npm:4.17.21"],\ + ["underscore.string", "npm:3.3.6"],\ + ["which", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-mocha-istanbul", [\ + ["npm:5.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-mocha-istanbul-npm-5.0.2-122ff7b753-10c0.zip/node_modules/grunt-mocha-istanbul/",\ + "packageDependencies": [\ + ["grunt-mocha-istanbul", "npm:5.0.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.2", {\ + "packageLocation": "./.yarn/__virtual__/grunt-mocha-istanbul-virtual-14f813167f/7/.yarn/berry/cache/grunt-mocha-istanbul-npm-5.0.2-122ff7b753-10c0.zip/node_modules/grunt-mocha-istanbul/",\ + "packageDependencies": [\ + ["grunt-mocha-istanbul", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.2"],\ + ["@types/grunt", null],\ + ["grunt", "npm:1.6.1"]\ + ],\ + "packagePeers": [\ + "@types/grunt",\ + "grunt"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-mocha-test", [\ + ["npm:0.13.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-mocha-test-npm-0.13.3-7ebec35113-10c0.zip/node_modules/grunt-mocha-test/",\ + "packageDependencies": [\ + ["grunt-mocha-test", "npm:0.13.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:0.13.3", {\ + "packageLocation": "./.yarn/__virtual__/grunt-mocha-test-virtual-0ea48139f9/7/.yarn/berry/cache/grunt-mocha-test-npm-0.13.3-7ebec35113-10c0.zip/node_modules/grunt-mocha-test/",\ + "packageDependencies": [\ + ["grunt-mocha-test", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:0.13.3"],\ + ["@types/mocha", null],\ + ["hooker", "npm:0.2.3"],\ + ["mkdirp", "npm:0.5.6"],\ + ["mocha", "npm:7.2.0"]\ + ],\ + "packagePeers": [\ + "@types/mocha",\ + "mocha"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["grunt-webpack", [\ + ["npm:6.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/grunt-webpack-npm-6.0.0-e19b13d0e7-10c0.zip/node_modules/grunt-webpack/",\ + "packageDependencies": [\ + ["grunt-webpack", "npm:6.0.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:6.0.0", {\ + "packageLocation": "./.yarn/__virtual__/grunt-webpack-virtual-0d8c5080f3/7/.yarn/berry/cache/grunt-webpack-npm-6.0.0-e19b13d0e7-10c0.zip/node_modules/grunt-webpack/",\ + "packageDependencies": [\ + ["grunt-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:6.0.0"],\ + ["@types/webpack", null],\ + ["deep-for-each", "npm:3.0.0"],\ + ["lodash", "npm:4.17.21"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"]\ + ],\ + "packagePeers": [\ + "@types/webpack",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["gzip-size", [\ + ["npm:5.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/gzip-size-npm-5.1.1-b757f76e19-10c0.zip/node_modules/gzip-size/",\ + "packageDependencies": [\ + ["gzip-size", "npm:5.1.1"],\ + ["duplexer", "npm:0.1.2"],\ + ["pify", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["handle-thing", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/handle-thing-npm-2.0.1-084baca59e-10c0.zip/node_modules/handle-thing/",\ + "packageDependencies": [\ + ["handle-thing", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["handlebars", [\ + ["npm:4.7.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/handlebars-npm-4.7.8-25244c2c82-10c0.zip/node_modules/handlebars/",\ + "packageDependencies": [\ + ["handlebars", "npm:4.7.8"],\ + ["minimist", "npm:1.2.8"],\ + ["neo-async", "npm:2.6.2"],\ + ["source-map", "npm:0.6.1"],\ + ["uglify-js", "npm:3.19.1"],\ + ["wordwrap", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-ansi", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-ansi-npm-2.0.0-9bf0cff2af-10c0.zip/node_modules/has-ansi/",\ + "packageDependencies": [\ + ["has-ansi", "npm:2.0.0"],\ + ["ansi-regex", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-bigints", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-bigints-npm-1.0.2-52732e614d-10c0.zip/node_modules/has-bigints/",\ + "packageDependencies": [\ + ["has-bigints", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-flag", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-flag-npm-1.0.0-9e0c397172-10c0.zip/node_modules/has-flag/",\ + "packageDependencies": [\ + ["has-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-flag-npm-3.0.0-16ac11fe05-10c0.zip/node_modules/has-flag/",\ + "packageDependencies": [\ + ["has-flag", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-flag-npm-4.0.0-32af9f0536-10c0.zip/node_modules/has-flag/",\ + "packageDependencies": [\ + ["has-flag", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-property-descriptors", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-property-descriptors-npm-1.0.2-d7077d09f1-10c0.zip/node_modules/has-property-descriptors/",\ + "packageDependencies": [\ + ["has-property-descriptors", "npm:1.0.2"],\ + ["es-define-property", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-proto", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-proto-npm-1.0.3-b598da2961-10c0.zip/node_modules/has-proto/",\ + "packageDependencies": [\ + ["has-proto", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-symbols", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-symbols-npm-1.0.3-1986bff2c4-10c0.zip/node_modules/has-symbols/",\ + "packageDependencies": [\ + ["has-symbols", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["has-tostringtag", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/has-tostringtag-npm-1.0.2-74a4800369-10c0.zip/node_modules/has-tostringtag/",\ + "packageDependencies": [\ + ["has-tostringtag", "npm:1.0.2"],\ + ["has-symbols", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["hasown", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/hasown-npm-2.0.2-80fe6c9901-10c0.zip/node_modules/hasown/",\ + "packageDependencies": [\ + ["hasown", "npm:2.0.2"],\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["he", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/he-npm-1.2.0-3b73a2ff07-10c0.zip/node_modules/he/",\ + "packageDependencies": [\ + ["he", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["homedir-polyfill", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/homedir-polyfill-npm-1.0.3-da1a29ce00-10c0.zip/node_modules/homedir-polyfill/",\ + "packageDependencies": [\ + ["homedir-polyfill", "npm:1.0.3"],\ + ["parse-passwd", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["hooker", [\ + ["npm:0.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/hooker-npm-0.2.3-96f4d085fc-10c0.zip/node_modules/hooker/",\ + "packageDependencies": [\ + ["hooker", "npm:0.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["hpack.js", [\ + ["npm:2.1.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/hpack.js-npm-2.1.6-b08cc088ad-10c0.zip/node_modules/hpack.js/",\ + "packageDependencies": [\ + ["hpack.js", "npm:2.1.6"],\ + ["inherits", "npm:2.0.4"],\ + ["obuf", "npm:1.1.2"],\ + ["readable-stream", "npm:2.3.8"],\ + ["wbuf", "npm:1.7.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["html-entities", [\ + ["npm:2.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/html-entities-npm-2.5.2-0b6113e376-10c0.zip/node_modules/html-entities/",\ + "packageDependencies": [\ + ["html-entities", "npm:2.5.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-cache-semantics", [\ + ["npm:4.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-cache-semantics-npm-4.1.1-1120131375-10c0.zip/node_modules/http-cache-semantics/",\ + "packageDependencies": [\ + ["http-cache-semantics", "npm:4.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-deceiver", [\ + ["npm:1.2.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-deceiver-npm-1.2.7-4f3aaa5b79-10c0.zip/node_modules/http-deceiver/",\ + "packageDependencies": [\ + ["http-deceiver", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-errors", [\ + ["npm:1.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-errors-npm-1.6.3-9b5bc0b0a8-10c0.zip/node_modules/http-errors/",\ + "packageDependencies": [\ + ["http-errors", "npm:1.6.3"],\ + ["depd", "npm:1.1.2"],\ + ["inherits", "npm:2.0.3"],\ + ["setprototypeof", "npm:1.1.0"],\ + ["statuses", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-errors-npm-2.0.0-3f1c503428-10c0.zip/node_modules/http-errors/",\ + "packageDependencies": [\ + ["http-errors", "npm:2.0.0"],\ + ["depd", "npm:2.0.0"],\ + ["inherits", "npm:2.0.4"],\ + ["setprototypeof", "npm:1.2.0"],\ + ["statuses", "npm:2.0.1"],\ + ["toidentifier", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-parser-js", [\ + ["npm:0.5.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-parser-js-npm-0.5.8-f80208ea99-10c0.zip/node_modules/http-parser-js/",\ + "packageDependencies": [\ + ["http-parser-js", "npm:0.5.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-proxy", [\ + ["npm:1.18.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-proxy-npm-1.18.1-a313c479c5-10c0.zip/node_modules/http-proxy/",\ + "packageDependencies": [\ + ["http-proxy", "npm:1.18.1"],\ + ["eventemitter3", "npm:4.0.7"],\ + ["follow-redirects", "virtual:a313c479c5c7e54d9ec8fbeeea69ff640f56b8989ea2dff42351a3fa5c4061fb80a52d8ede0f0826a181a216820c2d2c3f15da881e7fdf31cef1c446e42f0c45#npm:1.15.6"],\ + ["requires-port", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-proxy-agent", [\ + ["npm:7.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-proxy-agent-npm-7.0.2-643ed7cc33-10c0.zip/node_modules/http-proxy-agent/",\ + "packageDependencies": [\ + ["http-proxy-agent", "npm:7.0.2"],\ + ["agent-base", "npm:7.1.1"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["http-proxy-middleware", [\ + ["npm:2.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/http-proxy-middleware-npm-2.0.6-3bb17658ee-10c0.zip/node_modules/http-proxy-middleware/",\ + "packageDependencies": [\ + ["http-proxy-middleware", "npm:2.0.6"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:2.0.6", {\ + "packageLocation": "./.yarn/__virtual__/http-proxy-middleware-virtual-0008ad406f/7/.yarn/berry/cache/http-proxy-middleware-npm-2.0.6-3bb17658ee-10c0.zip/node_modules/http-proxy-middleware/",\ + "packageDependencies": [\ + ["http-proxy-middleware", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:2.0.6"],\ + ["@types/express", "npm:4.17.21"],\ + ["@types/http-proxy", "npm:1.17.14"],\ + ["http-proxy", "npm:1.18.1"],\ + ["is-glob", "npm:4.0.3"],\ + ["is-plain-obj", "npm:3.0.0"],\ + ["micromatch", "npm:4.0.7"]\ + ],\ + "packagePeers": [\ + "@types/express"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["https-proxy-agent", [\ + ["npm:7.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/https-proxy-agent-npm-7.0.5-94c14d4619-10c0.zip/node_modules/https-proxy-agent/",\ + "packageDependencies": [\ + ["https-proxy-agent", "npm:7.0.5"],\ + ["agent-base", "npm:7.1.1"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["human-signals", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/human-signals-npm-2.1.0-f75815481d-10c0.zip/node_modules/human-signals/",\ + "packageDependencies": [\ + ["human-signals", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["hyperdyperid", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/hyperdyperid-npm-1.2.0-47be2553af-10c0.zip/node_modules/hyperdyperid/",\ + "packageDependencies": [\ + ["hyperdyperid", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["iconv-lite", [\ + ["npm:0.4.24", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/iconv-lite-npm-0.4.24-c5c4ac6695-10c0.zip/node_modules/iconv-lite/",\ + "packageDependencies": [\ + ["iconv-lite", "npm:0.4.24"],\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/iconv-lite-npm-0.6.3-24b8aae27e-10c0.zip/node_modules/iconv-lite/",\ + "packageDependencies": [\ + ["iconv-lite", "npm:0.6.3"],\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ignore", [\ + ["npm:4.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ignore-npm-4.0.6-66c0d6543e-10c0.zip/node_modules/ignore/",\ + "packageDependencies": [\ + ["ignore", "npm:4.0.6"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ignore-npm-5.3.1-f6947c5df7-10c0.zip/node_modules/ignore/",\ + "packageDependencies": [\ + ["ignore", "npm:5.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["import-fresh", [\ + ["npm:3.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/import-fresh-npm-3.3.0-3e34265ca9-10c0.zip/node_modules/import-fresh/",\ + "packageDependencies": [\ + ["import-fresh", "npm:3.3.0"],\ + ["parent-module", "npm:1.0.1"],\ + ["resolve-from", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["imurmurhash", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/imurmurhash-npm-0.1.4-610c5068a0-10c0.zip/node_modules/imurmurhash/",\ + "packageDependencies": [\ + ["imurmurhash", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["indent-string", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/indent-string-npm-4.0.0-7b717435b2-10c0.zip/node_modules/indent-string/",\ + "packageDependencies": [\ + ["indent-string", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["inflight", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/inflight-npm-1.0.6-ccedb4b908-10c0.zip/node_modules/inflight/",\ + "packageDependencies": [\ + ["inflight", "npm:1.0.6"],\ + ["once", "npm:1.4.0"],\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["inherits", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/inherits-npm-2.0.3-401e64b080-10c0.zip/node_modules/inherits/",\ + "packageDependencies": [\ + ["inherits", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/inherits-npm-2.0.4-c66b3957a0-10c0.zip/node_modules/inherits/",\ + "packageDependencies": [\ + ["inherits", "npm:2.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ini", [\ + ["npm:1.3.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ini-npm-1.3.8-fb5040b4c0-10c0.zip/node_modules/ini/",\ + "packageDependencies": [\ + ["ini", "npm:1.3.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["inquirer", [\ + ["npm:6.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/inquirer-npm-6.5.2-4f6408c247-10c0.zip/node_modules/inquirer/",\ + "packageDependencies": [\ + ["inquirer", "npm:6.5.2"],\ + ["ansi-escapes", "npm:3.2.0"],\ + ["chalk", "npm:2.4.2"],\ + ["cli-cursor", "npm:2.1.0"],\ + ["cli-width", "npm:2.2.1"],\ + ["external-editor", "npm:3.1.0"],\ + ["figures", "npm:2.0.0"],\ + ["lodash", "npm:4.17.21"],\ + ["mute-stream", "npm:0.0.7"],\ + ["run-async", "npm:2.4.1"],\ + ["rxjs", "npm:6.6.7"],\ + ["string-width", "npm:2.1.1"],\ + ["strip-ansi", "npm:5.2.0"],\ + ["through", "npm:2.3.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["internal-slot", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/internal-slot-npm-1.0.7-6e3758af00-10c0.zip/node_modules/internal-slot/",\ + "packageDependencies": [\ + ["internal-slot", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["hasown", "npm:2.0.2"],\ + ["side-channel", "npm:1.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["interpret", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/interpret-npm-1.1.0-7858457ebb-10c0.zip/node_modules/interpret/",\ + "packageDependencies": [\ + ["interpret", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ip-address", [\ + ["npm:9.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ip-address-npm-9.0.5-9fa024d42a-10c0.zip/node_modules/ip-address/",\ + "packageDependencies": [\ + ["ip-address", "npm:9.0.5"],\ + ["jsbn", "npm:1.1.0"],\ + ["sprintf-js", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ipaddr.js", [\ + ["npm:1.9.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ipaddr.js-npm-1.9.1-19ae7878b4-10c0.zip/node_modules/ipaddr.js/",\ + "packageDependencies": [\ + ["ipaddr.js", "npm:1.9.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ipaddr.js-npm-2.2.0-e289422d83-10c0.zip/node_modules/ipaddr.js/",\ + "packageDependencies": [\ + ["ipaddr.js", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-absolute", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-absolute-npm-1.0.0-2525cf00c8-10c0.zip/node_modules/is-absolute/",\ + "packageDependencies": [\ + ["is-absolute", "npm:1.0.0"],\ + ["is-relative", "npm:1.0.0"],\ + ["is-windows", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-array-buffer", [\ + ["npm:3.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-array-buffer-npm-3.0.4-c1d4ec5b64-10c0.zip/node_modules/is-array-buffer/",\ + "packageDependencies": [\ + ["is-array-buffer", "npm:3.0.4"],\ + ["call-bind", "npm:1.0.7"],\ + ["get-intrinsic", "npm:1.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-bigint", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-bigint-npm-1.0.4-31c2eecbc9-10c0.zip/node_modules/is-bigint/",\ + "packageDependencies": [\ + ["is-bigint", "npm:1.0.4"],\ + ["has-bigints", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-binary-path", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-binary-path-npm-2.1.0-e61d46f557-10c0.zip/node_modules/is-binary-path/",\ + "packageDependencies": [\ + ["is-binary-path", "npm:2.1.0"],\ + ["binary-extensions", "npm:2.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-boolean-object", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-10c0.zip/node_modules/is-boolean-object/",\ + "packageDependencies": [\ + ["is-boolean-object", "npm:1.1.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-buffer", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-buffer-npm-2.0.5-17e563f277-10c0.zip/node_modules/is-buffer/",\ + "packageDependencies": [\ + ["is-buffer", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-callable", [\ + ["npm:1.2.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-callable-npm-1.2.7-808a303e61-10c0.zip/node_modules/is-callable/",\ + "packageDependencies": [\ + ["is-callable", "npm:1.2.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-core-module", [\ + ["npm:2.15.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-core-module-npm-2.15.0-c262aaf790-10c0.zip/node_modules/is-core-module/",\ + "packageDependencies": [\ + ["is-core-module", "npm:2.15.0"],\ + ["hasown", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-data-view", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-data-view-npm-1.0.1-d6136250e8-10c0.zip/node_modules/is-data-view/",\ + "packageDependencies": [\ + ["is-data-view", "npm:1.0.1"],\ + ["is-typed-array", "npm:1.1.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-date-object", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-date-object-npm-1.0.5-88f3d08b5e-10c0.zip/node_modules/is-date-object/",\ + "packageDependencies": [\ + ["is-date-object", "npm:1.0.5"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-docker", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-docker-npm-3.0.0-1570e32177-10c0.zip/node_modules/is-docker/",\ + "packageDependencies": [\ + ["is-docker", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-extglob", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-extglob-npm-2.1.1-0870ea68b5-10c0.zip/node_modules/is-extglob/",\ + "packageDependencies": [\ + ["is-extglob", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-fullwidth-code-point", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-fullwidth-code-point-npm-2.0.0-507f56ec71-10c0.zip/node_modules/is-fullwidth-code-point/",\ + "packageDependencies": [\ + ["is-fullwidth-code-point", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-10c0.zip/node_modules/is-fullwidth-code-point/",\ + "packageDependencies": [\ + ["is-fullwidth-code-point", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-glob", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-glob-npm-4.0.3-cb87bf1bdb-10c0.zip/node_modules/is-glob/",\ + "packageDependencies": [\ + ["is-glob", "npm:4.0.3"],\ + ["is-extglob", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-inside-container", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-inside-container-npm-1.0.0-f2c9e9bb96-10c0.zip/node_modules/is-inside-container/",\ + "packageDependencies": [\ + ["is-inside-container", "npm:1.0.0"],\ + ["is-docker", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-lambda", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-lambda-npm-1.0.1-7ab55bc8a8-10c0.zip/node_modules/is-lambda/",\ + "packageDependencies": [\ + ["is-lambda", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-negative-zero", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-negative-zero-npm-2.0.3-d06b09e322-10c0.zip/node_modules/is-negative-zero/",\ + "packageDependencies": [\ + ["is-negative-zero", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-network-error", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-network-error-npm-1.1.0-31c8d0998d-10c0.zip/node_modules/is-network-error/",\ + "packageDependencies": [\ + ["is-network-error", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-number", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-number-npm-7.0.0-060086935c-10c0.zip/node_modules/is-number/",\ + "packageDependencies": [\ + ["is-number", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-number-object", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-number-object-npm-1.0.7-539d0e274d-10c0.zip/node_modules/is-number-object/",\ + "packageDependencies": [\ + ["is-number-object", "npm:1.0.7"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-path-inside", [\ + ["npm:3.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-10c0.zip/node_modules/is-path-inside/",\ + "packageDependencies": [\ + ["is-path-inside", "npm:3.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-plain-obj", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-plain-obj-npm-3.0.0-a5ae411d5a-10c0.zip/node_modules/is-plain-obj/",\ + "packageDependencies": [\ + ["is-plain-obj", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-plain-object", [\ + ["npm:2.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-plain-object-npm-2.0.4-da3265d804-10c0.zip/node_modules/is-plain-object/",\ + "packageDependencies": [\ + ["is-plain-object", "npm:2.0.4"],\ + ["isobject", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-regex", [\ + ["npm:1.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-regex-npm-1.1.4-cca193ef11-10c0.zip/node_modules/is-regex/",\ + "packageDependencies": [\ + ["is-regex", "npm:1.1.4"],\ + ["call-bind", "npm:1.0.7"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-relative", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-relative-npm-1.0.0-af71733ca6-10c0.zip/node_modules/is-relative/",\ + "packageDependencies": [\ + ["is-relative", "npm:1.0.0"],\ + ["is-unc-path", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-shared-array-buffer", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-shared-array-buffer-npm-1.0.3-3b3b3142a6-10c0.zip/node_modules/is-shared-array-buffer/",\ + "packageDependencies": [\ + ["is-shared-array-buffer", "npm:1.0.3"],\ + ["call-bind", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-stream", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-stream-npm-2.0.1-c802db55e7-10c0.zip/node_modules/is-stream/",\ + "packageDependencies": [\ + ["is-stream", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-string", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-string-npm-1.0.7-9f7066daed-10c0.zip/node_modules/is-string/",\ + "packageDependencies": [\ + ["is-string", "npm:1.0.7"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-symbol", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-symbol-npm-1.0.4-eb9baac703-10c0.zip/node_modules/is-symbol/",\ + "packageDependencies": [\ + ["is-symbol", "npm:1.0.4"],\ + ["has-symbols", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-typed-array", [\ + ["npm:1.1.13", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-typed-array-npm-1.1.13-0dce6ee7c2-10c0.zip/node_modules/is-typed-array/",\ + "packageDependencies": [\ + ["is-typed-array", "npm:1.1.13"],\ + ["which-typed-array", "npm:1.1.15"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-unc-path", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-unc-path-npm-1.0.0-9cee24d85f-10c0.zip/node_modules/is-unc-path/",\ + "packageDependencies": [\ + ["is-unc-path", "npm:1.0.0"],\ + ["unc-path-regex", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-weakref", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-weakref-npm-1.0.2-ff80e8c314-10c0.zip/node_modules/is-weakref/",\ + "packageDependencies": [\ + ["is-weakref", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-windows", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-windows-npm-1.0.2-898cd6f3d7-10c0.zip/node_modules/is-windows/",\ + "packageDependencies": [\ + ["is-windows", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-wsl", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/is-wsl-npm-3.1.0-311c6d2265-10c0.zip/node_modules/is-wsl/",\ + "packageDependencies": [\ + ["is-wsl", "npm:3.1.0"],\ + ["is-inside-container", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isarray", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isarray-npm-1.0.0-db4f547720-10c0.zip/node_modules/isarray/",\ + "packageDependencies": [\ + ["isarray", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isarray-npm-2.0.5-4ba522212d-10c0.zip/node_modules/isarray/",\ + "packageDependencies": [\ + ["isarray", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isbinaryfile", [\ + ["npm:4.0.10", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isbinaryfile-npm-4.0.10-91d1251522-10c0.zip/node_modules/isbinaryfile/",\ + "packageDependencies": [\ + ["isbinaryfile", "npm:4.0.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isexe", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isexe-npm-3.1.1-9c0061eead-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["isobject", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/isobject-npm-3.0.1-8145901fd2-10c0.zip/node_modules/isobject/",\ + "packageDependencies": [\ + ["isobject", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["istanbul", [\ + ["https://github.com/kpdecker/istanbul.git#commit=dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/istanbul-https-c285cd231f-10c0.zip/node_modules/istanbul/",\ + "packageDependencies": [\ + ["istanbul", "https://github.com/kpdecker/istanbul.git#commit=dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22"],\ + ["abbrev", "npm:1.0.9"],\ + ["async", "npm:1.5.2"],\ + ["convert-source-map", "npm:1.9.0"],\ + ["escodegen", "npm:1.7.1"],\ + ["esprima", "npm:2.5.0"],\ + ["fileset", "npm:0.2.1"],\ + ["handlebars", "npm:4.7.8"],\ + ["js-yaml", "npm:3.14.1"],\ + ["mkdirp", "npm:0.5.6"],\ + ["nopt", "npm:3.0.6"],\ + ["once", "npm:1.4.0"],\ + ["resolve", "patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf"],\ + ["source-map", "npm:0.4.4"],\ + ["source-map-support", "npm:0.3.3"],\ + ["supports-color", "npm:3.2.3"],\ + ["which", "npm:1.3.1"],\ + ["wordwrap", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jackspeak", [\ + ["npm:3.4.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jackspeak-npm-3.4.3-546bfad080-10c0.zip/node_modules/jackspeak/",\ + "packageDependencies": [\ + ["jackspeak", "npm:3.4.3"],\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["@pkgjs/parseargs", "npm:0.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jest-worker", [\ + ["npm:27.5.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jest-worker-npm-27.5.1-1c110b5894-10c0.zip/node_modules/jest-worker/",\ + "packageDependencies": [\ + ["jest-worker", "npm:27.5.1"],\ + ["@types/node", "npm:22.1.0"],\ + ["merge-stream", "npm:2.0.0"],\ + ["supports-color", "npm:8.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["js-tokens", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/js-tokens-npm-4.0.0-0ac852e9e2-10c0.zip/node_modules/js-tokens/",\ + "packageDependencies": [\ + ["js-tokens", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["js-yaml", [\ + ["npm:3.13.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/js-yaml-npm-3.13.1-3a28ff3b75-10c0.zip/node_modules/js-yaml/",\ + "packageDependencies": [\ + ["js-yaml", "npm:3.13.1"],\ + ["argparse", "npm:1.0.10"],\ + ["esprima", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.14.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/js-yaml-npm-3.14.1-b968c6095e-10c0.zip/node_modules/js-yaml/",\ + "packageDependencies": [\ + ["js-yaml", "npm:3.14.1"],\ + ["argparse", "npm:1.0.10"],\ + ["esprima", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/js-yaml-npm-4.1.0-3606f32312-10c0.zip/node_modules/js-yaml/",\ + "packageDependencies": [\ + ["js-yaml", "npm:4.1.0"],\ + ["argparse", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jsbn", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jsbn-npm-1.1.0-1da0181838-10c0.zip/node_modules/jsbn/",\ + "packageDependencies": [\ + ["jsbn", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jsesc", [\ + ["npm:0.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jsesc-npm-0.5.0-6827074492-10c0.zip/node_modules/jsesc/",\ + "packageDependencies": [\ + ["jsesc", "npm:0.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jsesc-npm-2.5.2-c5acb78804-10c0.zip/node_modules/jsesc/",\ + "packageDependencies": [\ + ["jsesc", "npm:2.5.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-buffer", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json-buffer-npm-3.0.1-f8f6d20603-10c0.zip/node_modules/json-buffer/",\ + "packageDependencies": [\ + ["json-buffer", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-parse-even-better-errors", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-10c0.zip/node_modules/json-parse-even-better-errors/",\ + "packageDependencies": [\ + ["json-parse-even-better-errors", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-schema-traverse", [\ + ["npm:0.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json-schema-traverse-npm-0.4.1-4759091693-10c0.zip/node_modules/json-schema-traverse/",\ + "packageDependencies": [\ + ["json-schema-traverse", "npm:0.4.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-10c0.zip/node_modules/json-schema-traverse/",\ + "packageDependencies": [\ + ["json-schema-traverse", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json-stable-stringify-without-jsonify", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-10c0.zip/node_modules/json-stable-stringify-without-jsonify/",\ + "packageDependencies": [\ + ["json-stable-stringify-without-jsonify", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["json5", [\ + ["npm:2.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/json5-npm-2.2.3-9962c55073-10c0.zip/node_modules/json5/",\ + "packageDependencies": [\ + ["json5", "npm:2.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jsonfile", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/jsonfile-npm-4.0.0-10ce3aea15-10c0.zip/node_modules/jsonfile/",\ + "packageDependencies": [\ + ["jsonfile", "npm:4.0.0"],\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma", [\ + ["npm:6.4.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-npm-6.4.4-d2157b2fad-10c0.zip/node_modules/karma/",\ + "packageDependencies": [\ + ["karma", "npm:6.4.4"],\ + ["@colors/colors", "npm:1.5.0"],\ + ["body-parser", "npm:1.20.2"],\ + ["braces", "npm:3.0.3"],\ + ["chokidar", "npm:3.6.0"],\ + ["connect", "npm:3.7.0"],\ + ["di", "npm:0.0.1"],\ + ["dom-serialize", "npm:2.2.1"],\ + ["glob", "npm:7.2.3"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["http-proxy", "npm:1.18.1"],\ + ["isbinaryfile", "npm:4.0.10"],\ + ["lodash", "npm:4.17.21"],\ + ["log4js", "npm:6.9.1"],\ + ["mime", "npm:2.6.0"],\ + ["minimatch", "npm:3.1.2"],\ + ["mkdirp", "npm:0.5.6"],\ + ["qjobs", "npm:1.2.0"],\ + ["range-parser", "npm:1.2.1"],\ + ["rimraf", "npm:3.0.2"],\ + ["socket.io", "npm:4.7.5"],\ + ["source-map", "npm:0.6.1"],\ + ["tmp", "npm:0.2.3"],\ + ["ua-parser-js", "npm:0.7.38"],\ + ["yargs", "npm:16.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma-chrome-launcher", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-chrome-launcher-npm-3.2.0-0c19d5f622-10c0.zip/node_modules/karma-chrome-launcher/",\ + "packageDependencies": [\ + ["karma-chrome-launcher", "npm:3.2.0"],\ + ["which", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma-mocha", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-mocha-npm-2.0.1-b8979157d3-10c0.zip/node_modules/karma-mocha/",\ + "packageDependencies": [\ + ["karma-mocha", "npm:2.0.1"],\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma-mocha-reporter", [\ + ["npm:2.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-mocha-reporter-npm-2.2.5-4329166101-10c0.zip/node_modules/karma-mocha-reporter/",\ + "packageDependencies": [\ + ["karma-mocha-reporter", "npm:2.2.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.2.5", {\ + "packageLocation": "./.yarn/__virtual__/karma-mocha-reporter-virtual-9277c610f7/7/.yarn/berry/cache/karma-mocha-reporter-npm-2.2.5-4329166101-10c0.zip/node_modules/karma-mocha-reporter/",\ + "packageDependencies": [\ + ["karma-mocha-reporter", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:2.2.5"],\ + ["@types/karma", null],\ + ["chalk", "npm:2.4.2"],\ + ["karma", "npm:6.4.4"],\ + ["log-symbols", "npm:2.2.0"],\ + ["strip-ansi", "npm:4.0.0"]\ + ],\ + "packagePeers": [\ + "@types/karma",\ + "karma"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma-sourcemap-loader", [\ + ["npm:0.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-sourcemap-loader-npm-0.4.0-a431dc0fe6-10c0.zip/node_modules/karma-sourcemap-loader/",\ + "packageDependencies": [\ + ["karma-sourcemap-loader", "npm:0.4.0"],\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["karma-webpack", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/karma-webpack-npm-5.0.1-3dcbc574dd-10c0.zip/node_modules/karma-webpack/",\ + "packageDependencies": [\ + ["karma-webpack", "npm:5.0.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.1", {\ + "packageLocation": "./.yarn/__virtual__/karma-webpack-virtual-8696c446c0/7/.yarn/berry/cache/karma-webpack-npm-5.0.1-3dcbc574dd-10c0.zip/node_modules/karma-webpack/",\ + "packageDependencies": [\ + ["karma-webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.1"],\ + ["@types/webpack", null],\ + ["glob", "npm:7.2.3"],\ + ["minimatch", "npm:9.0.5"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"],\ + ["webpack-merge", "npm:4.2.2"]\ + ],\ + "packagePeers": [\ + "@types/webpack",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["keyv", [\ + ["npm:4.5.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/keyv-npm-4.5.4-4c8e2cf7f7-10c0.zip/node_modules/keyv/",\ + "packageDependencies": [\ + ["keyv", "npm:4.5.4"],\ + ["json-buffer", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["kind-of", [\ + ["npm:6.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/kind-of-npm-6.0.3-ab15f36220-10c0.zip/node_modules/kind-of/",\ + "packageDependencies": [\ + ["kind-of", "npm:6.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["launch-editor", [\ + ["npm:2.8.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/launch-editor-npm-2.8.1-6d18da04cb-10c0.zip/node_modules/launch-editor/",\ + "packageDependencies": [\ + ["launch-editor", "npm:2.8.1"],\ + ["picocolors", "npm:1.0.1"],\ + ["shell-quote", "npm:1.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["levn", [\ + ["npm:0.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/levn-npm-0.2.5-6a65c3dd64-10c0.zip/node_modules/levn/",\ + "packageDependencies": [\ + ["levn", "npm:0.2.5"],\ + ["prelude-ls", "npm:1.1.2"],\ + ["type-check", "npm:0.3.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/levn-npm-0.3.0-48d774b1c2-10c0.zip/node_modules/levn/",\ + "packageDependencies": [\ + ["levn", "npm:0.3.0"],\ + ["prelude-ls", "npm:1.1.2"],\ + ["type-check", "npm:0.3.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/levn-npm-0.4.1-d183b2d7bb-10c0.zip/node_modules/levn/",\ + "packageDependencies": [\ + ["levn", "npm:0.4.1"],\ + ["prelude-ls", "npm:1.2.1"],\ + ["type-check", "npm:0.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["liftup", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/liftup-npm-3.0.1-de1713e084-10c0.zip/node_modules/liftup/",\ + "packageDependencies": [\ + ["liftup", "npm:3.0.1"],\ + ["extend", "npm:3.0.2"],\ + ["findup-sync", "npm:4.0.0"],\ + ["fined", "npm:1.2.0"],\ + ["flagged-respawn", "npm:1.0.1"],\ + ["is-plain-object", "npm:2.0.4"],\ + ["object.map", "npm:1.0.1"],\ + ["rechoir", "npm:0.7.1"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["livereload-js", [\ + ["npm:2.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/livereload-js-npm-2.4.0-329cd2e58c-10c0.zip/node_modules/livereload-js/",\ + "packageDependencies": [\ + ["livereload-js", "npm:2.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["loader-runner", [\ + ["npm:4.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/loader-runner-npm-4.3.0-9ca67df372-10c0.zip/node_modules/loader-runner/",\ + "packageDependencies": [\ + ["loader-runner", "npm:4.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["locate-path", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/locate-path-npm-3.0.0-991671ae9f-10c0.zip/node_modules/locate-path/",\ + "packageDependencies": [\ + ["locate-path", "npm:3.0.0"],\ + ["p-locate", "npm:3.0.0"],\ + ["path-exists", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/locate-path-npm-6.0.0-06a1e4c528-10c0.zip/node_modules/locate-path/",\ + "packageDependencies": [\ + ["locate-path", "npm:6.0.0"],\ + ["p-locate", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/locate-path-npm-7.2.0-0e1169e19b-10c0.zip/node_modules/locate-path/",\ + "packageDependencies": [\ + ["locate-path", "npm:7.2.0"],\ + ["p-locate", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash", [\ + ["npm:4.17.21", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lodash-npm-4.17.21-6382451519-10c0.zip/node_modules/lodash/",\ + "packageDependencies": [\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.debounce", [\ + ["npm:4.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lodash.debounce-npm-4.0.8-f1d6e09799-10c0.zip/node_modules/lodash.debounce/",\ + "packageDependencies": [\ + ["lodash.debounce", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.isplainobject", [\ + ["npm:4.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lodash.isplainobject-npm-4.0.6-d73937742f-10c0.zip/node_modules/lodash.isplainobject/",\ + "packageDependencies": [\ + ["lodash.isplainobject", "npm:4.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lodash.merge", [\ + ["npm:4.6.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lodash.merge-npm-4.6.2-77cb4416bf-10c0.zip/node_modules/lodash.merge/",\ + "packageDependencies": [\ + ["lodash.merge", "npm:4.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["log-symbols", [\ + ["npm:2.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/log-symbols-npm-2.2.0-9541ad4da6-10c0.zip/node_modules/log-symbols/",\ + "packageDependencies": [\ + ["log-symbols", "npm:2.2.0"],\ + ["chalk", "npm:2.4.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/log-symbols-npm-3.0.0-b9d1446657-10c0.zip/node_modules/log-symbols/",\ + "packageDependencies": [\ + ["log-symbols", "npm:3.0.0"],\ + ["chalk", "npm:2.4.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["log4js", [\ + ["npm:6.9.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/log4js-npm-6.9.1-b621c90f9f-10c0.zip/node_modules/log4js/",\ + "packageDependencies": [\ + ["log4js", "npm:6.9.1"],\ + ["date-format", "npm:4.0.14"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["flatted", "npm:3.3.1"],\ + ["rfdc", "npm:1.4.1"],\ + ["streamroller", "npm:3.1.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["loupe", [\ + ["npm:2.3.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/loupe-npm-2.3.7-f294c2ef33-10c0.zip/node_modules/loupe/",\ + "packageDependencies": [\ + ["loupe", "npm:2.3.7"],\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["lru-cache", [\ + ["npm:10.4.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lru-cache-npm-10.4.3-30c10b861a-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:10.4.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/lru-cache-npm-5.1.1-f475882a51-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:5.1.1"],\ + ["yallist", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-dir", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/make-dir-npm-2.1.0-1ddaf205e7-10c0.zip/node_modules/make-dir/",\ + "packageDependencies": [\ + ["make-dir", "npm:2.1.0"],\ + ["pify", "npm:4.0.1"],\ + ["semver", "npm:5.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-fetch-happen", [\ + ["npm:13.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/make-fetch-happen-npm-13.0.1-4180f2aaa8-10c0.zip/node_modules/make-fetch-happen/",\ + "packageDependencies": [\ + ["make-fetch-happen", "npm:13.0.1"],\ + ["@npmcli/agent", "npm:2.2.2"],\ + ["cacache", "npm:18.0.4"],\ + ["http-cache-semantics", "npm:4.1.1"],\ + ["is-lambda", "npm:1.0.1"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-fetch", "npm:3.0.5"],\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["negotiator", "npm:0.6.3"],\ + ["proc-log", "npm:4.2.0"],\ + ["promise-retry", "npm:2.0.1"],\ + ["ssri", "npm:10.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["make-iterator", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/make-iterator-npm-1.0.1-3f3e0a179c-10c0.zip/node_modules/make-iterator/",\ + "packageDependencies": [\ + ["make-iterator", "npm:1.0.1"],\ + ["kind-of", "npm:6.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["map-cache", [\ + ["npm:0.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/map-cache-npm-0.2.2-1620199b05-10c0.zip/node_modules/map-cache/",\ + "packageDependencies": [\ + ["map-cache", "npm:0.2.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["maxmin", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/maxmin-npm-3.0.0-030bab8f18-10c0.zip/node_modules/maxmin/",\ + "packageDependencies": [\ + ["maxmin", "npm:3.0.0"],\ + ["chalk", "npm:4.1.2"],\ + ["figures", "npm:3.2.0"],\ + ["gzip-size", "npm:5.1.1"],\ + ["pretty-bytes", "npm:5.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["media-typer", [\ + ["npm:0.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/media-typer-npm-0.3.0-8674f8f0f5-10c0.zip/node_modules/media-typer/",\ + "packageDependencies": [\ + ["media-typer", "npm:0.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["memfs", [\ + ["npm:4.11.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/memfs-npm-4.11.1-e55ec5b708-10c0.zip/node_modules/memfs/",\ + "packageDependencies": [\ + ["memfs", "npm:4.11.1"],\ + ["@jsonjoy.com/json-pack", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.4"],\ + ["@jsonjoy.com/util", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.3.0"],\ + ["tree-dump", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.2"],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["merge-descriptors", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/merge-descriptors-npm-1.0.1-615287aaa8-10c0.zip/node_modules/merge-descriptors/",\ + "packageDependencies": [\ + ["merge-descriptors", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["merge-stream", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/merge-stream-npm-2.0.0-2ac83efea5-10c0.zip/node_modules/merge-stream/",\ + "packageDependencies": [\ + ["merge-stream", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["methods", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/methods-npm-1.1.2-92f6fdb39b-10c0.zip/node_modules/methods/",\ + "packageDependencies": [\ + ["methods", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["micromatch", [\ + ["npm:4.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/micromatch-npm-4.0.7-28fb7387ee-10c0.zip/node_modules/micromatch/",\ + "packageDependencies": [\ + ["micromatch", "npm:4.0.7"],\ + ["braces", "npm:3.0.3"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mime", [\ + ["npm:1.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mime-npm-1.6.0-60ae95038a-10c0.zip/node_modules/mime/",\ + "packageDependencies": [\ + ["mime", "npm:1.6.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mime-npm-2.6.0-88b89d8de0-10c0.zip/node_modules/mime/",\ + "packageDependencies": [\ + ["mime", "npm:2.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mime-db", [\ + ["npm:1.52.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mime-db-npm-1.52.0-b5371d6fd2-10c0.zip/node_modules/mime-db/",\ + "packageDependencies": [\ + ["mime-db", "npm:1.52.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.53.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mime-db-npm-1.53.0-14fcdba2be-10c0.zip/node_modules/mime-db/",\ + "packageDependencies": [\ + ["mime-db", "npm:1.53.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mime-types", [\ + ["npm:2.1.35", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mime-types-npm-2.1.35-dd9ea9f3e2-10c0.zip/node_modules/mime-types/",\ + "packageDependencies": [\ + ["mime-types", "npm:2.1.35"],\ + ["mime-db", "npm:1.52.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mimic-fn", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mimic-fn-npm-1.2.0-960bf15ab7-10c0.zip/node_modules/mimic-fn/",\ + "packageDependencies": [\ + ["mimic-fn", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-10c0.zip/node_modules/mimic-fn/",\ + "packageDependencies": [\ + ["mimic-fn", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimalistic-assert", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimalistic-assert-npm-1.0.1-dc8bb23d29-10c0.zip/node_modules/minimalistic-assert/",\ + "packageDependencies": [\ + ["minimalistic-assert", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimatch", [\ + ["npm:2.0.10", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimatch-npm-2.0.10-0076291b91-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:2.0.10"],\ + ["brace-expansion", "npm:1.1.11"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimatch-npm-3.0.4-6e76f51c23-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:3.0.4"],\ + ["brace-expansion", "npm:1.1.11"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimatch-npm-3.0.8-f3deb724b2-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:3.0.8"],\ + ["brace-expansion", "npm:1.1.11"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimatch-npm-3.1.2-9405269906-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:3.1.2"],\ + ["brace-expansion", "npm:1.1.11"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:9.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimatch-npm-9.0.5-9aa93d97fa-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:9.0.5"],\ + ["brace-expansion", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minimist", [\ + ["npm:1.2.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minimist-npm-1.2.8-d7af7b1dce-10c0.zip/node_modules/minimist/",\ + "packageDependencies": [\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass", [\ + ["npm:3.3.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-npm-3.3.6-b8d93a945b-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:3.3.6"],\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-npm-5.0.0-c64fb63c92-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-npm-7.1.2-3a5327d36d-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-collect", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-collect-npm-2.0.1-73d3907e40-10c0.zip/node_modules/minipass-collect/",\ + "packageDependencies": [\ + ["minipass-collect", "npm:2.0.1"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-fetch", [\ + ["npm:3.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-fetch-npm-3.0.5-ed78529694-10c0.zip/node_modules/minipass-fetch/",\ + "packageDependencies": [\ + ["minipass-fetch", "npm:3.0.5"],\ + ["encoding", "npm:0.1.13"],\ + ["minipass", "npm:7.1.2"],\ + ["minipass-sized", "npm:1.0.3"],\ + ["minizlib", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-flush", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-flush-npm-1.0.5-efe79d9826-10c0.zip/node_modules/minipass-flush/",\ + "packageDependencies": [\ + ["minipass-flush", "npm:1.0.5"],\ + ["minipass", "npm:3.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-pipeline", [\ + ["npm:1.2.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-pipeline-npm-1.2.4-5924cb077f-10c0.zip/node_modules/minipass-pipeline/",\ + "packageDependencies": [\ + ["minipass-pipeline", "npm:1.2.4"],\ + ["minipass", "npm:3.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minipass-sized", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minipass-sized-npm-1.0.3-306d86f432-10c0.zip/node_modules/minipass-sized/",\ + "packageDependencies": [\ + ["minipass-sized", "npm:1.0.3"],\ + ["minipass", "npm:3.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["minizlib", [\ + ["npm:2.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-10c0.zip/node_modules/minizlib/",\ + "packageDependencies": [\ + ["minizlib", "npm:2.1.2"],\ + ["minipass", "npm:3.3.6"],\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mkdirp", [\ + ["npm:0.5.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mkdirp-npm-0.5.5-6bc76534fc-10c0.zip/node_modules/mkdirp/",\ + "packageDependencies": [\ + ["mkdirp", "npm:0.5.5"],\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.5.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mkdirp-npm-0.5.6-dcd5a6b97b-10c0.zip/node_modules/mkdirp/",\ + "packageDependencies": [\ + ["mkdirp", "npm:0.5.6"],\ + ["minimist", "npm:1.2.8"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-10c0.zip/node_modules/mkdirp/",\ + "packageDependencies": [\ + ["mkdirp", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mocha", [\ + ["npm:7.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mocha-npm-7.2.0-612e500d6d-10c0.zip/node_modules/mocha/",\ + "packageDependencies": [\ + ["mocha", "npm:7.2.0"],\ + ["ansi-colors", "npm:3.2.3"],\ + ["browser-stdout", "npm:1.3.1"],\ + ["chokidar", "npm:3.3.0"],\ + ["debug", "virtual:612e500d6d9d9c332d8475cbf619d8fa9fe7de63ec445b4de39cc68ccfbc77429a4327f46d9b5572a19ca0de9f285af134301bc8843c271b7712b6d1256451cc#npm:3.2.6"],\ + ["diff", "npm:3.5.0"],\ + ["escape-string-regexp", "npm:1.0.5"],\ + ["find-up", "npm:3.0.0"],\ + ["glob", "npm:7.1.3"],\ + ["growl", "npm:1.10.5"],\ + ["he", "npm:1.2.0"],\ + ["js-yaml", "npm:3.13.1"],\ + ["log-symbols", "npm:3.0.0"],\ + ["minimatch", "npm:3.0.4"],\ + ["mkdirp", "npm:0.5.5"],\ + ["ms", "npm:2.1.1"],\ + ["node-environment-flags", "npm:1.0.6"],\ + ["object.assign", "npm:4.1.0"],\ + ["strip-json-comments", "npm:2.0.1"],\ + ["supports-color", "npm:6.0.0"],\ + ["which", "npm:1.3.1"],\ + ["wide-align", "npm:1.1.3"],\ + ["yargs", "npm:13.3.2"],\ + ["yargs-parser", "npm:13.1.2"],\ + ["yargs-unparser", "npm:1.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ms", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ms-npm-2.0.0-9e1101a471-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ms-npm-2.1.1-5b4fd72c86-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ms-npm-2.1.2-ec0c1512ff-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ms-npm-2.1.3-81ff3cfac1-10c0.zip/node_modules/ms/",\ + "packageDependencies": [\ + ["ms", "npm:2.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["multicast-dns", [\ + ["npm:7.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/multicast-dns-npm-7.2.5-e1c9c3ec64-10c0.zip/node_modules/multicast-dns/",\ + "packageDependencies": [\ + ["multicast-dns", "npm:7.2.5"],\ + ["dns-packet", "npm:5.6.1"],\ + ["thunky", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["mute-stream", [\ + ["npm:0.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/mute-stream-npm-0.0.7-22b59a65dd-10c0.zip/node_modules/mute-stream/",\ + "packageDependencies": [\ + ["mute-stream", "npm:0.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["natural-compare", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/natural-compare-npm-1.4.0-97b75b362d-10c0.zip/node_modules/natural-compare/",\ + "packageDependencies": [\ + ["natural-compare", "npm:1.4.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["negotiator", [\ + ["npm:0.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/negotiator-npm-0.6.3-9d50e36171-10c0.zip/node_modules/negotiator/",\ + "packageDependencies": [\ + ["negotiator", "npm:0.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["neo-async", [\ + ["npm:2.6.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/neo-async-npm-2.6.2-75d6902586-10c0.zip/node_modules/neo-async/",\ + "packageDependencies": [\ + ["neo-async", "npm:2.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["nice-try", [\ + ["npm:1.0.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/nice-try-npm-1.0.5-963856b16f-10c0.zip/node_modules/nice-try/",\ + "packageDependencies": [\ + ["nice-try", "npm:1.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-environment-flags", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/node-environment-flags-npm-1.0.6-019b553a56-10c0.zip/node_modules/node-environment-flags/",\ + "packageDependencies": [\ + ["node-environment-flags", "npm:1.0.6"],\ + ["object.getownpropertydescriptors", "npm:2.1.8"],\ + ["semver", "npm:5.7.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-forge", [\ + ["npm:1.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/node-forge-npm-1.3.1-f31fd566cc-10c0.zip/node_modules/node-forge/",\ + "packageDependencies": [\ + ["node-forge", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-gyp", [\ + ["npm:10.2.0", {\ + "packageLocation": "./.yarn/unplugged/node-gyp-npm-10.2.0-cad1109948/node_modules/node-gyp/",\ + "packageDependencies": [\ + ["node-gyp", "npm:10.2.0"],\ + ["env-paths", "npm:2.2.1"],\ + ["exponential-backoff", "npm:3.1.1"],\ + ["glob", "npm:10.4.5"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["make-fetch-happen", "npm:13.0.1"],\ + ["nopt", "npm:7.2.1"],\ + ["proc-log", "npm:4.2.0"],\ + ["semver", "npm:7.6.3"],\ + ["tar", "npm:6.2.1"],\ + ["which", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["node-releases", [\ + ["npm:2.0.18", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/node-releases-npm-2.0.18-51abc46668-10c0.zip/node_modules/node-releases/",\ + "packageDependencies": [\ + ["node-releases", "npm:2.0.18"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["nopt", [\ + ["npm:3.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/nopt-npm-3.0.6-370ee63cf6-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["nopt", "npm:3.0.6"],\ + ["abbrev", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/nopt-npm-4.0.3-b35e68a869-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["nopt", "npm:4.0.3"],\ + ["abbrev", "npm:1.1.1"],\ + ["osenv", "npm:0.1.5"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/nopt-npm-5.0.0-304b40fbfe-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["nopt", "npm:5.0.0"],\ + ["abbrev", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/nopt-npm-7.2.1-635b7da949-10c0.zip/node_modules/nopt/",\ + "packageDependencies": [\ + ["nopt", "npm:7.2.1"],\ + ["abbrev", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["normalize-path", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/normalize-path-npm-3.0.0-658ba7d77f-10c0.zip/node_modules/normalize-path/",\ + "packageDependencies": [\ + ["normalize-path", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["npm-run-path", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/npm-run-path-npm-4.0.1-7aebd8bab3-10c0.zip/node_modules/npm-run-path/",\ + "packageDependencies": [\ + ["npm-run-path", "npm:4.0.1"],\ + ["path-key", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object-assign", [\ + ["npm:4.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object-assign-npm-4.1.1-1004ad6dec-10c0.zip/node_modules/object-assign/",\ + "packageDependencies": [\ + ["object-assign", "npm:4.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object-inspect", [\ + ["npm:1.13.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object-inspect-npm-1.13.2-3c6e11a536-10c0.zip/node_modules/object-inspect/",\ + "packageDependencies": [\ + ["object-inspect", "npm:1.13.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object-keys", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object-keys-npm-1.1.1-1bf2f1be93-10c0.zip/node_modules/object-keys/",\ + "packageDependencies": [\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.assign", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.assign-npm-4.1.0-2a284b2bf7-10c0.zip/node_modules/object.assign/",\ + "packageDependencies": [\ + ["object.assign", "npm:4.1.0"],\ + ["define-properties", "npm:1.2.1"],\ + ["function-bind", "npm:1.1.2"],\ + ["has-symbols", "npm:1.0.3"],\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.assign-npm-4.1.5-aa3b2260ba-10c0.zip/node_modules/object.assign/",\ + "packageDependencies": [\ + ["object.assign", "npm:4.1.5"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["has-symbols", "npm:1.0.3"],\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.defaults", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.defaults-npm-1.1.0-cbadc8c2f0-10c0.zip/node_modules/object.defaults/",\ + "packageDependencies": [\ + ["object.defaults", "npm:1.1.0"],\ + ["array-each", "npm:1.0.1"],\ + ["array-slice", "npm:1.1.0"],\ + ["for-own", "npm:1.0.0"],\ + ["isobject", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.getownpropertydescriptors", [\ + ["npm:2.1.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.getownpropertydescriptors-npm-2.1.8-f52ebbf149-10c0.zip/node_modules/object.getownpropertydescriptors/",\ + "packageDependencies": [\ + ["object.getownpropertydescriptors", "npm:2.1.8"],\ + ["array.prototype.reduce", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.23.3"],\ + ["es-object-atoms", "npm:1.0.0"],\ + ["gopd", "npm:1.0.1"],\ + ["safe-array-concat", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.map", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.map-npm-1.0.1-7e842789dd-10c0.zip/node_modules/object.map/",\ + "packageDependencies": [\ + ["object.map", "npm:1.0.1"],\ + ["for-own", "npm:1.0.0"],\ + ["make-iterator", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.pick", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/object.pick-npm-1.3.0-dad8eae8fb-10c0.zip/node_modules/object.pick/",\ + "packageDependencies": [\ + ["object.pick", "npm:1.3.0"],\ + ["isobject", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["obuf", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/obuf-npm-1.1.2-8db5fae8dd-10c0.zip/node_modules/obuf/",\ + "packageDependencies": [\ + ["obuf", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["on-finished", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/on-finished-npm-2.3.0-4ce92f72c6-10c0.zip/node_modules/on-finished/",\ + "packageDependencies": [\ + ["on-finished", "npm:2.3.0"],\ + ["ee-first", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/on-finished-npm-2.4.1-907af70f88-10c0.zip/node_modules/on-finished/",\ + "packageDependencies": [\ + ["on-finished", "npm:2.4.1"],\ + ["ee-first", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["on-headers", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/on-headers-npm-1.0.2-e7cd3ea25e-10c0.zip/node_modules/on-headers/",\ + "packageDependencies": [\ + ["on-headers", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["once", [\ + ["npm:1.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/once-npm-1.4.0-ccf03ef07a-10c0.zip/node_modules/once/",\ + "packageDependencies": [\ + ["once", "npm:1.4.0"],\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["onetime", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/onetime-npm-2.0.1-6c39ecc911-10c0.zip/node_modules/onetime/",\ + "packageDependencies": [\ + ["onetime", "npm:2.0.1"],\ + ["mimic-fn", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/onetime-npm-5.1.2-3ed148fa42-10c0.zip/node_modules/onetime/",\ + "packageDependencies": [\ + ["onetime", "npm:5.1.2"],\ + ["mimic-fn", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["open", [\ + ["npm:10.1.0", {\ + "packageLocation": "./.yarn/unplugged/open-npm-10.1.0-612222a007/node_modules/open/",\ + "packageDependencies": [\ + ["open", "npm:10.1.0"],\ + ["default-browser", "npm:5.2.1"],\ + ["define-lazy-prop", "npm:3.0.0"],\ + ["is-inside-container", "npm:1.0.0"],\ + ["is-wsl", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["optionator", [\ + ["npm:0.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/optionator-npm-0.5.0-3170581764-10c0.zip/node_modules/optionator/",\ + "packageDependencies": [\ + ["optionator", "npm:0.5.0"],\ + ["deep-is", "npm:0.1.4"],\ + ["fast-levenshtein", "npm:1.0.7"],\ + ["levn", "npm:0.2.5"],\ + ["prelude-ls", "npm:1.1.2"],\ + ["type-check", "npm:0.3.2"],\ + ["wordwrap", "npm:0.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/optionator-npm-0.8.3-bc555bc5b7-10c0.zip/node_modules/optionator/",\ + "packageDependencies": [\ + ["optionator", "npm:0.8.3"],\ + ["deep-is", "npm:0.1.4"],\ + ["fast-levenshtein", "npm:2.0.6"],\ + ["levn", "npm:0.3.0"],\ + ["prelude-ls", "npm:1.1.2"],\ + ["type-check", "npm:0.3.2"],\ + ["word-wrap", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.9.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/optionator-npm-0.9.4-1f114b00e8-10c0.zip/node_modules/optionator/",\ + "packageDependencies": [\ + ["optionator", "npm:0.9.4"],\ + ["deep-is", "npm:0.1.4"],\ + ["fast-levenshtein", "npm:2.0.6"],\ + ["levn", "npm:0.4.1"],\ + ["prelude-ls", "npm:1.2.1"],\ + ["type-check", "npm:0.4.0"],\ + ["word-wrap", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["os-homedir", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/os-homedir-npm-1.0.2-01f82faa88-10c0.zip/node_modules/os-homedir/",\ + "packageDependencies": [\ + ["os-homedir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["os-tmpdir", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/os-tmpdir-npm-1.0.2-e305b0689b-10c0.zip/node_modules/os-tmpdir/",\ + "packageDependencies": [\ + ["os-tmpdir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["osenv", [\ + ["npm:0.1.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/osenv-npm-0.1.5-435137eb60-10c0.zip/node_modules/osenv/",\ + "packageDependencies": [\ + ["osenv", "npm:0.1.5"],\ + ["os-homedir", "npm:1.0.2"],\ + ["os-tmpdir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-limit", [\ + ["npm:2.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-limit-npm-2.3.0-94a0310039-10c0.zip/node_modules/p-limit/",\ + "packageDependencies": [\ + ["p-limit", "npm:2.3.0"],\ + ["p-try", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-limit-npm-3.1.0-05d2ede37f-10c0.zip/node_modules/p-limit/",\ + "packageDependencies": [\ + ["p-limit", "npm:3.1.0"],\ + ["yocto-queue", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-limit-npm-4.0.0-5dccf29b67-10c0.zip/node_modules/p-limit/",\ + "packageDependencies": [\ + ["p-limit", "npm:4.0.0"],\ + ["yocto-queue", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-locate", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-locate-npm-3.0.0-74de74f952-10c0.zip/node_modules/p-locate/",\ + "packageDependencies": [\ + ["p-locate", "npm:3.0.0"],\ + ["p-limit", "npm:2.3.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-locate-npm-5.0.0-92cc7c7a3e-10c0.zip/node_modules/p-locate/",\ + "packageDependencies": [\ + ["p-locate", "npm:5.0.0"],\ + ["p-limit", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-locate-npm-6.0.0-b6cfb720dc-10c0.zip/node_modules/p-locate/",\ + "packageDependencies": [\ + ["p-locate", "npm:6.0.0"],\ + ["p-limit", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-map", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-map-npm-4.0.0-4677ae07c7-10c0.zip/node_modules/p-map/",\ + "packageDependencies": [\ + ["p-map", "npm:4.0.0"],\ + ["aggregate-error", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-retry", [\ + ["npm:6.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-retry-npm-6.2.0-00c071e02c-10c0.zip/node_modules/p-retry/",\ + "packageDependencies": [\ + ["p-retry", "npm:6.2.0"],\ + ["@types/retry", "npm:0.12.2"],\ + ["is-network-error", "npm:1.1.0"],\ + ["retry", "npm:0.13.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["p-try", [\ + ["npm:2.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/p-try-npm-2.2.0-e0390dbaf8-10c0.zip/node_modules/p-try/",\ + "packageDependencies": [\ + ["p-try", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["package-json-from-dist", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/package-json-from-dist-npm-1.0.0-961f0fcb3b-10c0.zip/node_modules/package-json-from-dist/",\ + "packageDependencies": [\ + ["package-json-from-dist", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parent-module", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/parent-module-npm-1.0.1-1fae11b095-10c0.zip/node_modules/parent-module/",\ + "packageDependencies": [\ + ["parent-module", "npm:1.0.1"],\ + ["callsites", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parse-filepath", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/parse-filepath-npm-1.0.2-7e399b862a-10c0.zip/node_modules/parse-filepath/",\ + "packageDependencies": [\ + ["parse-filepath", "npm:1.0.2"],\ + ["is-absolute", "npm:1.0.0"],\ + ["map-cache", "npm:0.2.2"],\ + ["path-root", "npm:0.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parse-passwd", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/parse-passwd-npm-1.0.0-ace6effa1d-10c0.zip/node_modules/parse-passwd/",\ + "packageDependencies": [\ + ["parse-passwd", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["parseurl", [\ + ["npm:1.3.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/parseurl-npm-1.3.3-1542397e00-10c0.zip/node_modules/parseurl/",\ + "packageDependencies": [\ + ["parseurl", "npm:1.3.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-exists", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-exists-npm-3.0.0-e80371aa68-10c0.zip/node_modules/path-exists/",\ + "packageDependencies": [\ + ["path-exists", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-exists-npm-4.0.0-e9e4f63eb0-10c0.zip/node_modules/path-exists/",\ + "packageDependencies": [\ + ["path-exists", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-exists-npm-5.0.0-0bf403c56c-10c0.zip/node_modules/path-exists/",\ + "packageDependencies": [\ + ["path-exists", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-is-absolute", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-is-absolute-npm-1.0.1-31bc695ffd-10c0.zip/node_modules/path-is-absolute/",\ + "packageDependencies": [\ + ["path-is-absolute", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-is-inside", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-is-inside-npm-1.0.2-7dd0711668-10c0.zip/node_modules/path-is-inside/",\ + "packageDependencies": [\ + ["path-is-inside", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-key", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-key-npm-2.0.1-b1a971833d-10c0.zip/node_modules/path-key/",\ + "packageDependencies": [\ + ["path-key", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-key-npm-3.1.1-0e66ea8321-10c0.zip/node_modules/path-key/",\ + "packageDependencies": [\ + ["path-key", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-parse", [\ + ["npm:1.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-parse-npm-1.0.7-09564527b7-10c0.zip/node_modules/path-parse/",\ + "packageDependencies": [\ + ["path-parse", "npm:1.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-root", [\ + ["npm:0.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-root-npm-0.1.1-624088cb93-10c0.zip/node_modules/path-root/",\ + "packageDependencies": [\ + ["path-root", "npm:0.1.1"],\ + ["path-root-regex", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-root-regex", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-root-regex-npm-0.1.2-14181162e0-10c0.zip/node_modules/path-root-regex/",\ + "packageDependencies": [\ + ["path-root-regex", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-scurry", [\ + ["npm:1.11.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-scurry-npm-1.11.1-aaf8c339af-10c0.zip/node_modules/path-scurry/",\ + "packageDependencies": [\ + ["path-scurry", "npm:1.11.1"],\ + ["lru-cache", "npm:10.4.3"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["path-to-regexp", [\ + ["npm:0.1.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/path-to-regexp-npm-0.1.7-2605347373-10c0.zip/node_modules/path-to-regexp/",\ + "packageDependencies": [\ + ["path-to-regexp", "npm:0.1.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pathval", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pathval-npm-1.1.1-ce0311d7e0-10c0.zip/node_modules/pathval/",\ + "packageDependencies": [\ + ["pathval", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picocolors", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/picocolors-npm-1.0.1-39442f3da8-10c0.zip/node_modules/picocolors/",\ + "packageDependencies": [\ + ["picocolors", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["picomatch", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/picomatch-npm-2.3.1-c782cfd986-10c0.zip/node_modules/picomatch/",\ + "packageDependencies": [\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pify", [\ + ["npm:4.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pify-npm-4.0.1-062756097b-10c0.zip/node_modules/pify/",\ + "packageDependencies": [\ + ["pify", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pirates", [\ + ["npm:4.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pirates-npm-4.0.6-a8ec571a43-10c0.zip/node_modules/pirates/",\ + "packageDependencies": [\ + ["pirates", "npm:4.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pkg-dir", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pkg-dir-npm-3.0.0-16d8d93783-10c0.zip/node_modules/pkg-dir/",\ + "packageDependencies": [\ + ["pkg-dir", "npm:3.0.0"],\ + ["find-up", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pkg-dir-npm-7.0.0-02ff099b31-10c0.zip/node_modules/pkg-dir/",\ + "packageDependencies": [\ + ["pkg-dir", "npm:7.0.0"],\ + ["find-up", "npm:6.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["possible-typed-array-names", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/possible-typed-array-names-npm-1.0.0-3a8176348a-10c0.zip/node_modules/possible-typed-array-names/",\ + "packageDependencies": [\ + ["possible-typed-array-names", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["prelude-ls", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/prelude-ls-npm-1.1.2-a0daac0886-10c0.zip/node_modules/prelude-ls/",\ + "packageDependencies": [\ + ["prelude-ls", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/prelude-ls-npm-1.2.1-3e4d272a55-10c0.zip/node_modules/prelude-ls/",\ + "packageDependencies": [\ + ["prelude-ls", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["pretty-bytes", [\ + ["npm:5.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/pretty-bytes-npm-5.6.0-0061079c9f-10c0.zip/node_modules/pretty-bytes/",\ + "packageDependencies": [\ + ["pretty-bytes", "npm:5.6.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["proc-log", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/proc-log-npm-4.2.0-4d65296a9d-10c0.zip/node_modules/proc-log/",\ + "packageDependencies": [\ + ["proc-log", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["process-nextick-args", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/process-nextick-args-npm-2.0.1-b8d7971609-10c0.zip/node_modules/process-nextick-args/",\ + "packageDependencies": [\ + ["process-nextick-args", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["progress", [\ + ["npm:2.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/progress-npm-2.0.3-d1f87e2ac6-10c0.zip/node_modules/progress/",\ + "packageDependencies": [\ + ["progress", "npm:2.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["promise-retry", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/promise-retry-npm-2.0.1-871f0b01b7-10c0.zip/node_modules/promise-retry/",\ + "packageDependencies": [\ + ["promise-retry", "npm:2.0.1"],\ + ["err-code", "npm:2.0.3"],\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["proxy-addr", [\ + ["npm:2.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/proxy-addr-npm-2.0.7-dae6552872-10c0.zip/node_modules/proxy-addr/",\ + "packageDependencies": [\ + ["proxy-addr", "npm:2.0.7"],\ + ["forwarded", "npm:0.2.0"],\ + ["ipaddr.js", "npm:1.9.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["punycode", [\ + ["npm:1.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/punycode-npm-1.4.1-be4c23e6d2-10c0.zip/node_modules/punycode/",\ + "packageDependencies": [\ + ["punycode", "npm:1.4.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/punycode-npm-2.3.1-97543c420d-10c0.zip/node_modules/punycode/",\ + "packageDependencies": [\ + ["punycode", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["qjobs", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/qjobs-npm-1.2.0-e3396bd5d4-10c0.zip/node_modules/qjobs/",\ + "packageDependencies": [\ + ["qjobs", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["qs", [\ + ["npm:6.11.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/qs-npm-6.11.0-caf1bc9dea-10c0.zip/node_modules/qs/",\ + "packageDependencies": [\ + ["qs", "npm:6.11.0"],\ + ["side-channel", "npm:1.0.6"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.13.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/qs-npm-6.13.0-53676ddc84-10c0.zip/node_modules/qs/",\ + "packageDependencies": [\ + ["qs", "npm:6.13.0"],\ + ["side-channel", "npm:1.0.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["queue-microtask", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-10c0.zip/node_modules/queue-microtask/",\ + "packageDependencies": [\ + ["queue-microtask", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["randombytes", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/randombytes-npm-2.1.0-e3da76bccf-10c0.zip/node_modules/randombytes/",\ + "packageDependencies": [\ + ["randombytes", "npm:2.1.0"],\ + ["safe-buffer", "npm:5.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["range-parser", [\ + ["npm:1.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/range-parser-npm-1.2.1-1a470fa390-10c0.zip/node_modules/range-parser/",\ + "packageDependencies": [\ + ["range-parser", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["raw-body", [\ + ["npm:1.1.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/raw-body-npm-1.1.7-8719f0f511-10c0.zip/node_modules/raw-body/",\ + "packageDependencies": [\ + ["raw-body", "npm:1.1.7"],\ + ["bytes", "npm:1.0.0"],\ + ["string_decoder", "npm:0.10.31"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/raw-body-npm-2.5.2-5cb9dfebc1-10c0.zip/node_modules/raw-body/",\ + "packageDependencies": [\ + ["raw-body", "npm:2.5.2"],\ + ["bytes", "npm:3.1.2"],\ + ["http-errors", "npm:2.0.0"],\ + ["iconv-lite", "npm:0.4.24"],\ + ["unpipe", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["readable-stream", [\ + ["npm:2.3.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/readable-stream-npm-2.3.8-67a94c2cb1-10c0.zip/node_modules/readable-stream/",\ + "packageDependencies": [\ + ["readable-stream", "npm:2.3.8"],\ + ["core-util-is", "npm:1.0.3"],\ + ["inherits", "npm:2.0.4"],\ + ["isarray", "npm:1.0.0"],\ + ["process-nextick-args", "npm:2.0.1"],\ + ["safe-buffer", "npm:5.1.2"],\ + ["string_decoder", "npm:1.1.1"],\ + ["util-deprecate", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.6.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/readable-stream-npm-3.6.2-d2a6069158-10c0.zip/node_modules/readable-stream/",\ + "packageDependencies": [\ + ["readable-stream", "npm:3.6.2"],\ + ["inherits", "npm:2.0.4"],\ + ["string_decoder", "npm:1.3.0"],\ + ["util-deprecate", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["readdirp", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/readdirp-npm-3.2.0-23ba0e3b0c-10c0.zip/node_modules/readdirp/",\ + "packageDependencies": [\ + ["readdirp", "npm:3.2.0"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/readdirp-npm-3.6.0-f950cc74ab-10c0.zip/node_modules/readdirp/",\ + "packageDependencies": [\ + ["readdirp", "npm:3.6.0"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rechoir", [\ + ["npm:0.7.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rechoir-npm-0.7.1-0c7e5c1201-10c0.zip/node_modules/rechoir/",\ + "packageDependencies": [\ + ["rechoir", "npm:0.7.1"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerate", [\ + ["npm:1.4.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regenerate-npm-1.4.2-b296c5b63a-10c0.zip/node_modules/regenerate/",\ + "packageDependencies": [\ + ["regenerate", "npm:1.4.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerate-unicode-properties", [\ + ["npm:10.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regenerate-unicode-properties-npm-10.1.1-07b52ba05f-10c0.zip/node_modules/regenerate-unicode-properties/",\ + "packageDependencies": [\ + ["regenerate-unicode-properties", "npm:10.1.1"],\ + ["regenerate", "npm:1.4.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerator-runtime", [\ + ["npm:0.14.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-10c0.zip/node_modules/regenerator-runtime/",\ + "packageDependencies": [\ + ["regenerator-runtime", "npm:0.14.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regenerator-transform", [\ + ["npm:0.15.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regenerator-transform-npm-0.15.2-109e57a69f-10c0.zip/node_modules/regenerator-transform/",\ + "packageDependencies": [\ + ["regenerator-transform", "npm:0.15.2"],\ + ["@babel/runtime", "npm:7.25.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regexp.prototype.flags", [\ + ["npm:1.5.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regexp.prototype.flags-npm-1.5.2-a44e05d7d9-10c0.zip/node_modules/regexp.prototype.flags/",\ + "packageDependencies": [\ + ["regexp.prototype.flags", "npm:1.5.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-errors", "npm:1.3.0"],\ + ["set-function-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regexpp", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regexpp-npm-2.0.1-ac47f2bc1e-10c0.zip/node_modules/regexpp/",\ + "packageDependencies": [\ + ["regexpp", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regexpu-core", [\ + ["npm:5.3.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regexpu-core-npm-5.3.2-89effc52a2-10c0.zip/node_modules/regexpu-core/",\ + "packageDependencies": [\ + ["regexpu-core", "npm:5.3.2"],\ + ["@babel/regjsgen", "npm:0.8.0"],\ + ["regenerate", "npm:1.4.2"],\ + ["regenerate-unicode-properties", "npm:10.1.1"],\ + ["regjsparser", "npm:0.9.1"],\ + ["unicode-match-property-ecmascript", "npm:2.0.0"],\ + ["unicode-match-property-value-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["regjsparser", [\ + ["npm:0.9.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/regjsparser-npm-0.9.1-47cd7c2ee2-10c0.zip/node_modules/regjsparser/",\ + "packageDependencies": [\ + ["regjsparser", "npm:0.9.1"],\ + ["jsesc", "npm:0.5.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["require-directory", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/require-directory-npm-2.1.1-8608aee50b-10c0.zip/node_modules/require-directory/",\ + "packageDependencies": [\ + ["require-directory", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["require-from-string", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/require-from-string-npm-2.0.2-8557e0db12-10c0.zip/node_modules/require-from-string/",\ + "packageDependencies": [\ + ["require-from-string", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["require-main-filename", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/require-main-filename-npm-2.0.0-03eef65c84-10c0.zip/node_modules/require-main-filename/",\ + "packageDependencies": [\ + ["require-main-filename", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["requires-port", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/requires-port-npm-1.0.0-fd036b488a-10c0.zip/node_modules/requires-port/",\ + "packageDependencies": [\ + ["requires-port", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve", [\ + ["patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/resolve-patch-68fc483216-10c0.zip/node_modules/resolve/",\ + "packageDependencies": [\ + ["resolve", "patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/resolve-patch-4254c24959-10c0.zip/node_modules/resolve/",\ + "packageDependencies": [\ + ["resolve", "patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"],\ + ["is-core-module", "npm:2.15.0"],\ + ["path-parse", "npm:1.0.7"],\ + ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve-dir", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/resolve-dir-npm-1.0.1-0a95903c18-10c0.zip/node_modules/resolve-dir/",\ + "packageDependencies": [\ + ["resolve-dir", "npm:1.0.1"],\ + ["expand-tilde", "npm:2.0.2"],\ + ["global-modules", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["resolve-from", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/resolve-from-npm-4.0.0-f758ec21bf-10c0.zip/node_modules/resolve-from/",\ + "packageDependencies": [\ + ["resolve-from", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["restore-cursor", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/restore-cursor-npm-2.0.0-80278eb6b7-10c0.zip/node_modules/restore-cursor/",\ + "packageDependencies": [\ + ["restore-cursor", "npm:2.0.0"],\ + ["onetime", "npm:2.0.1"],\ + ["signal-exit", "npm:3.0.7"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["retry", [\ + ["npm:0.12.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/retry-npm-0.12.0-72ac7fb4cc-10c0.zip/node_modules/retry/",\ + "packageDependencies": [\ + ["retry", "npm:0.12.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.13.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/retry-npm-0.13.1-89eb100ab6-10c0.zip/node_modules/retry/",\ + "packageDependencies": [\ + ["retry", "npm:0.13.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["reusify", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/reusify-npm-1.0.4-95ac4aec11-10c0.zip/node_modules/reusify/",\ + "packageDependencies": [\ + ["reusify", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rfdc", [\ + ["npm:1.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rfdc-npm-1.4.1-1a1c63d052-10c0.zip/node_modules/rfdc/",\ + "packageDependencies": [\ + ["rfdc", "npm:1.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rimraf", [\ + ["npm:2.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rimraf-npm-2.6.3-f34c6c72ec-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["rimraf", "npm:2.6.3"],\ + ["glob", "npm:7.2.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.7.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rimraf-npm-2.7.1-9a71f3cc37-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["rimraf", "npm:2.7.1"],\ + ["glob", "npm:7.2.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rimraf-npm-3.0.2-2cb7dac69a-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["rimraf", "npm:3.0.2"],\ + ["glob", "npm:7.2.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.10", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rimraf-npm-5.0.10-d0c6647697-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["rimraf", "npm:5.0.10"],\ + ["glob", "npm:10.4.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rollup", [\ + ["npm:4.20.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rollup-npm-4.20.0-4fe360ee74-10c0.zip/node_modules/rollup/",\ + "packageDependencies": [\ + ["rollup", "npm:4.20.0"],\ + ["@rollup/rollup-android-arm-eabi", "npm:4.20.0"],\ + ["@rollup/rollup-android-arm64", "npm:4.20.0"],\ + ["@rollup/rollup-darwin-arm64", "npm:4.20.0"],\ + ["@rollup/rollup-darwin-x64", "npm:4.20.0"],\ + ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.20.0"],\ + ["@rollup/rollup-linux-arm-musleabihf", "npm:4.20.0"],\ + ["@rollup/rollup-linux-arm64-gnu", "npm:4.20.0"],\ + ["@rollup/rollup-linux-arm64-musl", "npm:4.20.0"],\ + ["@rollup/rollup-linux-powerpc64le-gnu", "npm:4.20.0"],\ + ["@rollup/rollup-linux-riscv64-gnu", "npm:4.20.0"],\ + ["@rollup/rollup-linux-s390x-gnu", "npm:4.20.0"],\ + ["@rollup/rollup-linux-x64-gnu", "npm:4.20.0"],\ + ["@rollup/rollup-linux-x64-musl", "npm:4.20.0"],\ + ["@rollup/rollup-win32-arm64-msvc", "npm:4.20.0"],\ + ["@rollup/rollup-win32-ia32-msvc", "npm:4.20.0"],\ + ["@rollup/rollup-win32-x64-msvc", "npm:4.20.0"],\ + ["@types/estree", "npm:1.0.5"],\ + ["fsevents", "patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rollup-plugin-babel", [\ + ["npm:4.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rollup-plugin-babel-npm-4.4.0-930e240ec3-10c0.zip/node_modules/rollup-plugin-babel/",\ + "packageDependencies": [\ + ["rollup-plugin-babel", "npm:4.4.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.4.0", {\ + "packageLocation": "./.yarn/__virtual__/rollup-plugin-babel-virtual-35a107f8e7/7/.yarn/berry/cache/rollup-plugin-babel-npm-4.4.0-930e240ec3-10c0.zip/node_modules/rollup-plugin-babel/",\ + "packageDependencies": [\ + ["rollup-plugin-babel", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:4.4.0"],\ + ["@babel/core", "npm:7.25.2"],\ + ["@babel/helper-module-imports", "npm:7.24.7"],\ + ["@types/babel__core", null],\ + ["@types/rollup", null],\ + ["rollup", "npm:4.20.0"],\ + ["rollup-pluginutils", "npm:2.8.2"]\ + ],\ + "packagePeers": [\ + "@babel/core",\ + "@types/babel__core",\ + "@types/rollup",\ + "rollup"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rollup-pluginutils", [\ + ["npm:2.8.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rollup-pluginutils-npm-2.8.2-f554dd6ac5-10c0.zip/node_modules/rollup-pluginutils/",\ + "packageDependencies": [\ + ["rollup-pluginutils", "npm:2.8.2"],\ + ["estree-walker", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["run-applescript", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/run-applescript-npm-7.0.0-b061c2c4fa-10c0.zip/node_modules/run-applescript/",\ + "packageDependencies": [\ + ["run-applescript", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["run-async", [\ + ["npm:2.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/run-async-npm-2.4.1-a94bb90861-10c0.zip/node_modules/run-async/",\ + "packageDependencies": [\ + ["run-async", "npm:2.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["run-parallel", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/run-parallel-npm-1.2.0-3f47ff2034-10c0.zip/node_modules/run-parallel/",\ + "packageDependencies": [\ + ["run-parallel", "npm:1.2.0"],\ + ["queue-microtask", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rxjs", [\ + ["npm:6.6.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/rxjs-npm-6.6.7-055046ea3c-10c0.zip/node_modules/rxjs/",\ + "packageDependencies": [\ + ["rxjs", "npm:6.6.7"],\ + ["tslib", "npm:1.14.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-array-concat", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safe-array-concat-npm-1.1.2-f9c09c1a31-10c0.zip/node_modules/safe-array-concat/",\ + "packageDependencies": [\ + ["safe-array-concat", "npm:1.1.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["has-symbols", "npm:1.0.3"],\ + ["isarray", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-buffer", [\ + ["npm:5.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safe-buffer-npm-5.1.2-c27fedf6c4-10c0.zip/node_modules/safe-buffer/",\ + "packageDependencies": [\ + ["safe-buffer", "npm:5.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safe-buffer-npm-5.2.1-3481c8aa9b-10c0.zip/node_modules/safe-buffer/",\ + "packageDependencies": [\ + ["safe-buffer", "npm:5.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-json-parse", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safe-json-parse-npm-1.0.1-dbf3ac3d80-10c0.zip/node_modules/safe-json-parse/",\ + "packageDependencies": [\ + ["safe-json-parse", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safe-regex-test", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safe-regex-test-npm-1.0.3-97fe5cc608-10c0.zip/node_modules/safe-regex-test/",\ + "packageDependencies": [\ + ["safe-regex-test", "npm:1.0.3"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-regex", "npm:1.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["safer-buffer", [\ + ["npm:2.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-10c0.zip/node_modules/safer-buffer/",\ + "packageDependencies": [\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["schema-utils", [\ + ["npm:3.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/schema-utils-npm-3.3.0-f2b36937f1-10c0.zip/node_modules/schema-utils/",\ + "packageDependencies": [\ + ["schema-utils", "npm:3.3.0"],\ + ["@types/json-schema", "npm:7.0.15"],\ + ["ajv", "npm:6.12.6"],\ + ["ajv-keywords", "virtual:f2b36937f163b579815d3163513b3330d7a31aaf0599eea66346382b8838395c613f4204e9809cc2ff6bba09c17ab0c34b37deadcb147de7e2f5e535d6ccc245#npm:3.5.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/schema-utils-npm-4.2.0-e822c5b02e-10c0.zip/node_modules/schema-utils/",\ + "packageDependencies": [\ + ["schema-utils", "npm:4.2.0"],\ + ["@types/json-schema", "npm:7.0.15"],\ + ["ajv", "npm:8.17.1"],\ + ["ajv-formats", "virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:2.1.1"],\ + ["ajv-keywords", "virtual:e822c5b02ef2b3c5fb9c8d88d5e0ca208365bff76f80510f4ccf9b1de44e2078264bcb00d3cdd5e193c256e9ab81e27c34fcfb1ad3a0e8c1dc8fa0066c78c468#npm:5.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["select-hose", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/select-hose-npm-2.0.0-8ce63adb52-10c0.zip/node_modules/select-hose/",\ + "packageDependencies": [\ + ["select-hose", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["selfsigned", [\ + ["npm:2.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/selfsigned-npm-2.4.1-1ca1b883c5-10c0.zip/node_modules/selfsigned/",\ + "packageDependencies": [\ + ["selfsigned", "npm:2.4.1"],\ + ["@types/node-forge", "npm:1.3.11"],\ + ["node-forge", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["semver", [\ + ["npm:5.7.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/semver-npm-5.7.2-938ee91eaa-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:5.7.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/semver-npm-6.3.1-bcba31fdbe-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/semver-npm-7.6.3-57e82c14d5-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:7.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["send", [\ + ["npm:0.18.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/send-npm-0.18.0-faadf6353f-10c0.zip/node_modules/send/",\ + "packageDependencies": [\ + ["send", "npm:0.18.0"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["depd", "npm:2.0.0"],\ + ["destroy", "npm:1.2.0"],\ + ["encodeurl", "npm:1.0.2"],\ + ["escape-html", "npm:1.0.3"],\ + ["etag", "npm:1.8.1"],\ + ["fresh", "npm:0.5.2"],\ + ["http-errors", "npm:2.0.0"],\ + ["mime", "npm:1.6.0"],\ + ["ms", "npm:2.1.3"],\ + ["on-finished", "npm:2.4.1"],\ + ["range-parser", "npm:1.2.1"],\ + ["statuses", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["serialize-javascript", [\ + ["npm:6.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/serialize-javascript-npm-6.0.2-cc09461d45-10c0.zip/node_modules/serialize-javascript/",\ + "packageDependencies": [\ + ["serialize-javascript", "npm:6.0.2"],\ + ["randombytes", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["serve-index", [\ + ["npm:1.9.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/serve-index-npm-1.9.1-4927052df8-10c0.zip/node_modules/serve-index/",\ + "packageDependencies": [\ + ["serve-index", "npm:1.9.1"],\ + ["accepts", "npm:1.3.8"],\ + ["batch", "npm:0.6.1"],\ + ["debug", "virtual:44738662cf800ff2863ba9baeabb817b24a959a14f86e20a31680e5dc79a4a738f7ceb7dca32753d579fae475aa061dffad8228a3391f3a9546b122f077e29a5#npm:2.6.9"],\ + ["escape-html", "npm:1.0.3"],\ + ["http-errors", "npm:1.6.3"],\ + ["mime-types", "npm:2.1.35"],\ + ["parseurl", "npm:1.3.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["serve-static", [\ + ["npm:1.15.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/serve-static-npm-1.15.0-86c81879f5-10c0.zip/node_modules/serve-static/",\ + "packageDependencies": [\ + ["serve-static", "npm:1.15.0"],\ + ["encodeurl", "npm:1.0.2"],\ + ["escape-html", "npm:1.0.3"],\ + ["parseurl", "npm:1.3.3"],\ + ["send", "npm:0.18.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-blocking", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/set-blocking-npm-2.0.0-49e2cffa24-10c0.zip/node_modules/set-blocking/",\ + "packageDependencies": [\ + ["set-blocking", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-function-length", [\ + ["npm:1.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/set-function-length-npm-1.2.2-243073748b-10c0.zip/node_modules/set-function-length/",\ + "packageDependencies": [\ + ["set-function-length", "npm:1.2.2"],\ + ["define-data-property", "npm:1.1.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["function-bind", "npm:1.1.2"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["gopd", "npm:1.0.1"],\ + ["has-property-descriptors", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-function-name", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/set-function-name-npm-2.0.2-3d9a2d8899-10c0.zip/node_modules/set-function-name/",\ + "packageDependencies": [\ + ["set-function-name", "npm:2.0.2"],\ + ["define-data-property", "npm:1.1.4"],\ + ["es-errors", "npm:1.3.0"],\ + ["functions-have-names", "npm:1.2.3"],\ + ["has-property-descriptors", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["setprototypeof", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/setprototypeof-npm-1.1.0-7d8becb375-10c0.zip/node_modules/setprototypeof/",\ + "packageDependencies": [\ + ["setprototypeof", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-10c0.zip/node_modules/setprototypeof/",\ + "packageDependencies": [\ + ["setprototypeof", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shallow-clone", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shallow-clone-npm-3.0.1-dab5873d0d-10c0.zip/node_modules/shallow-clone/",\ + "packageDependencies": [\ + ["shallow-clone", "npm:3.0.1"],\ + ["kind-of", "npm:6.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-command", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shebang-command-npm-1.2.0-8990ba5d1d-10c0.zip/node_modules/shebang-command/",\ + "packageDependencies": [\ + ["shebang-command", "npm:1.2.0"],\ + ["shebang-regex", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shebang-command-npm-2.0.0-eb2b01921d-10c0.zip/node_modules/shebang-command/",\ + "packageDependencies": [\ + ["shebang-command", "npm:2.0.0"],\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-regex", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shebang-regex-npm-1.0.0-c3612b74e9-10c0.zip/node_modules/shebang-regex/",\ + "packageDependencies": [\ + ["shebang-regex", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shebang-regex-npm-3.0.0-899a0cd65e-10c0.zip/node_modules/shebang-regex/",\ + "packageDependencies": [\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shell-quote", [\ + ["npm:1.8.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/shell-quote-npm-1.8.1-fcccf06093-10c0.zip/node_modules/shell-quote/",\ + "packageDependencies": [\ + ["shell-quote", "npm:1.8.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["side-channel", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/side-channel-npm-1.0.6-511657386f-10c0.zip/node_modules/side-channel/",\ + "packageDependencies": [\ + ["side-channel", "npm:1.0.6"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["get-intrinsic", "npm:1.2.4"],\ + ["object-inspect", "npm:1.13.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["signal-exit", [\ + ["npm:3.0.7", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/signal-exit-npm-3.0.7-bd270458a3-10c0.zip/node_modules/signal-exit/",\ + "packageDependencies": [\ + ["signal-exit", "npm:3.0.7"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/signal-exit-npm-4.1.0-61fb957687-10c0.zip/node_modules/signal-exit/",\ + "packageDependencies": [\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["slash", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/slash-npm-2.0.0-69009eac54-10c0.zip/node_modules/slash/",\ + "packageDependencies": [\ + ["slash", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["slice-ansi", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/slice-ansi-npm-2.1.0-02505ccc06-10c0.zip/node_modules/slice-ansi/",\ + "packageDependencies": [\ + ["slice-ansi", "npm:2.1.0"],\ + ["ansi-styles", "npm:3.2.1"],\ + ["astral-regex", "npm:1.0.0"],\ + ["is-fullwidth-code-point", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["smart-buffer", [\ + ["npm:4.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/smart-buffer-npm-4.2.0-5ac3f668bb-10c0.zip/node_modules/smart-buffer/",\ + "packageDependencies": [\ + ["smart-buffer", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socket.io", [\ + ["npm:4.7.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/socket.io-npm-4.7.5-7db6120b90-10c0.zip/node_modules/socket.io/",\ + "packageDependencies": [\ + ["socket.io", "npm:4.7.5"],\ + ["accepts", "npm:1.3.8"],\ + ["base64id", "npm:2.0.0"],\ + ["cors", "npm:2.8.5"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["engine.io", "npm:6.5.5"],\ + ["socket.io-adapter", "npm:2.5.5"],\ + ["socket.io-parser", "npm:4.2.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socket.io-adapter", [\ + ["npm:2.5.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/socket.io-adapter-npm-2.5.5-7a0505537f-10c0.zip/node_modules/socket.io-adapter/",\ + "packageDependencies": [\ + ["socket.io-adapter", "npm:2.5.5"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["ws", "virtual:201f4587c39a7a192113375ce43a71e5a1567792f21ea290c6e2507b8b7c6b8980aa9b7dfc638634a990c0de35e58ff73595d82d7c5966172113abc98241545d#npm:8.17.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socket.io-parser", [\ + ["npm:4.2.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/socket.io-parser-npm-4.2.4-bf87f78bcd-10c0.zip/node_modules/socket.io-parser/",\ + "packageDependencies": [\ + ["socket.io-parser", "npm:4.2.4"],\ + ["@socket.io/component-emitter", "npm:3.1.2"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["sockjs", [\ + ["npm:0.3.24", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/sockjs-npm-0.3.24-ecb3909016-10c0.zip/node_modules/sockjs/",\ + "packageDependencies": [\ + ["sockjs", "npm:0.3.24"],\ + ["faye-websocket", "npm:0.11.4"],\ + ["uuid", "npm:8.3.2"],\ + ["websocket-driver", "npm:0.7.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks", [\ + ["npm:2.8.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/socks-npm-2.8.3-3532b59899-10c0.zip/node_modules/socks/",\ + "packageDependencies": [\ + ["socks", "npm:2.8.3"],\ + ["ip-address", "npm:9.0.5"],\ + ["smart-buffer", "npm:4.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["socks-proxy-agent", [\ + ["npm:8.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/socks-proxy-agent-npm-8.0.4-991722041a-10c0.zip/node_modules/socks-proxy-agent/",\ + "packageDependencies": [\ + ["socks-proxy-agent", "npm:8.0.4"],\ + ["agent-base", "npm:7.1.1"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["socks", "npm:2.8.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["source-map", [\ + ["npm:0.1.32", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-npm-0.1.32-04e965212e-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.1.32"],\ + ["amdefine", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-npm-0.2.0-1cadfbac85-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.2.0"],\ + ["amdefine", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.4.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-npm-0.4.4-59e8684985-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.4.4"],\ + ["amdefine", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.6.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-npm-0.6.1-1a3621db16-10c0.zip/node_modules/source-map/",\ + "packageDependencies": [\ + ["source-map", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["source-map-support", [\ + ["npm:0.3.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-support-npm-0.3.3-0c259759e6-10c0.zip/node_modules/source-map-support/",\ + "packageDependencies": [\ + ["source-map-support", "npm:0.3.3"],\ + ["source-map", "npm:0.1.32"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.5.21", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/source-map-support-npm-0.5.21-09ca99e250-10c0.zip/node_modules/source-map-support/",\ + "packageDependencies": [\ + ["source-map-support", "npm:0.5.21"],\ + ["buffer-from", "npm:1.1.2"],\ + ["source-map", "npm:0.6.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["spdy", [\ + ["npm:4.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/spdy-npm-4.0.2-7e5782a993-10c0.zip/node_modules/spdy/",\ + "packageDependencies": [\ + ["spdy", "npm:4.0.2"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["handle-thing", "npm:2.0.1"],\ + ["http-deceiver", "npm:1.2.7"],\ + ["select-hose", "npm:2.0.0"],\ + ["spdy-transport", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["spdy-transport", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/spdy-transport-npm-3.0.0-9f4f73f332-10c0.zip/node_modules/spdy-transport/",\ + "packageDependencies": [\ + ["spdy-transport", "npm:3.0.0"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["detect-node", "npm:2.1.0"],\ + ["hpack.js", "npm:2.1.6"],\ + ["obuf", "npm:1.1.2"],\ + ["readable-stream", "npm:3.6.2"],\ + ["wbuf", "npm:1.7.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["sprintf-js", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/sprintf-js-npm-1.0.3-73f0a322fa-10c0.zip/node_modules/sprintf-js/",\ + "packageDependencies": [\ + ["sprintf-js", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/sprintf-js-npm-1.1.3-b99efd75b2-10c0.zip/node_modules/sprintf-js/",\ + "packageDependencies": [\ + ["sprintf-js", "npm:1.1.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ssri", [\ + ["npm:10.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ssri-npm-10.0.6-6b8eaec5ce-10c0.zip/node_modules/ssri/",\ + "packageDependencies": [\ + ["ssri", "npm:10.0.6"],\ + ["minipass", "npm:7.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["statuses", [\ + ["npm:1.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/statuses-npm-1.5.0-f88f91b2e9-10c0.zip/node_modules/statuses/",\ + "packageDependencies": [\ + ["statuses", "npm:1.5.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/statuses-npm-2.0.1-81d2b97fee-10c0.zip/node_modules/statuses/",\ + "packageDependencies": [\ + ["statuses", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["streamroller", [\ + ["npm:3.1.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/streamroller-npm-3.1.5-2fe0f7e85a-10c0.zip/node_modules/streamroller/",\ + "packageDependencies": [\ + ["streamroller", "npm:3.1.5"],\ + ["date-format", "npm:4.0.14"],\ + ["debug", "virtual:69c3455e973f914a9da079b465f412398aa9db4de6c967c5de9b7df9f75964a40ef9a5e9756b59c737917bf508a15667d830fc1be46cb0566180c490a2062629#npm:4.3.6"],\ + ["fs-extra", "npm:8.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string-template", [\ + ["npm:0.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string-template-npm-0.2.1-e8fa722df5-10c0.zip/node_modules/string-template/",\ + "packageDependencies": [\ + ["string-template", "npm:0.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string-width", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string-width-npm-2.1.1-0c2c6ae53f-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["string-width", "npm:2.1.1"],\ + ["is-fullwidth-code-point", "npm:2.0.0"],\ + ["strip-ansi", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string-width-npm-3.1.0-e031bfa4e0-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["string-width", "npm:3.1.0"],\ + ["emoji-regex", "npm:7.0.3"],\ + ["is-fullwidth-code-point", "npm:2.0.0"],\ + ["strip-ansi", "npm:5.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string-width-npm-4.2.3-2c27177bae-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["string-width", "npm:4.2.3"],\ + ["emoji-regex", "npm:8.0.0"],\ + ["is-fullwidth-code-point", "npm:3.0.0"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string-width-npm-5.1.2-bf60531341-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["string-width", "npm:5.1.2"],\ + ["eastasianwidth", "npm:0.2.0"],\ + ["emoji-regex", "npm:9.2.2"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trim", [\ + ["npm:1.2.9", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string.prototype.trim-npm-1.2.9-7b24b35971-10c0.zip/node_modules/string.prototype.trim/",\ + "packageDependencies": [\ + ["string.prototype.trim", "npm:1.2.9"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-abstract", "npm:1.23.3"],\ + ["es-object-atoms", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trimend", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string.prototype.trimend-npm-1.0.8-9c0ed19266-10c0.zip/node_modules/string.prototype.trimend/",\ + "packageDependencies": [\ + ["string.prototype.trimend", "npm:1.0.8"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string.prototype.trimstart", [\ + ["npm:1.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string.prototype.trimstart-npm-1.0.8-8c6b16ba6e-10c0.zip/node_modules/string.prototype.trimstart/",\ + "packageDependencies": [\ + ["string.prototype.trimstart", "npm:1.0.8"],\ + ["call-bind", "npm:1.0.7"],\ + ["define-properties", "npm:1.2.1"],\ + ["es-object-atoms", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["string_decoder", [\ + ["npm:0.10.31", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string_decoder-npm-0.10.31-851f3f7302-10c0.zip/node_modules/string_decoder/",\ + "packageDependencies": [\ + ["string_decoder", "npm:0.10.31"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string_decoder-npm-1.1.1-e46a6c1353-10c0.zip/node_modules/string_decoder/",\ + "packageDependencies": [\ + ["string_decoder", "npm:1.1.1"],\ + ["safe-buffer", "npm:5.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/string_decoder-npm-1.3.0-2422117fd0-10c0.zip/node_modules/string_decoder/",\ + "packageDependencies": [\ + ["string_decoder", "npm:1.3.0"],\ + ["safe-buffer", "npm:5.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-ansi", [\ + ["npm:3.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-ansi-npm-3.0.1-6aec1365b9-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:3.0.1"],\ + ["ansi-regex", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-ansi-npm-4.0.0-d4de985014-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:4.0.0"],\ + ["ansi-regex", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-ansi-npm-5.2.0-275214c316-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:5.2.0"],\ + ["ansi-regex", "npm:4.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-ansi-npm-6.0.1-caddc7cb40-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:6.0.1"],\ + ["ansi-regex", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-ansi-npm-7.1.0-7453b80b79-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:7.1.0"],\ + ["ansi-regex", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-final-newline", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-final-newline-npm-2.0.0-340c4f7c66-10c0.zip/node_modules/strip-final-newline/",\ + "packageDependencies": [\ + ["strip-final-newline", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["strip-json-comments", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-json-comments-npm-2.0.1-e7883b2d04-10c0.zip/node_modules/strip-json-comments/",\ + "packageDependencies": [\ + ["strip-json-comments", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/strip-json-comments-npm-3.1.1-dcb2324823-10c0.zip/node_modules/strip-json-comments/",\ + "packageDependencies": [\ + ["strip-json-comments", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["supports-color", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-2.0.0-22c0f0adbc-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:3.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-3.2.3-117b06af49-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:3.2.3"],\ + ["has-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.5.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-5.5.0-183ac537bc-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:5.5.0"],\ + ["has-flag", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:6.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-6.0.0-83646b0c08-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:6.0.0"],\ + ["has-flag", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-7.2.0-606bfcf7da-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:7.2.0"],\ + ["has-flag", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-color-npm-8.1.1-289e937149-10c0.zip/node_modules/supports-color/",\ + "packageDependencies": [\ + ["supports-color", "npm:8.1.1"],\ + ["has-flag", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["supports-preserve-symlinks-flag", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-10c0.zip/node_modules/supports-preserve-symlinks-flag/",\ + "packageDependencies": [\ + ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["table", [\ + ["npm:5.4.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/table-npm-5.4.6-190b118384-10c0.zip/node_modules/table/",\ + "packageDependencies": [\ + ["table", "npm:5.4.6"],\ + ["ajv", "npm:6.12.6"],\ + ["lodash", "npm:4.17.21"],\ + ["slice-ansi", "npm:2.1.0"],\ + ["string-width", "npm:3.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tapable", [\ + ["npm:2.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tapable-npm-2.2.1-8cf5ff3039-10c0.zip/node_modules/tapable/",\ + "packageDependencies": [\ + ["tapable", "npm:2.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tar", [\ + ["npm:6.2.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tar-npm-6.2.1-237800bb20-10c0.zip/node_modules/tar/",\ + "packageDependencies": [\ + ["tar", "npm:6.2.1"],\ + ["chownr", "npm:2.0.0"],\ + ["fs-minipass", "npm:2.1.0"],\ + ["minipass", "npm:5.0.0"],\ + ["minizlib", "npm:2.1.2"],\ + ["mkdirp", "npm:1.0.4"],\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["terser", [\ + ["npm:5.31.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/terser-npm-5.31.3-0d82b5f3a6-10c0.zip/node_modules/terser/",\ + "packageDependencies": [\ + ["terser", "npm:5.31.3"],\ + ["@jridgewell/source-map", "npm:0.3.6"],\ + ["acorn", "npm:8.12.1"],\ + ["commander", "npm:2.20.3"],\ + ["source-map-support", "npm:0.5.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["terser-webpack-plugin", [\ + ["npm:5.3.10", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/terser-webpack-plugin-npm-5.3.10-3bde1920fb-10c0.zip/node_modules/terser-webpack-plugin/",\ + "packageDependencies": [\ + ["terser-webpack-plugin", "npm:5.3.10"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:5.3.10", {\ + "packageLocation": "./.yarn/__virtual__/terser-webpack-plugin-virtual-766764131d/7/.yarn/berry/cache/terser-webpack-plugin-npm-5.3.10-3bde1920fb-10c0.zip/node_modules/terser-webpack-plugin/",\ + "packageDependencies": [\ + ["terser-webpack-plugin", "virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:5.3.10"],\ + ["@jridgewell/trace-mapping", "npm:0.3.25"],\ + ["@swc/core", null],\ + ["@types/esbuild", null],\ + ["@types/swc__core", null],\ + ["@types/uglify-js", null],\ + ["@types/webpack", null],\ + ["esbuild", null],\ + ["jest-worker", "npm:27.5.1"],\ + ["schema-utils", "npm:3.3.0"],\ + ["serialize-javascript", "npm:6.0.2"],\ + ["terser", "npm:5.31.3"],\ + ["uglify-js", null],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"]\ + ],\ + "packagePeers": [\ + "@swc/core",\ + "@types/esbuild",\ + "@types/swc__core",\ + "@types/uglify-js",\ + "@types/webpack",\ + "esbuild",\ + "uglify-js",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["text-table", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/text-table-npm-0.2.0-d92a778b59-10c0.zip/node_modules/text-table/",\ + "packageDependencies": [\ + ["text-table", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["thingies", [\ + ["npm:1.21.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/thingies-npm-1.21.0-a230892a3e-10c0.zip/node_modules/thingies/",\ + "packageDependencies": [\ + ["thingies", "npm:1.21.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.21.0", {\ + "packageLocation": "./.yarn/__virtual__/thingies-virtual-f13e17ef67/7/.yarn/berry/cache/thingies-npm-1.21.0-a230892a3e-10c0.zip/node_modules/thingies/",\ + "packageDependencies": [\ + ["thingies", "virtual:280cc392d21b9865f4db4c29070b9e3bc53652b260f3c3e807c017fc81954ebcbfae76ed96b2e291f234022daa45ec3d2a0b6f8706729a3a34254325e63868e0#npm:1.21.0"],\ + ["@types/tslib", null],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "packagePeers": [\ + "@types/tslib",\ + "tslib"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["through", [\ + ["npm:2.3.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/through-npm-2.3.8-df5f72a16e-10c0.zip/node_modules/through/",\ + "packageDependencies": [\ + ["through", "npm:2.3.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["thunky", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/thunky-npm-1.1.0-2d25531f44-10c0.zip/node_modules/thunky/",\ + "packageDependencies": [\ + ["thunky", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tiny-lr", [\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tiny-lr-npm-1.1.1-710fa9e84c-10c0.zip/node_modules/tiny-lr/",\ + "packageDependencies": [\ + ["tiny-lr", "npm:1.1.1"],\ + ["body", "npm:5.1.0"],\ + ["debug", "virtual:710fa9e84c411e9a6d38057111fc8f87ba51ce39b63d470861c88972bf2b279427700d359b58a66dff9d7497a6091b73f49b16317fa95e6ed5ec2f1aa737346f#npm:3.2.7"],\ + ["faye-websocket", "npm:0.10.0"],\ + ["livereload-js", "npm:2.4.0"],\ + ["object-assign", "npm:4.1.1"],\ + ["qs", "npm:6.13.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tmp", [\ + ["npm:0.0.33", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tmp-npm-0.0.33-bcbf65df2a-10c0.zip/node_modules/tmp/",\ + "packageDependencies": [\ + ["tmp", "npm:0.0.33"],\ + ["os-tmpdir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tmp-npm-0.2.3-ac2a701365-10c0.zip/node_modules/tmp/",\ + "packageDependencies": [\ + ["tmp", "npm:0.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["to-fast-properties", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/to-fast-properties-npm-2.0.0-0dc60cc481-10c0.zip/node_modules/to-fast-properties/",\ + "packageDependencies": [\ + ["to-fast-properties", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["to-regex-range", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/to-regex-range-npm-5.0.1-f1e8263b00-10c0.zip/node_modules/to-regex-range/",\ + "packageDependencies": [\ + ["to-regex-range", "npm:5.0.1"],\ + ["is-number", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["toidentifier", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/toidentifier-npm-1.0.1-f759712599-10c0.zip/node_modules/toidentifier/",\ + "packageDependencies": [\ + ["toidentifier", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tree-dump", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tree-dump-npm-1.0.2-6c07f6c1f7-10c0.zip/node_modules/tree-dump/",\ + "packageDependencies": [\ + ["tree-dump", "npm:1.0.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.2", {\ + "packageLocation": "./.yarn/__virtual__/tree-dump-virtual-9df26320a2/7/.yarn/berry/cache/tree-dump-npm-1.0.2-6c07f6c1f7-10c0.zip/node_modules/tree-dump/",\ + "packageDependencies": [\ + ["tree-dump", "virtual:e55ec5b708af458e02f105f67d426c21a109b0b712703bc518c1e7685cf1b0378bd89d2ad4fb497de3db344887bd0d468731b1fd7a96d6414f388a94726516c9#npm:1.0.2"],\ + ["@types/tslib", null],\ + ["tslib", "npm:2.6.3"]\ + ],\ + "packagePeers": [\ + "@types/tslib",\ + "tslib"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["tslib", [\ + ["npm:1.14.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tslib-npm-1.14.1-102499115e-10c0.zip/node_modules/tslib/",\ + "packageDependencies": [\ + ["tslib", "npm:1.14.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.6.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/tslib-npm-2.6.3-0fd136b3be-10c0.zip/node_modules/tslib/",\ + "packageDependencies": [\ + ["tslib", "npm:2.6.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-check", [\ + ["npm:0.3.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/type-check-npm-0.3.2-a4a38bb0b6-10c0.zip/node_modules/type-check/",\ + "packageDependencies": [\ + ["type-check", "npm:0.3.2"],\ + ["prelude-ls", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:0.4.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/type-check-npm-0.4.0-60565800ce-10c0.zip/node_modules/type-check/",\ + "packageDependencies": [\ + ["type-check", "npm:0.4.0"],\ + ["prelude-ls", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-detect", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/type-detect-npm-4.1.0-171d011a73-10c0.zip/node_modules/type-detect/",\ + "packageDependencies": [\ + ["type-detect", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-fest", [\ + ["npm:0.20.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/type-fest-npm-0.20.2-b36432617f-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:0.20.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["type-is", [\ + ["npm:1.6.18", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/type-is-npm-1.6.18-6dee4d4961-10c0.zip/node_modules/type-is/",\ + "packageDependencies": [\ + ["type-is", "npm:1.6.18"],\ + ["media-typer", "npm:0.3.0"],\ + ["mime-types", "npm:2.1.35"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-buffer", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/typed-array-buffer-npm-1.0.2-31e458f38d-10c0.zip/node_modules/typed-array-buffer/",\ + "packageDependencies": [\ + ["typed-array-buffer", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["es-errors", "npm:1.3.0"],\ + ["is-typed-array", "npm:1.1.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-length", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/typed-array-byte-length-npm-1.0.1-9ab0891fb8-10c0.zip/node_modules/typed-array-byte-length/",\ + "packageDependencies": [\ + ["typed-array-byte-length", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.7"],\ + ["for-each", "npm:0.3.3"],\ + ["gopd", "npm:1.0.1"],\ + ["has-proto", "npm:1.0.3"],\ + ["is-typed-array", "npm:1.1.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-offset", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/typed-array-byte-offset-npm-1.0.2-14b64ee0e1-10c0.zip/node_modules/typed-array-byte-offset/",\ + "packageDependencies": [\ + ["typed-array-byte-offset", "npm:1.0.2"],\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.7"],\ + ["for-each", "npm:0.3.3"],\ + ["gopd", "npm:1.0.1"],\ + ["has-proto", "npm:1.0.3"],\ + ["is-typed-array", "npm:1.1.13"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-length", [\ + ["npm:1.0.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/typed-array-length-npm-1.0.6-867a36a1ac-10c0.zip/node_modules/typed-array-length/",\ + "packageDependencies": [\ + ["typed-array-length", "npm:1.0.6"],\ + ["call-bind", "npm:1.0.7"],\ + ["for-each", "npm:0.3.3"],\ + ["gopd", "npm:1.0.1"],\ + ["has-proto", "npm:1.0.3"],\ + ["is-typed-array", "npm:1.1.13"],\ + ["possible-typed-array-names", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ua-parser-js", [\ + ["npm:0.7.38", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ua-parser-js-npm-0.7.38-6dcd8631a2-10c0.zip/node_modules/ua-parser-js/",\ + "packageDependencies": [\ + ["ua-parser-js", "npm:0.7.38"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uglify-js", [\ + ["npm:3.19.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/uglify-js-npm-3.19.1-43e61650b6-10c0.zip/node_modules/uglify-js/",\ + "packageDependencies": [\ + ["uglify-js", "npm:3.19.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unbox-primitive", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unbox-primitive-npm-1.0.2-cb56a05066-10c0.zip/node_modules/unbox-primitive/",\ + "packageDependencies": [\ + ["unbox-primitive", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.7"],\ + ["has-bigints", "npm:1.0.2"],\ + ["has-symbols", "npm:1.0.3"],\ + ["which-boxed-primitive", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unc-path-regex", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unc-path-regex-npm-0.1.2-53c3343ef3-10c0.zip/node_modules/unc-path-regex/",\ + "packageDependencies": [\ + ["unc-path-regex", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["underscore.string", [\ + ["npm:3.3.6", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/underscore.string-npm-3.3.6-6b8df1b7db-10c0.zip/node_modules/underscore.string/",\ + "packageDependencies": [\ + ["underscore.string", "npm:3.3.6"],\ + ["sprintf-js", "npm:1.1.3"],\ + ["util-deprecate", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["undici-types", [\ + ["npm:6.13.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/undici-types-npm-6.13.0-3ce6ceead9-10c0.zip/node_modules/undici-types/",\ + "packageDependencies": [\ + ["undici-types", "npm:6.13.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-canonical-property-names-ecmascript", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unicode-canonical-property-names-ecmascript-npm-2.0.0-d2d8554a14-10c0.zip/node_modules/unicode-canonical-property-names-ecmascript/",\ + "packageDependencies": [\ + ["unicode-canonical-property-names-ecmascript", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-match-property-ecmascript", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unicode-match-property-ecmascript-npm-2.0.0-97a00fd52c-10c0.zip/node_modules/unicode-match-property-ecmascript/",\ + "packageDependencies": [\ + ["unicode-match-property-ecmascript", "npm:2.0.0"],\ + ["unicode-canonical-property-names-ecmascript", "npm:2.0.0"],\ + ["unicode-property-aliases-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-match-property-value-ecmascript", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unicode-match-property-value-ecmascript-npm-2.1.0-65e24443e6-10c0.zip/node_modules/unicode-match-property-value-ecmascript/",\ + "packageDependencies": [\ + ["unicode-match-property-value-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unicode-property-aliases-ecmascript", [\ + ["npm:2.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unicode-property-aliases-ecmascript-npm-2.1.0-46779595f4-10c0.zip/node_modules/unicode-property-aliases-ecmascript/",\ + "packageDependencies": [\ + ["unicode-property-aliases-ecmascript", "npm:2.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-filename", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unique-filename-npm-3.0.0-77d68e0a45-10c0.zip/node_modules/unique-filename/",\ + "packageDependencies": [\ + ["unique-filename", "npm:3.0.0"],\ + ["unique-slug", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unique-slug", [\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unique-slug-npm-4.0.0-e6b08f28aa-10c0.zip/node_modules/unique-slug/",\ + "packageDependencies": [\ + ["unique-slug", "npm:4.0.0"],\ + ["imurmurhash", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["universalify", [\ + ["npm:0.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/universalify-npm-0.1.2-9b22d31d2d-10c0.zip/node_modules/universalify/",\ + "packageDependencies": [\ + ["universalify", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["unpipe", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/unpipe-npm-1.0.0-2ed2a3c2bf-10c0.zip/node_modules/unpipe/",\ + "packageDependencies": [\ + ["unpipe", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["update-browserslist-db", [\ + ["npm:1.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/update-browserslist-db-npm-1.1.0-3d2cb7d955-10c0.zip/node_modules/update-browserslist-db/",\ + "packageDependencies": [\ + ["update-browserslist-db", "npm:1.1.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:4e727c7b5b033f8d5ac7299f9860cb61f5802656f7b4fea2accd32d68dc1a767387a6d23f0724065d3c65e61cb31b9eec2438ae937ce36e7602b4586ede55af6#npm:1.1.0", {\ + "packageLocation": "./.yarn/__virtual__/update-browserslist-db-virtual-e5d722ea57/7/.yarn/berry/cache/update-browserslist-db-npm-1.1.0-3d2cb7d955-10c0.zip/node_modules/update-browserslist-db/",\ + "packageDependencies": [\ + ["update-browserslist-db", "virtual:4e727c7b5b033f8d5ac7299f9860cb61f5802656f7b4fea2accd32d68dc1a767387a6d23f0724065d3c65e61cb31b9eec2438ae937ce36e7602b4586ede55af6#npm:1.1.0"],\ + ["@types/browserslist", null],\ + ["browserslist", "npm:4.23.3"],\ + ["escalade", "npm:3.1.2"],\ + ["picocolors", "npm:1.0.1"]\ + ],\ + "packagePeers": [\ + "@types/browserslist",\ + "browserslist"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uri-js", [\ + ["npm:4.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/uri-js-npm-4.4.1-66d11cbcaf-10c0.zip/node_modules/uri-js/",\ + "packageDependencies": [\ + ["uri-js", "npm:4.4.1"],\ + ["punycode", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uri-path", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/uri-path-npm-1.0.0-365295d45b-10c0.zip/node_modules/uri-path/",\ + "packageDependencies": [\ + ["uri-path", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["util-deprecate", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/util-deprecate-npm-1.0.2-e3fe1a219c-10c0.zip/node_modules/util-deprecate/",\ + "packageDependencies": [\ + ["util-deprecate", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["utils-merge", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/utils-merge-npm-1.0.1-363bbdfbca-10c0.zip/node_modules/utils-merge/",\ + "packageDependencies": [\ + ["utils-merge", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["uuid", [\ + ["npm:8.3.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/uuid-npm-8.3.2-eca0baba53-10c0.zip/node_modules/uuid/",\ + "packageDependencies": [\ + ["uuid", "npm:8.3.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["v8flags", [\ + ["npm:3.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/v8flags-npm-3.2.0-28770d6a95-10c0.zip/node_modules/v8flags/",\ + "packageDependencies": [\ + ["v8flags", "npm:3.2.0"],\ + ["homedir-polyfill", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/v8flags-npm-4.0.1-efee267421-10c0.zip/node_modules/v8flags/",\ + "packageDependencies": [\ + ["v8flags", "npm:4.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["vary", [\ + ["npm:1.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/vary-npm-1.1.2-b49f70ae63-10c0.zip/node_modules/vary/",\ + "packageDependencies": [\ + ["vary", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["void-elements", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/void-elements-npm-2.0.1-85e6962130-10c0.zip/node_modules/void-elements/",\ + "packageDependencies": [\ + ["void-elements", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["watchpack", [\ + ["npm:2.4.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/watchpack-npm-2.4.1-23f13203b4-10c0.zip/node_modules/watchpack/",\ + "packageDependencies": [\ + ["watchpack", "npm:2.4.1"],\ + ["glob-to-regexp", "npm:0.4.1"],\ + ["graceful-fs", "npm:4.2.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wbuf", [\ + ["npm:1.7.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wbuf-npm-1.7.3-cc9e10a084-10c0.zip/node_modules/wbuf/",\ + "packageDependencies": [\ + ["wbuf", "npm:1.7.3"],\ + ["minimalistic-assert", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["webpack", [\ + ["npm:5.93.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/webpack-npm-5.93.0-10ee698c0b-10c0.zip/node_modules/webpack/",\ + "packageDependencies": [\ + ["webpack", "npm:5.93.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0", {\ + "packageLocation": "./.yarn/__virtual__/webpack-virtual-57e6e97a40/7/.yarn/berry/cache/webpack-npm-5.93.0-10ee698c0b-10c0.zip/node_modules/webpack/",\ + "packageDependencies": [\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"],\ + ["@types/eslint-scope", "npm:3.7.7"],\ + ["@types/estree", "npm:1.0.5"],\ + ["@types/webpack-cli", null],\ + ["@webassemblyjs/ast", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-edit", "npm:1.12.1"],\ + ["@webassemblyjs/wasm-parser", "npm:1.12.1"],\ + ["acorn", "npm:8.12.1"],\ + ["acorn-import-attributes", "virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:1.9.5"],\ + ["browserslist", "npm:4.23.3"],\ + ["chrome-trace-event", "npm:1.0.4"],\ + ["enhanced-resolve", "npm:5.17.1"],\ + ["es-module-lexer", "npm:1.5.4"],\ + ["eslint-scope", "npm:5.1.1"],\ + ["events", "npm:3.3.0"],\ + ["glob-to-regexp", "npm:0.4.1"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["json-parse-even-better-errors", "npm:2.3.1"],\ + ["loader-runner", "npm:4.3.0"],\ + ["mime-types", "npm:2.1.35"],\ + ["neo-async", "npm:2.6.2"],\ + ["schema-utils", "npm:3.3.0"],\ + ["tapable", "npm:2.2.1"],\ + ["terser-webpack-plugin", "virtual:57e6e97a401d2c36e5eb483e4f4e6e60f2097cf720830968e4e045ae2d8865d721d4815b2ed7c809f6dd80a1bfa630ef6f42c79a1d7b84838451a70fa2bd8f05#npm:5.3.10"],\ + ["watchpack", "npm:2.4.1"],\ + ["webpack-cli", null],\ + ["webpack-sources", "npm:3.2.3"]\ + ],\ + "packagePeers": [\ + "@types/webpack-cli",\ + "webpack-cli"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["webpack-dev-middleware", [\ + ["npm:7.3.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/webpack-dev-middleware-npm-7.3.0-e250e9e992-10c0.zip/node_modules/webpack-dev-middleware/",\ + "packageDependencies": [\ + ["webpack-dev-middleware", "npm:7.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:7.3.0", {\ + "packageLocation": "./.yarn/__virtual__/webpack-dev-middleware-virtual-be4664cf56/7/.yarn/berry/cache/webpack-dev-middleware-npm-7.3.0-e250e9e992-10c0.zip/node_modules/webpack-dev-middleware/",\ + "packageDependencies": [\ + ["webpack-dev-middleware", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:7.3.0"],\ + ["@types/webpack", null],\ + ["colorette", "npm:2.0.20"],\ + ["memfs", "npm:4.11.1"],\ + ["mime-types", "npm:2.1.35"],\ + ["on-finished", "npm:2.4.1"],\ + ["range-parser", "npm:1.2.1"],\ + ["schema-utils", "npm:4.2.0"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"]\ + ],\ + "packagePeers": [\ + "@types/webpack",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["webpack-dev-server", [\ + ["npm:5.0.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/webpack-dev-server-npm-5.0.4-8ea5583022-10c0.zip/node_modules/webpack-dev-server/",\ + "packageDependencies": [\ + ["webpack-dev-server", "npm:5.0.4"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.4", {\ + "packageLocation": "./.yarn/__virtual__/webpack-dev-server-virtual-27b78f6170/7/.yarn/berry/cache/webpack-dev-server-npm-5.0.4-8ea5583022-10c0.zip/node_modules/webpack-dev-server/",\ + "packageDependencies": [\ + ["webpack-dev-server", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.0.4"],\ + ["@types/bonjour", "npm:3.5.13"],\ + ["@types/connect-history-api-fallback", "npm:1.5.4"],\ + ["@types/express", "npm:4.17.21"],\ + ["@types/serve-index", "npm:1.9.4"],\ + ["@types/serve-static", "npm:1.15.7"],\ + ["@types/sockjs", "npm:0.3.36"],\ + ["@types/webpack", null],\ + ["@types/webpack-cli", null],\ + ["@types/ws", "npm:8.5.12"],\ + ["ansi-html-community", "npm:0.0.8"],\ + ["bonjour-service", "npm:1.2.1"],\ + ["chokidar", "npm:3.6.0"],\ + ["colorette", "npm:2.0.20"],\ + ["compression", "npm:1.7.4"],\ + ["connect-history-api-fallback", "npm:2.0.0"],\ + ["default-gateway", "npm:6.0.3"],\ + ["express", "npm:4.19.2"],\ + ["graceful-fs", "npm:4.2.11"],\ + ["html-entities", "npm:2.5.2"],\ + ["http-proxy-middleware", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:2.0.6"],\ + ["ipaddr.js", "npm:2.2.0"],\ + ["launch-editor", "npm:2.8.1"],\ + ["open", "npm:10.1.0"],\ + ["p-retry", "npm:6.2.0"],\ + ["rimraf", "npm:5.0.10"],\ + ["schema-utils", "npm:4.2.0"],\ + ["selfsigned", "npm:2.4.1"],\ + ["serve-index", "npm:1.9.1"],\ + ["sockjs", "npm:0.3.24"],\ + ["spdy", "npm:4.0.2"],\ + ["webpack", "virtual:005260d99c804735a604256469d7f3776cac227e481a0231c9ed202de0f6f3bb71c81dfc06e0cdc5a3e38d8e04dc72b2f6dd98c37c4dadd9ccc4e90f104688e0#npm:5.93.0"],\ + ["webpack-cli", null],\ + ["webpack-dev-middleware", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:7.3.0"],\ + ["ws", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:8.18.0"]\ + ],\ + "packagePeers": [\ + "@types/webpack-cli",\ + "@types/webpack",\ + "webpack-cli",\ + "webpack"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["webpack-merge", [\ + ["npm:4.2.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/webpack-merge-npm-4.2.2-f98139a8eb-10c0.zip/node_modules/webpack-merge/",\ + "packageDependencies": [\ + ["webpack-merge", "npm:4.2.2"],\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["webpack-sources", [\ + ["npm:3.2.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/webpack-sources-npm-3.2.3-6bfb5d9563-10c0.zip/node_modules/webpack-sources/",\ + "packageDependencies": [\ + ["webpack-sources", "npm:3.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["websocket-driver", [\ + ["npm:0.7.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/websocket-driver-npm-0.7.4-a72739da70-10c0.zip/node_modules/websocket-driver/",\ + "packageDependencies": [\ + ["websocket-driver", "npm:0.7.4"],\ + ["http-parser-js", "npm:0.5.8"],\ + ["safe-buffer", "npm:5.2.1"],\ + ["websocket-extensions", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["websocket-extensions", [\ + ["npm:0.1.4", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/websocket-extensions-npm-0.1.4-be839a9e56-10c0.zip/node_modules/websocket-extensions/",\ + "packageDependencies": [\ + ["websocket-extensions", "npm:0.1.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which", [\ + ["npm:1.3.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-npm-1.3.1-f0ebb8bdd8-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["which", "npm:1.3.1"],\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:2.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["which", "npm:2.0.2"],\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-npm-4.0.0-dd31cd4928-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["which", "npm:4.0.0"],\ + ["isexe", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-boxed-primitive", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-10c0.zip/node_modules/which-boxed-primitive/",\ + "packageDependencies": [\ + ["which-boxed-primitive", "npm:1.0.2"],\ + ["is-bigint", "npm:1.0.4"],\ + ["is-boolean-object", "npm:1.1.2"],\ + ["is-number-object", "npm:1.0.7"],\ + ["is-string", "npm:1.0.7"],\ + ["is-symbol", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-module", [\ + ["npm:2.0.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-module-npm-2.0.1-90f889f6f6-10c0.zip/node_modules/which-module/",\ + "packageDependencies": [\ + ["which-module", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["which-typed-array", [\ + ["npm:1.1.15", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/which-typed-array-npm-1.1.15-91410874a2-10c0.zip/node_modules/which-typed-array/",\ + "packageDependencies": [\ + ["which-typed-array", "npm:1.1.15"],\ + ["available-typed-arrays", "npm:1.0.7"],\ + ["call-bind", "npm:1.0.7"],\ + ["for-each", "npm:0.3.3"],\ + ["gopd", "npm:1.0.1"],\ + ["has-tostringtag", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wide-align", [\ + ["npm:1.1.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wide-align-npm-1.1.3-48c7d4953c-10c0.zip/node_modules/wide-align/",\ + "packageDependencies": [\ + ["wide-align", "npm:1.1.3"],\ + ["string-width", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["word-wrap", [\ + ["npm:1.2.5", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/word-wrap-npm-1.2.5-42d00c4b09-10c0.zip/node_modules/word-wrap/",\ + "packageDependencies": [\ + ["word-wrap", "npm:1.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wordwrap", [\ + ["npm:0.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wordwrap-npm-0.0.3-ab90803074-10c0.zip/node_modules/wordwrap/",\ + "packageDependencies": [\ + ["wordwrap", "npm:0.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wordwrap-npm-1.0.0-ae57a645e8-10c0.zip/node_modules/wordwrap/",\ + "packageDependencies": [\ + ["wordwrap", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wrap-ansi", [\ + ["npm:5.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wrap-ansi-npm-5.1.0-293b407c18-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:5.1.0"],\ + ["ansi-styles", "npm:3.2.1"],\ + ["string-width", "npm:3.1.0"],\ + ["strip-ansi", "npm:5.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:7.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:7.0.0"],\ + ["ansi-styles", "npm:4.3.0"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:8.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:8.1.0"],\ + ["ansi-styles", "npm:6.2.1"],\ + ["string-width", "npm:5.1.2"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["wrappy", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/wrappy-npm-1.0.2-916de4d4b3-10c0.zip/node_modules/wrappy/",\ + "packageDependencies": [\ + ["wrappy", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["write", [\ + ["npm:1.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/write-npm-1.0.3-1bac756049-10c0.zip/node_modules/write/",\ + "packageDependencies": [\ + ["write", "npm:1.0.3"],\ + ["mkdirp", "npm:0.5.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["ws", [\ + ["npm:8.17.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ws-npm-8.17.1-f57fb24a2c-10c0.zip/node_modules/ws/",\ + "packageDependencies": [\ + ["ws", "npm:8.17.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["npm:8.18.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/ws-npm-8.18.0-56f68bc4d6-10c0.zip/node_modules/ws/",\ + "packageDependencies": [\ + ["ws", "npm:8.18.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:201f4587c39a7a192113375ce43a71e5a1567792f21ea290c6e2507b8b7c6b8980aa9b7dfc638634a990c0de35e58ff73595d82d7c5966172113abc98241545d#npm:8.17.1", {\ + "packageLocation": "./.yarn/__virtual__/ws-virtual-0af00c49b6/7/.yarn/berry/cache/ws-npm-8.17.1-f57fb24a2c-10c0.zip/node_modules/ws/",\ + "packageDependencies": [\ + ["ws", "virtual:201f4587c39a7a192113375ce43a71e5a1567792f21ea290c6e2507b8b7c6b8980aa9b7dfc638634a990c0de35e58ff73595d82d7c5966172113abc98241545d#npm:8.17.1"],\ + ["@types/bufferutil", null],\ + ["@types/utf-8-validate", null],\ + ["bufferutil", null],\ + ["utf-8-validate", null]\ + ],\ + "packagePeers": [\ + "@types/bufferutil",\ + "@types/utf-8-validate",\ + "bufferutil",\ + "utf-8-validate"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:8.18.0", {\ + "packageLocation": "./.yarn/__virtual__/ws-virtual-278ee8b793/7/.yarn/berry/cache/ws-npm-8.18.0-56f68bc4d6-10c0.zip/node_modules/ws/",\ + "packageDependencies": [\ + ["ws", "virtual:27b78f617009b26de2c72eb6a5e14a351013d34ac77e85b8d636d2a02b46beb443d2c8ec7836d0dbb93b523aa57665f888e6957262a12dd688ec95f34ce71969#npm:8.18.0"],\ + ["@types/bufferutil", null],\ + ["@types/utf-8-validate", null],\ + ["bufferutil", null],\ + ["utf-8-validate", null]\ + ],\ + "packagePeers": [\ + "@types/bufferutil",\ + "@types/utf-8-validate",\ + "bufferutil",\ + "utf-8-validate"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["y18n", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/y18n-npm-4.0.3-ced95acdbc-10c0.zip/node_modules/y18n/",\ + "packageDependencies": [\ + ["y18n", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:5.0.8", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/y18n-npm-5.0.8-5f3a0a7e62-10c0.zip/node_modules/y18n/",\ + "packageDependencies": [\ + ["y18n", "npm:5.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yallist", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yallist-npm-3.1.1-a568a556b4-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:3.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-10c0.zip/node_modules/yallist/",\ + "packageDependencies": [\ + ["yallist", "npm:4.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yargs", [\ + ["npm:13.3.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yargs-npm-13.3.2-1588f5dd4c-10c0.zip/node_modules/yargs/",\ + "packageDependencies": [\ + ["yargs", "npm:13.3.2"],\ + ["cliui", "npm:5.0.0"],\ + ["find-up", "npm:3.0.0"],\ + ["get-caller-file", "npm:2.0.5"],\ + ["require-directory", "npm:2.1.1"],\ + ["require-main-filename", "npm:2.0.0"],\ + ["set-blocking", "npm:2.0.0"],\ + ["string-width", "npm:3.1.0"],\ + ["which-module", "npm:2.0.1"],\ + ["y18n", "npm:4.0.3"],\ + ["yargs-parser", "npm:13.1.2"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:16.2.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yargs-npm-16.2.0-547873d425-10c0.zip/node_modules/yargs/",\ + "packageDependencies": [\ + ["yargs", "npm:16.2.0"],\ + ["cliui", "npm:7.0.4"],\ + ["escalade", "npm:3.1.2"],\ + ["get-caller-file", "npm:2.0.5"],\ + ["require-directory", "npm:2.1.1"],\ + ["string-width", "npm:4.2.3"],\ + ["y18n", "npm:5.0.8"],\ + ["yargs-parser", "npm:20.2.9"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yargs-parser", [\ + ["npm:13.1.2", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yargs-parser-npm-13.1.2-546b639909-10c0.zip/node_modules/yargs-parser/",\ + "packageDependencies": [\ + ["yargs-parser", "npm:13.1.2"],\ + ["camelcase", "npm:5.3.1"],\ + ["decamelize", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:20.2.9", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yargs-parser-npm-20.2.9-a1d19e598d-10c0.zip/node_modules/yargs-parser/",\ + "packageDependencies": [\ + ["yargs-parser", "npm:20.2.9"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yargs-unparser", [\ + ["npm:1.6.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yargs-unparser-npm-1.6.0-70aff5729d-10c0.zip/node_modules/yargs-unparser/",\ + "packageDependencies": [\ + ["yargs-unparser", "npm:1.6.0"],\ + ["flat", "npm:4.1.1"],\ + ["lodash", "npm:4.17.21"],\ + ["yargs", "npm:13.3.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["yocto-queue", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yocto-queue-npm-0.1.0-c6c9a7db29-10c0.zip/node_modules/yocto-queue/",\ + "packageDependencies": [\ + ["yocto-queue", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.1.1", {\ + "packageLocation": "../../../../../../.yarn/berry/cache/yocto-queue-npm-1.1.1-6bddf81a40-10c0.zip/node_modules/yocto-queue/",\ + "packageDependencies": [\ + ["yocto-queue", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]]\ + ]\ +}'; + +function $$SETUP_STATE(hydrateRuntimeState, basePath) { + return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); +} + +const fs = require('fs'); +const path = require('path'); +const crypto = require('crypto'); +const os = require('os'); +const events = require('events'); +const nodeUtils = require('util'); +const stream = require('stream'); +const zlib = require('zlib'); +const require$$0 = require('module'); +const StringDecoder = require('string_decoder'); +const url = require('url'); +const buffer = require('buffer'); +const readline = require('readline'); +const assert = require('assert'); + +const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + const n = Object.create(null); + if (e) { + for (const k in e) { + if (k !== 'default') { + const d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: () => e[k] + }); + } + } + } + n.default = e; + return Object.freeze(n); +} + +const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); +const path__default = /*#__PURE__*/_interopDefaultLegacy(path); +const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils); +const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); +const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); +const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder); +const buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer); +const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert); + +const S_IFMT = 61440; +const S_IFDIR = 16384; +const S_IFREG = 32768; +const S_IFLNK = 40960; +const SAFE_TIME = 456789e3; + +function makeError$1(code, message) { + return Object.assign(new Error(`${code}: ${message}`), { code }); +} +function EBUSY(message) { + return makeError$1(`EBUSY`, message); +} +function ENOSYS(message, reason) { + return makeError$1(`ENOSYS`, `${message}, ${reason}`); +} +function EINVAL(reason) { + return makeError$1(`EINVAL`, `invalid argument, ${reason}`); +} +function EBADF(reason) { + return makeError$1(`EBADF`, `bad file descriptor, ${reason}`); +} +function ENOENT(reason) { + return makeError$1(`ENOENT`, `no such file or directory, ${reason}`); +} +function ENOTDIR(reason) { + return makeError$1(`ENOTDIR`, `not a directory, ${reason}`); +} +function EISDIR(reason) { + return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`); +} +function EEXIST(reason) { + return makeError$1(`EEXIST`, `file already exists, ${reason}`); +} +function EROFS(reason) { + return makeError$1(`EROFS`, `read-only filesystem, ${reason}`); +} +function ENOTEMPTY(reason) { + return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`); +} +function EOPNOTSUPP(reason) { + return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`); +} +function ERR_DIR_CLOSED() { + return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`); +} + +const DEFAULT_MODE = S_IFREG | 420; +class StatEntry { + uid = 0; + gid = 0; + size = 0; + blksize = 0; + atimeMs = 0; + mtimeMs = 0; + ctimeMs = 0; + birthtimeMs = 0; + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = 0; + ino = 0; + mode = DEFAULT_MODE; + nlink = 1; + rdev = 0; + blocks = 1; + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & S_IFMT) === S_IFDIR; + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & S_IFMT) === S_IFREG; + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & S_IFMT) === S_IFLNK; + } +} +class BigIntStatsEntry { + uid = BigInt(0); + gid = BigInt(0); + size = BigInt(0); + blksize = BigInt(0); + atimeMs = BigInt(0); + mtimeMs = BigInt(0); + ctimeMs = BigInt(0); + birthtimeMs = BigInt(0); + atimeNs = BigInt(0); + mtimeNs = BigInt(0); + ctimeNs = BigInt(0); + birthtimeNs = BigInt(0); + atime = /* @__PURE__ */ new Date(0); + mtime = /* @__PURE__ */ new Date(0); + ctime = /* @__PURE__ */ new Date(0); + birthtime = /* @__PURE__ */ new Date(0); + dev = BigInt(0); + ino = BigInt(0); + mode = BigInt(DEFAULT_MODE); + nlink = BigInt(1); + rdev = BigInt(0); + blocks = BigInt(1); + isBlockDevice() { + return false; + } + isCharacterDevice() { + return false; + } + isDirectory() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR); + } + isFIFO() { + return false; + } + isFile() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG); + } + isSocket() { + return false; + } + isSymbolicLink() { + return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK); + } +} +function makeDefaultStats() { + return new StatEntry(); +} +function clearStats(stats) { + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + stats[key] = 0; + } else if (typeof element === `bigint`) { + stats[key] = BigInt(0); + } else if (nodeUtils__namespace.types.isDate(element)) { + stats[key] = /* @__PURE__ */ new Date(0); + } + } + } + return stats; +} +function convertToBigIntStats(stats) { + const bigintStats = new BigIntStatsEntry(); + for (const key in stats) { + if (Object.hasOwn(stats, key)) { + const element = stats[key]; + if (typeof element === `number`) { + bigintStats[key] = BigInt(element); + } else if (nodeUtils__namespace.types.isDate(element)) { + bigintStats[key] = new Date(element); + } + } + } + bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6); + bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6); + bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6); + bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6); + return bigintStats; +} +function areStatsEqual(a, b) { + if (a.atimeMs !== b.atimeMs) + return false; + if (a.birthtimeMs !== b.birthtimeMs) + return false; + if (a.blksize !== b.blksize) + return false; + if (a.blocks !== b.blocks) + return false; + if (a.ctimeMs !== b.ctimeMs) + return false; + if (a.dev !== b.dev) + return false; + if (a.gid !== b.gid) + return false; + if (a.ino !== b.ino) + return false; + if (a.isBlockDevice() !== b.isBlockDevice()) + return false; + if (a.isCharacterDevice() !== b.isCharacterDevice()) + return false; + if (a.isDirectory() !== b.isDirectory()) + return false; + if (a.isFIFO() !== b.isFIFO()) + return false; + if (a.isFile() !== b.isFile()) + return false; + if (a.isSocket() !== b.isSocket()) + return false; + if (a.isSymbolicLink() !== b.isSymbolicLink()) + return false; + if (a.mode !== b.mode) + return false; + if (a.mtimeMs !== b.mtimeMs) + return false; + if (a.nlink !== b.nlink) + return false; + if (a.rdev !== b.rdev) + return false; + if (a.size !== b.size) + return false; + if (a.uid !== b.uid) + return false; + const aN = a; + const bN = b; + if (aN.atimeNs !== bN.atimeNs) + return false; + if (aN.mtimeNs !== bN.mtimeNs) + return false; + if (aN.ctimeNs !== bN.ctimeNs) + return false; + if (aN.birthtimeNs !== bN.birthtimeNs) + return false; + return true; +} + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const Filename = { + home: `~`, + nodeModules: `node_modules`, + manifest: `package.json`, + lockfile: `yarn.lock`, + virtual: `__virtual__`, + /** + * @deprecated + */ + pnpJs: `.pnp.js`, + pnpCjs: `.pnp.cjs`, + pnpData: `.pnp.data.json`, + pnpEsmLoader: `.pnp.loader.mjs`, + rc: `.yarnrc.yml`, + env: `.env` +}; +const npath = Object.create(path__default.default); +const ppath = Object.create(path__default.default.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path__default.default.posix.resolve(...segments); + } else { + return path__default.default.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch (e) { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class CustomDir { + constructor(path, nextDirent, opts = {}) { + this.path = path; + this.nextDirent = nextDirent; + this.opts = opts; + } + closed = false; + throwIfClosed() { + if (this.closed) { + throw ERR_DIR_CLOSED(); + } + } + async *[Symbol.asyncIterator]() { + try { + let dirent; + while ((dirent = await this.read()) !== null) { + yield dirent; + } + } finally { + await this.close(); + } + } + read(cb) { + const dirent = this.readSync(); + if (typeof cb !== `undefined`) + return cb(null, dirent); + return Promise.resolve(dirent); + } + readSync() { + this.throwIfClosed(); + return this.nextDirent(); + } + close(cb) { + this.closeSync(); + if (typeof cb !== `undefined`) + return cb(null); + return Promise.resolve(); + } + closeSync() { + this.throwIfClosed(); + this.opts.onClose?.(); + this.closed = true; + } +} +function opendir(fakeFs, path, entries, opts) { + const nextDirent = () => { + const filename = entries.shift(); + if (typeof filename === `undefined`) + return null; + const entryPath = fakeFs.pathUtils.join(path, filename); + return Object.assign(fakeFs.statSync(entryPath), { + name: filename, + path: void 0 + }); + }; + return new CustomDir(path, nextDirent, opts); +} + +function assertStatus(current, expected) { + if (current !== expected) { + throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`); + } +} +class CustomStatWatcher extends events.EventEmitter { + fakeFs; + path; + bigint; + status = "ready" /* Ready */; + changeListeners = /* @__PURE__ */ new Map(); + lastStats; + startTimeout = null; + static create(fakeFs, path, opts) { + const statWatcher = new CustomStatWatcher(fakeFs, path, opts); + statWatcher.start(); + return statWatcher; + } + constructor(fakeFs, path, { bigint = false } = {}) { + super(); + this.fakeFs = fakeFs; + this.path = path; + this.bigint = bigint; + this.lastStats = this.stat(); + } + start() { + assertStatus(this.status, "ready" /* Ready */); + this.status = "running" /* Running */; + this.startTimeout = setTimeout(() => { + this.startTimeout = null; + if (!this.fakeFs.existsSync(this.path)) { + this.emit("change" /* Change */, this.lastStats, this.lastStats); + } + }, 3); + } + stop() { + assertStatus(this.status, "running" /* Running */); + this.status = "stopped" /* Stopped */; + if (this.startTimeout !== null) { + clearTimeout(this.startTimeout); + this.startTimeout = null; + } + this.emit("stop" /* Stop */); + } + stat() { + try { + return this.fakeFs.statSync(this.path, { bigint: this.bigint }); + } catch (error) { + const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry(); + return clearStats(statInstance); + } + } + /** + * Creates an interval whose callback compares the current stats with the previous stats and notifies all listeners in case of changes. + * + * @param opts.persistent Decides whether the interval should be immediately unref-ed. + */ + makeInterval(opts) { + const interval = setInterval(() => { + const currentStats = this.stat(); + const previousStats = this.lastStats; + if (areStatsEqual(currentStats, previousStats)) + return; + this.lastStats = currentStats; + this.emit("change" /* Change */, currentStats, previousStats); + }, opts.interval); + return opts.persistent ? interval : interval.unref(); + } + /** + * Registers a listener and assigns it an interval. + */ + registerChangeListener(listener, opts) { + this.addListener("change" /* Change */, listener); + this.changeListeners.set(listener, this.makeInterval(opts)); + } + /** + * Unregisters the listener and clears the assigned interval. + */ + unregisterChangeListener(listener) { + this.removeListener("change" /* Change */, listener); + const interval = this.changeListeners.get(listener); + if (typeof interval !== `undefined`) + clearInterval(interval); + this.changeListeners.delete(listener); + } + /** + * Unregisters all listeners and clears all assigned intervals. + */ + unregisterAllChangeListeners() { + for (const listener of this.changeListeners.keys()) { + this.unregisterChangeListener(listener); + } + } + hasChangeListeners() { + return this.changeListeners.size > 0; + } + /** + * Refs all stored intervals. + */ + ref() { + for (const interval of this.changeListeners.values()) + interval.ref(); + return this; + } + /** + * Unrefs all stored intervals. + */ + unref() { + for (const interval of this.changeListeners.values()) + interval.unref(); + return this; + } +} + +const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap(); +function watchFile(fakeFs, path, a, b) { + let bigint; + let persistent; + let interval; + let listener; + switch (typeof a) { + case `function`: + { + bigint = false; + persistent = true; + interval = 5007; + listener = a; + } + break; + default: + { + ({ + bigint = false, + persistent = true, + interval = 5007 + } = a); + listener = b; + } + break; + } + let statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map()); + let statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) { + statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint }); + statWatchers.set(path, statWatcher); + } + statWatcher.registerChangeListener(listener, { persistent, interval }); + return statWatcher; +} +function unwatchFile(fakeFs, path, cb) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + const statWatcher = statWatchers.get(path); + if (typeof statWatcher === `undefined`) + return; + if (typeof cb === `undefined`) + statWatcher.unregisterAllChangeListeners(); + else + statWatcher.unregisterChangeListener(cb); + if (!statWatcher.hasChangeListeners()) { + statWatcher.stop(); + statWatchers.delete(path); + } +} +function unwatchAllFiles(fakeFs) { + const statWatchers = statWatchersByFakeFS.get(fakeFs); + if (typeof statWatchers === `undefined`) + return; + for (const path of statWatchers.keys()) { + unwatchFile(fakeFs, path); + } +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = crypto.createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch (error) { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch (error) { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch (error) { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch (error) { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch (error) { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch (error) { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch (error2) { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch (error) { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return os.EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs__default.default) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const MOUNT_MASK = 4278190080; +class MountFS extends BasePortableFakeFS { + baseFs; + mountInstances; + fdMap = /* @__PURE__ */ new Map(); + nextFd = 3; + factoryPromise; + factorySync; + filter; + getMountPoint; + magic; + maxAge; + maxOpenFiles; + typeCheck; + isMount = /* @__PURE__ */ new Set(); + notMount = /* @__PURE__ */ new Set(); + realPaths = /* @__PURE__ */ new Map(); + constructor({ baseFs = new NodeFS(), filter = null, magicByte = 42, maxOpenFiles = Infinity, useCache = true, maxAge = 5e3, typeCheck = fs.constants.S_IFREG, getMountPoint, factoryPromise, factorySync }) { + if (Math.floor(magicByte) !== magicByte || !(magicByte > 1 && magicByte <= 127)) + throw new Error(`The magic byte must be set to a round value between 1 and 127 included`); + super(); + this.baseFs = baseFs; + this.mountInstances = useCache ? /* @__PURE__ */ new Map() : null; + this.factoryPromise = factoryPromise; + this.factorySync = factorySync; + this.filter = filter; + this.getMountPoint = getMountPoint; + this.magic = magicByte << 24; + this.maxAge = maxAge; + this.maxOpenFiles = maxOpenFiles; + this.typeCheck = typeCheck; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + saveAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + } + } + } + discardAndClose() { + unwatchAllFiles(this); + if (this.mountInstances) { + for (const [path, { childFs }] of this.mountInstances.entries()) { + childFs.discardAndClose?.(); + this.mountInstances.delete(path); + } + } + } + resolve(p) { + return this.baseFs.resolve(p); + } + remapFd(mountFs, fd) { + const remappedFd = this.nextFd++ | this.magic; + this.fdMap.set(remappedFd, [mountFs, fd]); + return remappedFd; + } + async openPromise(p, flags, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.openPromise(p, flags, mode); + }, async (mountFs, { subPath }) => { + return this.remapFd(mountFs, await mountFs.openPromise(subPath, flags, mode)); + }); + } + openSync(p, flags, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.openSync(p, flags, mode); + }, (mountFs, { subPath }) => { + return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode)); + }); + } + async opendirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.opendirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.opendirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + opendirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.opendirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.opendirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readPromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const [mountFs, realFd] = entry; + return await mountFs.readPromise(realFd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.readSync(fd, buffer, offset, length, position); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`readSync`); + const [mountFs, realFd] = entry; + return mountFs.readSync(realFd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`write`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return await mountFs.writePromise(realFd, buffer, offset); + } else { + return await mountFs.writePromise(realFd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if ((fd & MOUNT_MASK) !== this.magic) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`writeSync`); + const [mountFs, realFd] = entry; + if (typeof buffer === `string`) { + return mountFs.writeSync(realFd, buffer, offset); + } else { + return mountFs.writeSync(realFd, buffer, offset, length, position); + } + } + async closePromise(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return await this.baseFs.closePromise(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`close`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return await mountFs.closePromise(realFd); + } + closeSync(fd) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.closeSync(fd); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`closeSync`); + this.fdMap.delete(fd); + const [mountFs, realFd] = entry; + return mountFs.closeSync(realFd); + } + createReadStream(p, opts) { + if (p === null) + return this.baseFs.createReadStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createReadStream(p, opts); + }, (mountFs, { archivePath, subPath }) => { + const stream = mountFs.createReadStream(subPath, opts); + stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath)); + return stream; + }); + } + createWriteStream(p, opts) { + if (p === null) + return this.baseFs.createWriteStream(p, opts); + return this.makeCallSync(p, () => { + return this.baseFs.createWriteStream(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.createWriteStream(subPath, opts); + }); + } + async realpathPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.realpathPromise(p); + }, async (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = await this.baseFs.realpathPromise(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await mountFs.realpathPromise(subPath))); + }); + } + realpathSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.realpathSync(p); + }, (mountFs, { archivePath, subPath }) => { + let realArchivePath = this.realPaths.get(archivePath); + if (typeof realArchivePath === `undefined`) { + realArchivePath = this.baseFs.realpathSync(archivePath); + this.realPaths.set(archivePath, realArchivePath); + } + return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, mountFs.realpathSync(subPath))); + }); + } + async existsPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.existsPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.existsPromise(subPath); + }); + } + existsSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.existsSync(p); + }, (mountFs, { subPath }) => { + return mountFs.existsSync(subPath); + }); + } + async accessPromise(p, mode) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.accessPromise(p, mode); + }, async (mountFs, { subPath }) => { + return await mountFs.accessPromise(subPath, mode); + }); + } + accessSync(p, mode) { + return this.makeCallSync(p, () => { + return this.baseFs.accessSync(p, mode); + }, (mountFs, { subPath }) => { + return mountFs.accessSync(subPath, mode); + }); + } + async statPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.statPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.statPromise(subPath, opts); + }); + } + statSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.statSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.statSync(subPath, opts); + }); + } + async fstatPromise(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatPromise(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstat`); + const [mountFs, realFd] = entry; + return mountFs.fstatPromise(realFd, opts); + } + fstatSync(fd, opts) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fstatSync(fd, opts); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const [mountFs, realFd] = entry; + return mountFs.fstatSync(realFd, opts); + } + async lstatPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lstatPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.lstatPromise(subPath, opts); + }); + } + lstatSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.lstatSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.lstatSync(subPath, opts); + }); + } + async fchmodPromise(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodPromise(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmod`); + const [mountFs, realFd] = entry; + return mountFs.fchmodPromise(realFd, mask); + } + fchmodSync(fd, mask) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchmodSync(fd, mask); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchmodSync`); + const [mountFs, realFd] = entry; + return mountFs.fchmodSync(realFd, mask); + } + async chmodPromise(p, mask) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chmodPromise(p, mask); + }, async (mountFs, { subPath }) => { + return await mountFs.chmodPromise(subPath, mask); + }); + } + chmodSync(p, mask) { + return this.makeCallSync(p, () => { + return this.baseFs.chmodSync(p, mask); + }, (mountFs, { subPath }) => { + return mountFs.chmodSync(subPath, mask); + }); + } + async fchownPromise(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownPromise(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchown`); + const [zipFs, realFd] = entry; + return zipFs.fchownPromise(realFd, uid, gid); + } + fchownSync(fd, uid, gid) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.fchownSync(fd, uid, gid); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fchownSync`); + const [zipFs, realFd] = entry; + return zipFs.fchownSync(realFd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.chownPromise(p, uid, gid); + }, async (mountFs, { subPath }) => { + return await mountFs.chownPromise(subPath, uid, gid); + }); + } + chownSync(p, uid, gid) { + return this.makeCallSync(p, () => { + return this.baseFs.chownSync(p, uid, gid); + }, (mountFs, { subPath }) => { + return mountFs.chownSync(subPath, uid, gid); + }); + } + async renamePromise(oldP, newP) { + return await this.makeCallPromise(oldP, async () => { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.renamePromise(oldP, newP); + }, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, async (mountFsO, { subPath: subPathO }) => { + return await this.makeCallPromise(newP, async () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, async (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return await mountFsO.renamePromise(subPathO, subPathN); + } + }); + }); + } + renameSync(oldP, newP) { + return this.makeCallSync(oldP, () => { + return this.makeCallSync(newP, () => { + return this.baseFs.renameSync(oldP, newP); + }, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }); + }, (mountFsO, { subPath: subPathO }) => { + return this.makeCallSync(newP, () => { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + }, (mountFsN, { subPath: subPathN }) => { + if (mountFsO !== mountFsN) { + throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); + } else { + return mountFsO.renameSync(subPathO, subPathN); + } + }); + }); + } + async copyFilePromise(sourceP, destP, flags = 0) { + const fallback = async (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = await sourceFs.readFilePromise(sourceP2); + } catch (error) { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + await destFs.writeFilePromise(destP2, content); + }; + return await this.makeCallPromise(sourceP, async () => { + return await this.makeCallPromise(destP, async () => { + return await this.baseFs.copyFilePromise(sourceP, destP, flags); + }, async (mountFsD, { subPath: subPathD }) => { + return await fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, async (mountFsS, { subPath: subPathS }) => { + return await this.makeCallPromise(destP, async () => { + return await fallback(mountFsS, subPathS, this.baseFs, destP); + }, async (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return await fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return await mountFsS.copyFilePromise(subPathS, subPathD, flags); + } + }); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + const fallback = (sourceFs, sourceP2, destFs, destP2) => { + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); + if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2)) + throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); + let content; + try { + content = sourceFs.readFileSync(sourceP2); + } catch (error) { + throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); + } + destFs.writeFileSync(destP2, content); + }; + return this.makeCallSync(sourceP, () => { + return this.makeCallSync(destP, () => { + return this.baseFs.copyFileSync(sourceP, destP, flags); + }, (mountFsD, { subPath: subPathD }) => { + return fallback(this.baseFs, sourceP, mountFsD, subPathD); + }); + }, (mountFsS, { subPath: subPathS }) => { + return this.makeCallSync(destP, () => { + return fallback(mountFsS, subPathS, this.baseFs, destP); + }, (mountFsD, { subPath: subPathD }) => { + if (mountFsS !== mountFsD) { + return fallback(mountFsS, subPathS, mountFsD, subPathD); + } else { + return mountFsS.copyFileSync(subPathS, subPathD, flags); + } + }); + }); + } + async appendFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.appendFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.appendFilePromise(subPath, content, opts); + }); + } + appendFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.appendFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.appendFileSync(subPath, content, opts); + }); + } + async writeFilePromise(p, content, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.writeFilePromise(p, content, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.writeFilePromise(subPath, content, opts); + }); + } + writeFileSync(p, content, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.writeFileSync(p, content, opts); + }, (mountFs, { subPath }) => { + return mountFs.writeFileSync(subPath, content, opts); + }); + } + async unlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.unlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.unlinkPromise(subPath); + }); + } + unlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.unlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.unlinkSync(subPath); + }); + } + async utimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.utimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.utimesPromise(subPath, atime, mtime); + }); + } + utimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.utimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.utimesSync(subPath, atime, mtime); + }); + } + async lutimesPromise(p, atime, mtime) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.lutimesPromise(p, atime, mtime); + }, async (mountFs, { subPath }) => { + return await mountFs.lutimesPromise(subPath, atime, mtime); + }); + } + lutimesSync(p, atime, mtime) { + return this.makeCallSync(p, () => { + return this.baseFs.lutimesSync(p, atime, mtime); + }, (mountFs, { subPath }) => { + return mountFs.lutimesSync(subPath, atime, mtime); + }); + } + async mkdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.mkdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.mkdirPromise(subPath, opts); + }); + } + mkdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.mkdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.mkdirSync(subPath, opts); + }); + } + async rmdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmdirPromise(subPath, opts); + }); + } + rmdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmdirSync(subPath, opts); + }); + } + async rmPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.rmPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.rmPromise(subPath, opts); + }); + } + rmSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.rmSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.rmSync(subPath, opts); + }); + } + async linkPromise(existingP, newP) { + return await this.makeCallPromise(newP, async () => { + return await this.baseFs.linkPromise(existingP, newP); + }, async (mountFs, { subPath }) => { + return await mountFs.linkPromise(existingP, subPath); + }); + } + linkSync(existingP, newP) { + return this.makeCallSync(newP, () => { + return this.baseFs.linkSync(existingP, newP); + }, (mountFs, { subPath }) => { + return mountFs.linkSync(existingP, subPath); + }); + } + async symlinkPromise(target, p, type) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.symlinkPromise(target, p, type); + }, async (mountFs, { subPath }) => { + return await mountFs.symlinkPromise(target, subPath); + }); + } + symlinkSync(target, p, type) { + return this.makeCallSync(p, () => { + return this.baseFs.symlinkSync(target, p, type); + }, (mountFs, { subPath }) => { + return mountFs.symlinkSync(target, subPath); + }); + } + async readFilePromise(p, encoding) { + return this.makeCallPromise(p, async () => { + return await this.baseFs.readFilePromise(p, encoding); + }, async (mountFs, { subPath }) => { + return await mountFs.readFilePromise(subPath, encoding); + }); + } + readFileSync(p, encoding) { + return this.makeCallSync(p, () => { + return this.baseFs.readFileSync(p, encoding); + }, (mountFs, { subPath }) => { + return mountFs.readFileSync(subPath, encoding); + }); + } + async readdirPromise(p, opts) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readdirPromise(p, opts); + }, async (mountFs, { subPath }) => { + return await mountFs.readdirPromise(subPath, opts); + }, { + requireSubpath: false + }); + } + readdirSync(p, opts) { + return this.makeCallSync(p, () => { + return this.baseFs.readdirSync(p, opts); + }, (mountFs, { subPath }) => { + return mountFs.readdirSync(subPath, opts); + }, { + requireSubpath: false + }); + } + async readlinkPromise(p) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.readlinkPromise(p); + }, async (mountFs, { subPath }) => { + return await mountFs.readlinkPromise(subPath); + }); + } + readlinkSync(p) { + return this.makeCallSync(p, () => { + return this.baseFs.readlinkSync(p); + }, (mountFs, { subPath }) => { + return mountFs.readlinkSync(subPath); + }); + } + async truncatePromise(p, len) { + return await this.makeCallPromise(p, async () => { + return await this.baseFs.truncatePromise(p, len); + }, async (mountFs, { subPath }) => { + return await mountFs.truncatePromise(subPath, len); + }); + } + truncateSync(p, len) { + return this.makeCallSync(p, () => { + return this.baseFs.truncateSync(p, len); + }, (mountFs, { subPath }) => { + return mountFs.truncateSync(subPath, len); + }); + } + async ftruncatePromise(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncatePromise(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncate`); + const [mountFs, realFd] = entry; + return mountFs.ftruncatePromise(realFd, len); + } + ftruncateSync(fd, len) { + if ((fd & MOUNT_MASK) !== this.magic) + return this.baseFs.ftruncateSync(fd, len); + const entry = this.fdMap.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`ftruncateSync`); + const [mountFs, realFd] = entry; + return mountFs.ftruncateSync(realFd, len); + } + watch(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watch( + p, + // @ts-expect-error + a, + b + ); + }, (mountFs, { subPath }) => { + return mountFs.watch( + subPath, + // @ts-expect-error + a, + b + ); + }); + } + watchFile(p, a, b) { + return this.makeCallSync(p, () => { + return this.baseFs.watchFile( + p, + // @ts-expect-error + a, + b + ); + }, () => { + return watchFile(this, p, a, b); + }); + } + unwatchFile(p, cb) { + return this.makeCallSync(p, () => { + return this.baseFs.unwatchFile(p, cb); + }, () => { + return unwatchFile(this, p, cb); + }); + } + async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return await discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return await discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return await discard(); + return await this.getMountPromise(mountInfo.archivePath, async (mountFs) => await accept(mountFs, mountInfo)); + } + makeCallSync(p, discard, accept, { requireSubpath = true } = {}) { + if (typeof p !== `string`) + return discard(); + const normalizedP = this.resolve(p); + const mountInfo = this.findMount(normalizedP); + if (!mountInfo) + return discard(); + if (requireSubpath && mountInfo.subPath === `/`) + return discard(); + return this.getMountSync(mountInfo.archivePath, (mountFs) => accept(mountFs, mountInfo)); + } + findMount(p) { + if (this.filter && !this.filter.test(p)) + return null; + let filePath = ``; + while (true) { + const pathPartWithArchive = p.substring(filePath.length); + const mountPoint = this.getMountPoint(pathPartWithArchive, filePath); + if (!mountPoint) + return null; + filePath = this.pathUtils.join(filePath, mountPoint); + if (!this.isMount.has(filePath)) { + if (this.notMount.has(filePath)) + continue; + try { + if (this.typeCheck !== null && (this.baseFs.lstatSync(filePath).mode & fs.constants.S_IFMT) !== this.typeCheck) { + this.notMount.add(filePath); + continue; + } + } catch { + return null; + } + this.isMount.add(filePath); + } + return { + archivePath: filePath, + subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length)) + }; + } + } + limitOpenFilesTimeout = null; + limitOpenFiles(max) { + if (this.mountInstances === null) + return; + const now = Date.now(); + let nextExpiresAt = now + this.maxAge; + let closeCount = max === null ? 0 : this.mountInstances.size - max; + for (const [path, { childFs, expiresAt, refCount }] of this.mountInstances.entries()) { + if (refCount !== 0 || childFs.hasOpenFileHandles?.()) { + continue; + } else if (now >= expiresAt) { + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + continue; + } else if (max === null || closeCount <= 0) { + nextExpiresAt = expiresAt; + break; + } + childFs.saveAndClose?.(); + this.mountInstances.delete(path); + closeCount -= 1; + } + if (this.limitOpenFilesTimeout === null && (max === null && this.mountInstances.size > 0 || max !== null) && isFinite(nextExpiresAt)) { + this.limitOpenFilesTimeout = setTimeout(() => { + this.limitOpenFilesTimeout = null; + this.limitOpenFiles(null); + }, nextExpiresAt - now).unref(); + } + } + async getMountPromise(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + const createFsInstance = await this.factoryPromise(this.baseFs, p); + cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: createFsInstance(), + expiresAt: 0, + refCount: 0 + }; + } + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + cachedMountFs.refCount += 1; + try { + return await accept(cachedMountFs.childFs); + } finally { + cachedMountFs.refCount -= 1; + } + } else { + const mountFs = (await this.factoryPromise(this.baseFs, p))(); + try { + return await accept(mountFs); + } finally { + mountFs.saveAndClose?.(); + } + } + } + getMountSync(p, accept) { + if (this.mountInstances) { + let cachedMountFs = this.mountInstances.get(p); + if (!cachedMountFs) { + cachedMountFs = { + childFs: this.factorySync(this.baseFs, p), + expiresAt: 0, + refCount: 0 + }; + } + this.mountInstances.delete(p); + this.limitOpenFiles(this.maxOpenFiles - 1); + this.mountInstances.set(p, cachedMountFs); + cachedMountFs.expiresAt = Date.now() + this.maxAge; + return accept(cachedMountFs.childFs); + } else { + const childFs = this.factorySync(this.baseFs, p); + try { + return accept(childFs); + } finally { + childFs.saveAndClose?.(); + } + } + } +} + +class PosixFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return npath.fromPortablePath(path); + } + mapToBase(path) { + return npath.toPortablePath(path); + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? url.URL : globalThis.URL; + +class NodePathFS extends ProxiedFS { + baseFs; + constructor(baseFs) { + super(npath); + this.baseFs = baseFs; + } + mapFromBase(path) { + return path; + } + mapToBase(path) { + if (typeof path === `string`) + return path; + if (path instanceof URL) + return url.fileURLToPath(path); + if (Buffer.isBuffer(path)) { + const str = path.toString(); + if (!isUtf8(path, str)) + throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`); + return str; + } + throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`); + } +} +function isUtf8(buf, str) { + if (typeof buffer__default.default.isUtf8 !== `undefined`) + return buffer__default.default.isUtf8(buf); + return Buffer.byteLength(str) === buf.byteLength; +} + +const kBaseFs = Symbol(`kBaseFs`); +const kFd = Symbol(`kFd`); +const kClosePromise = Symbol(`kClosePromise`); +const kCloseResolve = Symbol(`kCloseResolve`); +const kCloseReject = Symbol(`kCloseReject`); +const kRefs = Symbol(`kRefs`); +const kRef = Symbol(`kRef`); +const kUnref = Symbol(`kUnref`); +class FileHandle { + [kBaseFs]; + [kFd]; + [kRefs] = 1; + [kClosePromise] = void 0; + [kCloseResolve] = void 0; + [kCloseReject] = void 0; + constructor(fd, baseFs) { + this[kBaseFs] = baseFs; + this[kFd] = fd; + } + get fd() { + return this[kFd]; + } + async appendFile(data, options) { + try { + this[kRef](this.appendFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0); + } finally { + this[kUnref](); + } + } + async chown(uid, gid) { + try { + this[kRef](this.chown); + return await this[kBaseFs].fchownPromise(this.fd, uid, gid); + } finally { + this[kUnref](); + } + } + async chmod(mode) { + try { + this[kRef](this.chmod); + return await this[kBaseFs].fchmodPromise(this.fd, mode); + } finally { + this[kUnref](); + } + } + createReadStream(options) { + return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd }); + } + createWriteStream(options) { + return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd }); + } + // FIXME: Missing FakeFS version + datasync() { + throw new Error(`Method not implemented.`); + } + // FIXME: Missing FakeFS version + sync() { + throw new Error(`Method not implemented.`); + } + async read(bufferOrOptions, offset, length, position) { + try { + this[kRef](this.read); + let buffer; + if (!Buffer.isBuffer(bufferOrOptions)) { + bufferOrOptions ??= {}; + buffer = bufferOrOptions.buffer ?? Buffer.alloc(16384); + offset = bufferOrOptions.offset || 0; + length = bufferOrOptions.length ?? buffer.byteLength; + position = bufferOrOptions.position ?? null; + } else { + buffer = bufferOrOptions; + } + offset ??= 0; + length ??= 0; + if (length === 0) { + return { + bytesRead: length, + buffer + }; + } + const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position); + return { + bytesRead, + buffer + }; + } finally { + this[kUnref](); + } + } + async readFile(options) { + try { + this[kRef](this.readFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + return await this[kBaseFs].readFilePromise(this.fd, encoding); + } finally { + this[kUnref](); + } + } + readLines(options) { + return readline.createInterface({ + input: this.createReadStream(options), + crlfDelay: Infinity + }); + } + async stat(opts) { + try { + this[kRef](this.stat); + return await this[kBaseFs].fstatPromise(this.fd, opts); + } finally { + this[kUnref](); + } + } + async truncate(len) { + try { + this[kRef](this.truncate); + return await this[kBaseFs].ftruncatePromise(this.fd, len); + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + utimes(atime, mtime) { + throw new Error(`Method not implemented.`); + } + async writeFile(data, options) { + try { + this[kRef](this.writeFile); + const encoding = (typeof options === `string` ? options : options?.encoding) ?? void 0; + await this[kBaseFs].writeFilePromise(this.fd, data, encoding); + } finally { + this[kUnref](); + } + } + async write(...args) { + try { + this[kRef](this.write); + if (ArrayBuffer.isView(args[0])) { + const [buffer, offset, length, position] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset ?? void 0, length ?? void 0, position ?? void 0); + return { bytesWritten, buffer }; + } else { + const [data, position, encoding] = args; + const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding); + return { bytesWritten, buffer: data }; + } + } finally { + this[kUnref](); + } + } + // TODO: Use writev from FakeFS when that is implemented + async writev(buffers, position) { + try { + this[kRef](this.writev); + let bytesWritten = 0; + if (typeof position !== `undefined`) { + for (const buffer of buffers) { + const writeResult = await this.write(buffer, void 0, void 0, position); + bytesWritten += writeResult.bytesWritten; + position += writeResult.bytesWritten; + } + } else { + for (const buffer of buffers) { + const writeResult = await this.write(buffer); + bytesWritten += writeResult.bytesWritten; + } + } + return { + buffers, + bytesWritten + }; + } finally { + this[kUnref](); + } + } + // FIXME: Missing FakeFS version + readv(buffers, position) { + throw new Error(`Method not implemented.`); + } + close() { + if (this[kFd] === -1) return Promise.resolve(); + if (this[kClosePromise]) return this[kClosePromise]; + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => { + this[kClosePromise] = void 0; + }); + } else { + this[kClosePromise] = new Promise((resolve, reject) => { + this[kCloseResolve] = resolve; + this[kCloseReject] = reject; + }).finally(() => { + this[kClosePromise] = void 0; + this[kCloseReject] = void 0; + this[kCloseResolve] = void 0; + }); + } + return this[kClosePromise]; + } + [kRef](caller) { + if (this[kFd] === -1) { + const err = new Error(`file closed`); + err.code = `EBADF`; + err.syscall = caller.name; + throw err; + } + this[kRefs]++; + } + [kUnref]() { + this[kRefs]--; + if (this[kRefs] === 0) { + const fd = this[kFd]; + this[kFd] = -1; + this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]); + } + } +} + +const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessSync`, + `appendFileSync`, + `createReadStream`, + `createWriteStream`, + `chmodSync`, + `fchmodSync`, + `chownSync`, + `fchownSync`, + `closeSync`, + `copyFileSync`, + `linkSync`, + `lstatSync`, + `fstatSync`, + `lutimesSync`, + `mkdirSync`, + `openSync`, + `opendirSync`, + `readlinkSync`, + `readFileSync`, + `readdirSync`, + `readlinkSync`, + `realpathSync`, + `renameSync`, + `rmdirSync`, + `rmSync`, + `statSync`, + `symlinkSync`, + `truncateSync`, + `ftruncateSync`, + `unlinkSync`, + `unwatchFile`, + `utimesSync`, + `watch`, + `watchFile`, + `writeFileSync`, + `writeSync` +]); +const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ + `accessPromise`, + `appendFilePromise`, + `fchmodPromise`, + `chmodPromise`, + `fchownPromise`, + `chownPromise`, + `closePromise`, + `copyFilePromise`, + `linkPromise`, + `fstatPromise`, + `lstatPromise`, + `lutimesPromise`, + `mkdirPromise`, + `openPromise`, + `opendirPromise`, + `readdirPromise`, + `realpathPromise`, + `readFilePromise`, + `readdirPromise`, + `readlinkPromise`, + `renamePromise`, + `rmdirPromise`, + `rmPromise`, + `statPromise`, + `symlinkPromise`, + `truncatePromise`, + `ftruncatePromise`, + `unlinkPromise`, + `utimesPromise`, + `writeFilePromise`, + `writeSync` +]); +function patchFs(patchedFs, fakeFs) { + fakeFs = new NodePathFS(fakeFs); + const setupFn = (target, name, replacement) => { + const orig = target[name]; + target[name] = replacement; + if (typeof orig?.[nodeUtils.promisify.custom] !== `undefined`) { + replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom]; + } + }; + { + setupFn(patchedFs, `exists`, (p, ...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeFs.existsPromise(p).then((exists) => { + callback(exists); + }, () => { + callback(false); + }); + }); + }); + setupFn(patchedFs, `read`, (...args) => { + let [fd, buffer, offset, length, position, callback] = args; + if (args.length <= 3) { + let options = {}; + if (args.length < 3) { + callback = args[1]; + } else { + options = args[1]; + callback = args[2]; + } + ({ + buffer = Buffer.alloc(16384), + offset = 0, + length = buffer.byteLength, + position + } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) { + process.nextTick(() => { + callback(null, 0, buffer); + }); + return; + } + if (position == null) + position = -1; + process.nextTick(() => { + fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => { + callback(null, bytesRead, buffer); + }, (error) => { + callback(error, 0, buffer); + }); + }); + }); + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + const wrapper = (...args) => { + const hasCallback = typeof args[args.length - 1] === `function`; + const callback = hasCallback ? args.pop() : () => { + }; + process.nextTick(() => { + fakeImpl.apply(fakeFs, args).then((result) => { + callback(null, result); + }, (error) => { + callback(error); + }); + }); + }; + setupFn(patchedFs, origName, wrapper); + } + patchedFs.realpath.native = patchedFs.realpath; + } + { + setupFn(patchedFs, `existsSync`, (p) => { + try { + return fakeFs.existsSync(p); + } catch (error) { + return false; + } + }); + setupFn(patchedFs, `readSync`, (...args) => { + let [fd, buffer, offset, length, position] = args; + if (args.length <= 3) { + const options = args[2] || {}; + ({ offset = 0, length = buffer.byteLength, position } = options); + } + if (offset == null) + offset = 0; + length |= 0; + if (length === 0) + return 0; + if (position == null) + position = -1; + return fakeFs.readSync(fd, buffer, offset, length, position); + }); + for (const fnName of SYNC_IMPLEMENTATIONS) { + const origName = fnName; + if (typeof patchedFs[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + setupFn(patchedFs, origName, fakeImpl.bind(fakeFs)); + } + patchedFs.realpathSync.native = patchedFs.realpathSync; + } + { + const patchedFsPromises = patchedFs.promises; + for (const fnName of ASYNC_IMPLEMENTATIONS) { + const origName = fnName.replace(/Promise$/, ``); + if (typeof patchedFsPromises[origName] === `undefined`) + continue; + const fakeImpl = fakeFs[fnName]; + if (typeof fakeImpl === `undefined`) + continue; + if (fnName === `open`) + continue; + setupFn(patchedFsPromises, origName, (pathLike, ...args) => { + if (pathLike instanceof FileHandle) { + return pathLike[origName].apply(pathLike, args); + } else { + return fakeImpl.call(fakeFs, pathLike, ...args); + } + }); + } + setupFn(patchedFsPromises, `open`, async (...args) => { + const fd = await fakeFs.openPromise(...args); + return new FileHandle(fd, fakeFs); + }); + } + { + patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.readPromise(fd, buffer, ...args); + return { bytesRead: await res, buffer }; + }; + patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { + const res = fakeFs.writePromise(fd, buffer, ...args); + return { bytesWritten: await res, buffer }; + }; + } +} + +let cachedInstance; +let registeredFactory = () => { + throw new Error(`Assertion failed: No libzip instance is available, and no factory was configured`); +}; +function setFactory(factory) { + registeredFactory = factory; +} +function getInstance() { + if (typeof cachedInstance === `undefined`) + cachedInstance = registeredFactory(); + return cachedInstance; +} + +var libzipSync = {exports: {}}; + +(function (module, exports) { +var frozenFs = Object.assign({}, fs__default.default); +var createModule = function() { + var _scriptDir = void 0; + if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; + return function(createModule2) { + createModule2 = createModule2 || {}; + var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readBinary; + var nodeFS; + var nodePath; + { + { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + var ret = tryParseAsDataURI(filename); + if (ret) { + return binary ? ret : ret.toString(); + } + if (!nodeFS) nodeFS = frozenFs; + if (!nodePath) nodePath = path__default.default; + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + process["argv"][1].replace(/\\/g, "/"); + } + process["argv"].slice(2); + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } + Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) ; + if (Module["thisProgram"]) ; + if (Module["quit"]) ; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + switch (type) { + case "i1": + return HEAP8[ptr >> 0]; + case "i8": + return HEAP8[ptr >> 0]; + case "i16": + return LE_HEAP_LOAD_I16((ptr >> 1) * 2); + case "i32": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "i64": + return LE_HEAP_LOAD_I32((ptr >> 2) * 4); + case "float": + return LE_HEAP_LOAD_F32((ptr >> 2) * 4); + case "double": + return LE_HEAP_LOAD_F64((ptr >> 3) * 8); + default: + abort("invalid type for getValue: " + type); + } + return null; + } + var wasmMemory; + var ABORT = false; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func = Module["_" + ident]; + assert( + func, + "Cannot call unknown function " + ident + ", make sure it is exported" + ); + return func; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, + array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + } + }; + function convertReturnValue(ret2) { + if (returnType === "string") return UTF8ToString(ret2); + if (returnType === "boolean") return Boolean(ret2); + return ret2; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments); + }; + } + var UTF8Decoder = new TextDecoder("utf8"); + function UTF8ToString(ptr, maxBytesToRead) { + if (!ptr) return ""; + var maxPtr = ptr + maxBytesToRead; + for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; ) ++end; + return UTF8Decoder.decode(HEAPU8.subarray(ptr, end)); + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; + else if (u <= 2047) len += 2; + else if (u <= 65535) len += 3; + else len += 4; + } + return len; + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function writeArrayToMemory(array, buffer2) { + HEAP8.set(array, buffer2); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer, HEAP8, HEAPU8; + var HEAP_DATA_VIEW; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf); + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = new Int16Array(buf); + Module["HEAP32"] = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = new Uint16Array(buf); + Module["HEAPU32"] = new Uint32Array(buf); + Module["HEAPF32"] = new Float32Array(buf); + Module["HEAPF64"] = new Float64Array(buf); + } + Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATPOSTRUN__ = []; + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + var wasmBinaryFile = "data:application/octet-stream;base64,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QCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w=="; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + var binary = tryParseAsDataURI(file); + if (binary) { + return binary; + } + if (readBinary) { + return readBinary(file); + } else { + throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; + } + } catch (err2) { + abort(err2); + } + } + function instantiateSync(file, info) { + var instance; + var module2; + var binary; + try { + binary = getBinary(file); + module2 = new WebAssembly.Module(binary); + instance = new WebAssembly.Instance(module2, info); + } catch (e) { + var str = e.toString(); + err("failed to compile wasm module: " + str); + if (str.includes("imported Memory") || str.includes("memory import")) { + err( + "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." + ); + } + throw e; + } + return [instance, module2]; + } + function createWasm() { + var info = { a: asmLibraryArg }; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["W"]; + addOnInit(Module["asm"]["h"]); + removeRunDependency(); + } + addRunDependency(); + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + var result = instantiateSync(wasmBinaryFile, info); + receiveInstance(result[0]); + return Module["asm"]; + } + function LE_HEAP_LOAD_F32(byteOffset) { + return HEAP_DATA_VIEW.getFloat32(byteOffset, true); + } + function LE_HEAP_LOAD_F64(byteOffset) { + return HEAP_DATA_VIEW.getFloat64(byteOffset, true); + } + function LE_HEAP_LOAD_I16(byteOffset) { + return HEAP_DATA_VIEW.getInt16(byteOffset, true); + } + function LE_HEAP_LOAD_I32(byteOffset) { + return HEAP_DATA_VIEW.getInt32(byteOffset, true); + } + function LE_HEAP_STORE_I32(byteOffset, value) { + HEAP_DATA_VIEW.setInt32(byteOffset, value, true); + } + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === void 0) { + wasmTable.get(func)(); + } else { + wasmTable.get(func)(callback.arg); + } + } else { + func(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _gmtime_r(time, tmPtr) { + var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3); + LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds()); + LE_HEAP_STORE_I32((tmPtr + 4 >> 2) * 4, date.getUTCMinutes()); + LE_HEAP_STORE_I32((tmPtr + 8 >> 2) * 4, date.getUTCHours()); + LE_HEAP_STORE_I32((tmPtr + 12 >> 2) * 4, date.getUTCDate()); + LE_HEAP_STORE_I32((tmPtr + 16 >> 2) * 4, date.getUTCMonth()); + LE_HEAP_STORE_I32((tmPtr + 20 >> 2) * 4, date.getUTCFullYear() - 1900); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + LE_HEAP_STORE_I32((tmPtr + 36 >> 2) * 4, 0); + LE_HEAP_STORE_I32((tmPtr + 32 >> 2) * 4, 0); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + if (!_gmtime_r.GMTString) _gmtime_r.GMTString = allocateUTF8("GMT"); + LE_HEAP_STORE_I32((tmPtr + 40 >> 2) * 4, _gmtime_r.GMTString); + return tmPtr; + } + function ___gmtime_r(a0, a1) { + return _gmtime_r(a0, a1); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min( + overGrownHeapSize, + requestedSize + 100663296 + ); + var newSize = Math.min( + maxHeapSize, + alignUp(Math.max(requestedSize, overGrownHeapSize), 65536) + ); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + function _setTempRet0(val) { + } + function _time(ptr) { + var ret = Date.now() / 1e3 | 0; + if (ptr) { + LE_HEAP_STORE_I32((ptr >> 2) * 4, ret); + } + return ret; + } + function _tzset() { + if (_tzset.called) return; + _tzset.called = true; + var currentYear = (/* @__PURE__ */ new Date()).getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60); + LE_HEAP_STORE_I32( + (__get_daylight() >> 2) * 4, + Number(winterOffset != summerOffset) + ); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, summerNamePtr); + } else { + LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr); + LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, winterNamePtr); + } + } + function _timegm(tmPtr) { + _tzset(); + var time = Date.UTC( + LE_HEAP_LOAD_I32((tmPtr + 20 >> 2) * 4) + 1900, + LE_HEAP_LOAD_I32((tmPtr + 16 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 12 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 8 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr + 4 >> 2) * 4), + LE_HEAP_LOAD_I32((tmPtr >> 2) * 4), + 0 + ); + var date = new Date(time); + LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay()); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; + LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday); + return date.getTime() / 1e3 | 0; + } + function intArrayFromBase64(s) { + { + var buf; + try { + buf = Buffer.from(s, "base64"); + } catch (_) { + buf = new Buffer(s, "base64"); + } + return new Uint8Array( + buf["buffer"], + buf["byteOffset"], + buf["byteLength"] + ); + } + } + function tryParseAsDataURI(filename) { + if (!isDataURI(filename)) { + return; + } + return intArrayFromBase64(filename.slice(dataURIPrefix.length)); + } + var asmLibraryArg = { + e: ___gmtime_r, + c: _emscripten_memcpy_big, + d: _emscripten_resize_heap, + a: _setTempRet0, + b: _time, + f: _timegm + }; + var asm = createWasm(); + Module["___wasm_call_ctors"] = asm["h"]; + Module["_zip_ext_count_symlinks"] = asm["i"]; + Module["_zip_file_get_external_attributes"] = asm["j"]; + Module["_zipstruct_statS"] = asm["k"]; + Module["_zipstruct_stat_size"] = asm["l"]; + Module["_zipstruct_stat_mtime"] = asm["m"]; + Module["_zipstruct_stat_crc"] = asm["n"]; + Module["_zipstruct_errorS"] = asm["o"]; + Module["_zipstruct_error_code_zip"] = asm["p"]; + Module["_zipstruct_stat_comp_size"] = asm["q"]; + Module["_zipstruct_stat_comp_method"] = asm["r"]; + Module["_zip_close"] = asm["s"]; + Module["_zip_delete"] = asm["t"]; + Module["_zip_dir_add"] = asm["u"]; + Module["_zip_discard"] = asm["v"]; + Module["_zip_error_init_with_code"] = asm["w"]; + Module["_zip_get_error"] = asm["x"]; + Module["_zip_file_get_error"] = asm["y"]; + Module["_zip_error_strerror"] = asm["z"]; + Module["_zip_fclose"] = asm["A"]; + Module["_zip_file_add"] = asm["B"]; + Module["_free"] = asm["C"]; + var _malloc = Module["_malloc"] = asm["D"]; + Module["_zip_source_error"] = asm["E"]; + Module["_zip_source_seek"] = asm["F"]; + Module["_zip_file_set_external_attributes"] = asm["G"]; + Module["_zip_file_set_mtime"] = asm["H"]; + Module["_zip_fopen_index"] = asm["I"]; + Module["_zip_fread"] = asm["J"]; + Module["_zip_get_name"] = asm["K"]; + Module["_zip_get_num_entries"] = asm["L"]; + Module["_zip_source_read"] = asm["M"]; + Module["_zip_name_locate"] = asm["N"]; + Module["_zip_open_from_source"] = asm["O"]; + Module["_zip_set_file_compression"] = asm["P"]; + Module["_zip_source_buffer"] = asm["Q"]; + Module["_zip_source_buffer_create"] = asm["R"]; + Module["_zip_source_close"] = asm["S"]; + Module["_zip_source_free"] = asm["T"]; + Module["_zip_source_keep"] = asm["U"]; + Module["_zip_source_open"] = asm["V"]; + Module["_zip_source_tell"] = asm["X"]; + Module["_zip_stat_index"] = asm["Y"]; + var __get_tzname = Module["__get_tzname"] = asm["Z"]; + var __get_daylight = Module["__get_daylight"] = asm["_"]; + var __get_timezone = Module["__get_timezone"] = asm["$"]; + var stackSave = Module["stackSave"] = asm["aa"]; + var stackRestore = Module["stackRestore"] = asm["ba"]; + var stackAlloc = Module["stackAlloc"] = asm["ca"]; + Module["cwrap"] = cwrap; + Module["getValue"] = getValue; + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function run(args) { + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run(); + return createModule2; + }; +}(); +module.exports = createModule; +}(libzipSync)); + +const createModule = libzipSync.exports; + +const number64 = [ + `number`, + // low + `number` + // high +]; +var Errors = /* @__PURE__ */ ((Errors2) => { + Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK"; + Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK"; + Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME"; + Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE"; + Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK"; + Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ"; + Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE"; + Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC"; + Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED"; + Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT"; + Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS"; + Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN"; + Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN"; + Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB"; + Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY"; + Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED"; + Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP"; + Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF"; + Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL"; + Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP"; + Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL"; + Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS"; + Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE"; + Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED"; + Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP"; + Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY"; + Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD"; + Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD"; + Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP"; + Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE"; + Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL"; + Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA"; + return Errors2; +})(Errors || {}); +const makeInterface = (emZip) => ({ + // Those are getters because they can change after memory growth + get HEAPU8() { + return emZip.HEAPU8; + }, + errors: Errors, + SEEK_SET: 0, + SEEK_CUR: 1, + SEEK_END: 2, + ZIP_CHECKCONS: 4, + ZIP_EXCL: 2, + ZIP_RDONLY: 16, + ZIP_FL_OVERWRITE: 8192, + ZIP_FL_COMPRESSED: 4, + ZIP_OPSYS_DOS: 0, + ZIP_OPSYS_AMIGA: 1, + ZIP_OPSYS_OPENVMS: 2, + ZIP_OPSYS_UNIX: 3, + ZIP_OPSYS_VM_CMS: 4, + ZIP_OPSYS_ATARI_ST: 5, + ZIP_OPSYS_OS_2: 6, + ZIP_OPSYS_MACINTOSH: 7, + ZIP_OPSYS_Z_SYSTEM: 8, + ZIP_OPSYS_CPM: 9, + ZIP_OPSYS_WINDOWS_NTFS: 10, + ZIP_OPSYS_MVS: 11, + ZIP_OPSYS_VSE: 12, + ZIP_OPSYS_ACORN_RISC: 13, + ZIP_OPSYS_VFAT: 14, + ZIP_OPSYS_ALTERNATE_MVS: 15, + ZIP_OPSYS_BEOS: 16, + ZIP_OPSYS_TANDEM: 17, + ZIP_OPSYS_OS_400: 18, + ZIP_OPSYS_OS_X: 19, + ZIP_CM_DEFAULT: -1, + ZIP_CM_STORE: 0, + ZIP_CM_DEFLATE: 8, + uint08S: emZip._malloc(1), + uint32S: emZip._malloc(4), + malloc: emZip._malloc, + free: emZip._free, + getValue: emZip.getValue, + openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]), + close: emZip.cwrap(`zip_close`, `number`, [`number`]), + discard: emZip.cwrap(`zip_discard`, null, [`number`]), + getError: emZip.cwrap(`zip_get_error`, `number`, [`number`]), + getName: emZip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]), + getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]), + delete: emZip.cwrap(`zip_delete`, `number`, [`number`, `number`]), + statIndex: emZip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]), + fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]), + fread: emZip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]), + fclose: emZip.cwrap(`zip_fclose`, `number`, [`number`]), + dir: { + add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]) + }, + file: { + add: emZip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]), + getError: emZip.cwrap(`zip_file_get_error`, `number`, [`number`]), + getExternalAttributes: emZip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setExternalAttributes: emZip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), + setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]), + setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`]) + }, + ext: { + countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]) + }, + error: { + initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]), + strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`]) + }, + name: { + locate: emZip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`]) + }, + source: { + fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]), + fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]), + free: emZip.cwrap(`zip_source_free`, null, [`number`]), + keep: emZip.cwrap(`zip_source_keep`, null, [`number`]), + open: emZip.cwrap(`zip_source_open`, `number`, [`number`]), + close: emZip.cwrap(`zip_source_close`, `number`, [`number`]), + seek: emZip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]), + tell: emZip.cwrap(`zip_source_tell`, `number`, [`number`]), + read: emZip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]), + error: emZip.cwrap(`zip_source_error`, `number`, [`number`]) + }, + struct: { + statS: emZip.cwrap(`zipstruct_statS`, `number`, []), + statSize: emZip.cwrap(`zipstruct_stat_size`, `number`, [`number`]), + statCompSize: emZip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]), + statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]), + statMtime: emZip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]), + statCrc: emZip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]), + errorS: emZip.cwrap(`zipstruct_errorS`, `number`, []), + errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]) + } +}); + +function getArchivePart(path, extension) { + let idx = path.indexOf(extension); + if (idx <= 0) + return null; + let nextCharIdx = idx; + while (idx >= 0) { + nextCharIdx = idx + extension.length; + if (path[nextCharIdx] === ppath.sep) + break; + if (path[idx - 1] === ppath.sep) + return null; + idx = path.indexOf(extension, nextCharIdx); + } + if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) + return null; + return path.slice(0, nextCharIdx); +} +class ZipOpenFS extends MountFS { + static async openPromise(fn, opts) { + const zipOpenFs = new ZipOpenFS(opts); + try { + return await fn(zipOpenFs); + } finally { + zipOpenFs.saveAndClose(); + } + } + constructor(opts = {}) { + const fileExtensions = opts.fileExtensions; + const readOnlyArchives = opts.readOnlyArchives; + const getMountPoint = typeof fileExtensions === `undefined` ? (path) => getArchivePart(path, `.zip`) : (path) => { + for (const extension of fileExtensions) { + const result = getArchivePart(path, extension); + if (result) { + return result; + } + } + return null; + }; + const factorySync = (baseFs, p) => { + return new ZipFS(p, { + baseFs, + readOnly: readOnlyArchives, + stats: baseFs.statSync(p) + }); + }; + const factoryPromise = async (baseFs, p) => { + const zipOptions = { + baseFs, + readOnly: readOnlyArchives, + stats: await baseFs.statPromise(p) + }; + return () => { + return new ZipFS(p, zipOptions); + }; + }; + super({ + ...opts, + factorySync, + factoryPromise, + getMountPoint + }); + } +} + +const DEFAULT_COMPRESSION_LEVEL = `mixed`; +function toUnixTimestamp(time) { + if (typeof time === `string` && String(+time) === time) + return +time; + if (typeof time === `number` && Number.isFinite(time)) { + if (time < 0) { + return Date.now() / 1e3; + } else { + return time; + } + } + if (nodeUtils.types.isDate(time)) + return time.getTime() / 1e3; + throw new Error(`Invalid time`); +} +function makeEmptyArchive() { + return Buffer.from([ + 80, + 75, + 5, + 6, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]); +} +class LibzipError extends Error { + code; + constructor(message, code) { + super(message); + this.name = `Libzip Error`; + this.code = code; + } +} +class ZipFS extends BasePortableFakeFS { + libzip; + baseFs; + path; + stats; + zip; + lzSource; + level; + listings = /* @__PURE__ */ new Map(); + entries = /* @__PURE__ */ new Map(); + /** + * A cache of indices mapped to file sources. + * Populated by `setFileSource` calls. + * Required for supporting read after write. + */ + fileSources = /* @__PURE__ */ new Map(); + symlinkCount; + fds = /* @__PURE__ */ new Map(); + nextFd = 0; + ready = false; + readOnly = false; + constructor(source, opts = {}) { + super(); + const pathOptions = opts; + this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL; + source ??= makeEmptyArchive(); + if (typeof source === `string`) { + const { baseFs = new NodeFS() } = pathOptions; + this.baseFs = baseFs; + this.path = source; + } else { + this.path = null; + this.baseFs = null; + } + if (opts.stats) { + this.stats = opts.stats; + } else { + if (typeof source === `string`) { + try { + this.stats = this.baseFs.statSync(source); + } catch (error) { + if (error.code === `ENOENT` && pathOptions.create) { + this.stats = makeDefaultStats(); + } else { + throw error; + } + } + } else { + this.stats = makeDefaultStats(); + } + } + this.libzip = getInstance(); + const errPtr = this.libzip.malloc(4); + try { + let flags = 0; + if (opts.readOnly) { + flags |= this.libzip.ZIP_RDONLY; + this.readOnly = true; + } + if (typeof source === `string`) + source = pathOptions.create ? makeEmptyArchive() : this.baseFs.readFileSync(source); + const lzSource = this.allocateUnattachedSource(source); + try { + this.zip = this.libzip.openFromSource(lzSource, flags, errPtr); + this.lzSource = lzSource; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + if (this.zip === 0) { + const error = this.libzip.struct.errorS(); + this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`)); + throw this.makeLibzipError(error); + } + } finally { + this.libzip.free(errPtr); + } + this.listings.set(PortablePath.root, /* @__PURE__ */ new Set()); + const entryCount = this.libzip.getNumEntries(this.zip, 0); + for (let t = 0; t < entryCount; ++t) { + const raw = this.libzip.getName(this.zip, t, 0); + if (ppath.isAbsolute(raw)) + continue; + const p = ppath.resolve(PortablePath.root, raw); + this.registerEntry(p, t); + if (raw.endsWith(`/`)) { + this.registerListing(p); + } + } + this.symlinkCount = this.libzip.ext.countSymlinks(this.zip); + if (this.symlinkCount === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + this.ready = true; + } + makeLibzipError(error) { + const errorCode = this.libzip.struct.errorCodeZip(error); + const strerror = this.libzip.error.strerror(error); + const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]); + if (errorCode === this.libzip.errors.ZIP_ER_CHANGED) + throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`); + return libzipError; + } + getExtractHint(hints) { + for (const fileName of this.entries.keys()) { + const ext = this.pathUtils.extname(fileName); + if (hints.relevantExtensions.has(ext)) { + return true; + } + } + return false; + } + getAllFiles() { + return Array.from(this.entries.keys()); + } + getRealPath() { + if (!this.path) + throw new Error(`ZipFS don't have real paths when loaded from a buffer`); + return this.path; + } + prepareClose() { + if (!this.ready) + throw EBUSY(`archive closed, close`); + unwatchAllFiles(this); + } + getBufferAndClose() { + this.prepareClose(); + if (this.entries.size === 0) { + this.discardAndClose(); + return makeEmptyArchive(); + } + try { + this.libzip.source.keep(this.lzSource); + if (this.libzip.close(this.zip) === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (this.libzip.source.open(this.lzSource) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const size = this.libzip.source.tell(this.lzSource); + if (size === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + const buffer = this.libzip.malloc(size); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + try { + const rc = this.libzip.source.read(this.lzSource, buffer, size); + if (rc === -1) + throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); + else if (rc < size) + throw new Error(`Incomplete read`); + else if (rc > size) + throw new Error(`Overread`); + let result = Buffer.from(this.libzip.HEAPU8.subarray(buffer, buffer + size)); + if (process.env.YARN_IS_TEST_ENV && process.env.YARN_ZIP_DATA_EPILOGUE) + result = Buffer.concat([result, Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)]); + return result; + } finally { + this.libzip.free(buffer); + } + } finally { + this.libzip.source.close(this.lzSource); + this.libzip.source.free(this.lzSource); + this.ready = false; + } + } + discardAndClose() { + this.prepareClose(); + this.libzip.discard(this.zip); + this.ready = false; + } + saveAndClose() { + if (!this.path || !this.baseFs) + throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`); + if (this.readOnly) { + this.discardAndClose(); + return; + } + const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode; + this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { mode: newMode }); + this.ready = false; + } + resolve(p) { + return ppath.resolve(PortablePath.root, p); + } + async openPromise(p, flags, mode) { + return this.openSync(p, flags, mode); + } + openSync(p, flags, mode) { + const fd = this.nextFd++; + this.fds.set(fd, { cursor: 0, p }); + return fd; + } + hasOpenFileHandles() { + return !!this.fds.size; + } + async opendirPromise(p, opts) { + return this.opendirSync(p, opts); + } + opendirSync(p, opts = {}) { + const resolvedP = this.resolveFilename(`opendir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`opendir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`opendir '${p}'`); + const entries = [...directoryListing]; + const fd = this.openSync(resolvedP, `r`); + const onClose = () => { + this.closeSync(fd); + }; + return opendir(this, resolvedP, entries, { onClose }); + } + async readPromise(fd, buffer, offset, length, position) { + return this.readSync(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + const realPosition = position === -1 || position === null ? entry.cursor : position; + const source = this.readFileSync(entry.p); + source.copy(buffer, offset, realPosition, realPosition + length); + const bytesRead = Math.max(0, Math.min(source.length - realPosition, length)); + if (position === -1 || position === null) + entry.cursor += bytesRead; + return bytesRead; + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.writeSync(fd, buffer, position); + } else { + return this.writeSync(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + throw new Error(`Unimplemented`); + } + async closePromise(fd) { + return this.closeSync(fd); + } + closeSync(fd) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`read`); + this.fds.delete(fd); + } + createReadStream(p, { encoding } = {}) { + if (p === null) + throw new Error(`Unimplemented`); + const fd = this.openSync(p, `r`); + const stream$1 = Object.assign( + new stream.PassThrough({ + emitClose: true, + autoDestroy: true, + destroy: (error, callback) => { + clearImmediate(immediate); + this.closeSync(fd); + callback(error); + } + }), + { + close() { + stream$1.destroy(); + }, + bytesRead: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + const immediate = setImmediate(async () => { + try { + const data = await this.readFilePromise(p, encoding); + stream$1.bytesRead = data.length; + stream$1.end(data); + } catch (error) { + stream$1.destroy(error); + } + }); + return stream$1; + } + createWriteStream(p, { encoding } = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (p === null) + throw new Error(`Unimplemented`); + const chunks = []; + const fd = this.openSync(p, `w`); + const stream$1 = Object.assign( + new stream.PassThrough({ + autoDestroy: true, + emitClose: true, + destroy: (error, callback) => { + try { + if (error) { + callback(error); + } else { + this.writeFileSync(p, Buffer.concat(chunks), encoding); + callback(null); + } + } catch (err) { + callback(err); + } finally { + this.closeSync(fd); + } + } + }), + { + close() { + stream$1.destroy(); + }, + bytesWritten: 0, + path: p, + // "This property is `true` if the underlying file has not been opened yet" + pending: false + } + ); + stream$1.on(`data`, (chunk) => { + const chunkBuffer = Buffer.from(chunk); + stream$1.bytesWritten += chunkBuffer.length; + chunks.push(chunkBuffer); + }); + return stream$1; + } + async realpathPromise(p) { + return this.realpathSync(p); + } + realpathSync(p) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`lstat '${p}'`); + return resolvedP; + } + async existsPromise(p) { + return this.existsSync(p); + } + existsSync(p) { + if (!this.ready) + throw EBUSY(`archive closed, existsSync '${p}'`); + if (this.symlinkCount === 0) { + const resolvedP2 = ppath.resolve(PortablePath.root, p); + return this.entries.has(resolvedP2) || this.listings.has(resolvedP2); + } + let resolvedP; + try { + resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false); + } catch (error) { + return false; + } + if (resolvedP === void 0) + return false; + return this.entries.has(resolvedP) || this.listings.has(resolvedP); + } + async accessPromise(p, mode) { + return this.accessSync(p, mode); + } + accessSync(p, mode = fs.constants.F_OK) { + const resolvedP = this.resolveFilename(`access '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`access '${p}'`); + if (this.readOnly && mode & fs.constants.W_OK) { + throw EROFS(`access '${p}'`); + } + } + async statPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.statSync(p, { bigint: true }); + return this.statSync(p); + } + statSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`stat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`stat '${p}'`, resolvedP, opts); + } + async fstatPromise(fd, opts) { + return this.fstatSync(fd, opts); + } + fstatSync(fd, opts) { + const entry = this.fds.get(fd); + if (typeof entry === `undefined`) + throw EBADF(`fstatSync`); + const { p } = entry; + const resolvedP = this.resolveFilename(`stat '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`stat '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`stat '${p}'`); + return this.statImpl(`fstat '${p}'`, resolvedP, opts); + } + async lstatPromise(p, opts = { bigint: false }) { + if (opts.bigint) + return this.lstatSync(p, { bigint: true }); + return this.lstatSync(p); + } + lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) { + const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry); + if (resolvedP === void 0) + return void 0; + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { + if (opts.throwIfNoEntry === false) + return void 0; + throw ENOENT(`lstat '${p}'`); + } + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`lstat '${p}'`); + return this.statImpl(`lstat '${p}'`, resolvedP, opts); + } + statImpl(reason, p, opts = {}) { + const entry = this.entries.get(p); + if (typeof entry !== `undefined`) { + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const uid = this.stats.uid; + const gid = this.stats.gid; + const size = this.libzip.struct.statSize(stat) >>> 0; + const blksize = 512; + const blocks = Math.ceil(size / blksize); + const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1e3; + const atimeMs = mtimeMs; + const birthtimeMs = mtimeMs; + const ctimeMs = mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const type = this.listings.has(p) ? fs.constants.S_IFDIR : this.isSymbolicLink(entry) ? fs.constants.S_IFLNK : fs.constants.S_IFREG; + const defaultMode = type === fs.constants.S_IFDIR ? 493 : 420; + const mode = type | this.getUnixMode(entry, defaultMode) & 511; + const crc = this.libzip.struct.statCrc(stat); + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + if (this.listings.has(p)) { + const uid = this.stats.uid; + const gid = this.stats.gid; + const size = 0; + const blksize = 512; + const blocks = 0; + const atimeMs = this.stats.mtimeMs; + const birthtimeMs = this.stats.mtimeMs; + const ctimeMs = this.stats.mtimeMs; + const mtimeMs = this.stats.mtimeMs; + const atime = new Date(atimeMs); + const birthtime = new Date(birthtimeMs); + const ctime = new Date(ctimeMs); + const mtime = new Date(mtimeMs); + const mode = fs.constants.S_IFDIR | 493; + const crc = 0; + const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); + return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; + } + throw new Error(`Unreachable`); + } + getUnixMode(index, defaultMode) { + const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; + if (opsys !== this.libzip.ZIP_OPSYS_UNIX) + return defaultMode; + return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16; + } + registerListing(p) { + const existingListing = this.listings.get(p); + if (existingListing) + return existingListing; + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + const newListing = /* @__PURE__ */ new Set(); + this.listings.set(p, newListing); + return newListing; + } + registerEntry(p, index) { + const parentListing = this.registerListing(ppath.dirname(p)); + parentListing.add(ppath.basename(p)); + this.entries.set(p, index); + } + unregisterListing(p) { + this.listings.delete(p); + const parentListing = this.listings.get(ppath.dirname(p)); + parentListing?.delete(ppath.basename(p)); + } + unregisterEntry(p) { + this.unregisterListing(p); + const entry = this.entries.get(p); + this.entries.delete(p); + if (typeof entry === `undefined`) + return; + this.fileSources.delete(entry); + if (this.isSymbolicLink(entry)) { + this.symlinkCount--; + } + } + deleteEntry(p, index) { + this.unregisterEntry(p); + const rc = this.libzip.delete(this.zip, index); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) { + if (!this.ready) + throw EBUSY(`archive closed, ${reason}`); + let resolvedP = ppath.resolve(PortablePath.root, p); + if (resolvedP === `/`) + return PortablePath.root; + const fileIndex = this.entries.get(resolvedP); + if (resolveLastComponent && fileIndex !== void 0) { + if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) { + const target = this.getFileSource(fileIndex).toString(); + return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry); + } else { + return resolvedP; + } + } + while (true) { + const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry); + if (parentP === void 0) + return parentP; + const isDir = this.listings.has(parentP); + const doesExist = this.entries.has(parentP); + if (!isDir && !doesExist) { + if (throwIfNoEntry === false) + return void 0; + throw ENOENT(reason); + } + if (!isDir) + throw ENOTDIR(reason); + resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP)); + if (!resolveLastComponent || this.symlinkCount === 0) + break; + const index = this.libzip.name.locate(this.zip, resolvedP.slice(1), 0); + if (index === -1) + break; + if (this.isSymbolicLink(index)) { + const target = this.getFileSource(index).toString(); + resolvedP = ppath.resolve(ppath.dirname(resolvedP), target); + } else { + break; + } + } + return resolvedP; + } + allocateBuffer(content) { + if (!Buffer.isBuffer(content)) + content = Buffer.from(content); + const buffer = this.libzip.malloc(content.byteLength); + if (!buffer) + throw new Error(`Couldn't allocate enough memory`); + const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength); + heap.set(content); + return { buffer, byteLength: content.byteLength }; + } + allocateUnattachedSource(content) { + const error = this.libzip.struct.errorS(); + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error); + if (source === 0) { + this.libzip.free(error); + throw this.makeLibzipError(error); + } + return source; + } + allocateSource(content) { + const { buffer, byteLength } = this.allocateBuffer(content); + const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1); + if (source === 0) { + this.libzip.free(buffer); + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + return source; + } + setFileSource(p, content) { + const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content); + const target = ppath.relative(PortablePath.root, p); + const lzSource = this.allocateSource(content); + try { + const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE); + if (newIndex === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + if (this.level !== `mixed`) { + const method = this.level === 0 ? this.libzip.ZIP_CM_STORE : this.libzip.ZIP_CM_DEFLATE; + const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, method, this.level); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + this.fileSources.set(newIndex, buffer); + return newIndex; + } catch (error) { + this.libzip.source.free(lzSource); + throw error; + } + } + isSymbolicLink(index) { + if (this.symlinkCount === 0) + return false; + const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); + if (attrs === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; + if (opsys !== this.libzip.ZIP_OPSYS_UNIX) + return false; + const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16; + return (attributes & fs.constants.S_IFMT) === fs.constants.S_IFLNK; + } + getFileSource(index, opts = { asyncDecompress: false }) { + const cachedFileSource = this.fileSources.get(index); + if (typeof cachedFileSource !== `undefined`) + return cachedFileSource; + const stat = this.libzip.struct.statS(); + const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + const size = this.libzip.struct.statCompSize(stat); + const compressionMethod = this.libzip.struct.statCompMethod(stat); + const buffer = this.libzip.malloc(size); + try { + const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED); + if (file === 0) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + try { + const rc2 = this.libzip.fread(file, buffer, size, 0); + if (rc2 === -1) + throw this.makeLibzipError(this.libzip.file.getError(file)); + else if (rc2 < size) + throw new Error(`Incomplete read`); + else if (rc2 > size) + throw new Error(`Overread`); + const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); + const data = Buffer.from(memory); + if (compressionMethod === 0) { + this.fileSources.set(index, data); + return data; + } else if (opts.asyncDecompress) { + return new Promise((resolve, reject) => { + zlib__default.default.inflateRaw(data, (error, result) => { + if (error) { + reject(error); + } else { + this.fileSources.set(index, result); + resolve(result); + } + }); + }); + } else { + const decompressedData = zlib__default.default.inflateRawSync(data); + this.fileSources.set(index, decompressedData); + return decompressedData; + } + } finally { + this.libzip.fclose(file); + } + } finally { + this.libzip.free(buffer); + } + } + async fchmodPromise(fd, mask) { + return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask); + } + fchmodSync(fd, mask) { + return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask); + } + async chmodPromise(p, mask) { + return this.chmodSync(p, mask); + } + chmodSync(p, mask) { + if (this.readOnly) + throw EROFS(`chmod '${p}'`); + mask &= 493; + const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false); + const entry = this.entries.get(resolvedP); + if (typeof entry === `undefined`) + throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`); + const oldMod = this.getUnixMode(entry, fs.constants.S_IFREG | 0); + const newMod = oldMod & ~511 | mask; + const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + async fchownPromise(fd, uid, gid) { + return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid); + } + fchownSync(fd, uid, gid) { + return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid); + } + async chownPromise(p, uid, gid) { + return this.chownSync(p, uid, gid); + } + chownSync(p, uid, gid) { + throw new Error(`Unimplemented`); + } + async renamePromise(oldP, newP) { + return this.renameSync(oldP, newP); + } + renameSync(oldP, newP) { + throw new Error(`Unimplemented`); + } + async copyFilePromise(sourceP, destP, flags) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = await this.getFileSource(indexSource, { asyncDecompress: true }); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + copyFileSync(sourceP, destP, flags = 0) { + const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); + const source = this.getFileSource(indexSource); + const newIndex = this.setFileSource(resolvedDestP, source); + if (newIndex !== indexDest) { + this.registerEntry(resolvedDestP, newIndex); + } + } + prepareCopyFile(sourceP, destP, flags = 0) { + if (this.readOnly) + throw EROFS(`copyfile '${sourceP} -> '${destP}'`); + if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) + throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`); + const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP); + const indexSource = this.entries.get(resolvedSourceP); + if (typeof indexSource === `undefined`) + throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`); + const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP); + const indexDest = this.entries.get(resolvedDestP); + if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) + throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`); + return { + indexSource, + resolvedDestP, + indexDest + }; + } + async appendFilePromise(p, content, opts) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFilePromise(p, content, opts); + } + appendFileSync(p, content, opts = {}) { + if (this.readOnly) + throw EROFS(`open '${p}'`); + if (typeof opts === `undefined`) + opts = { flag: `a` }; + else if (typeof opts === `string`) + opts = { flag: `a`, encoding: opts }; + else if (typeof opts.flag === `undefined`) + opts = { flag: `a`, ...opts }; + return this.writeFileSync(p, content, opts); + } + fdToPath(fd, reason) { + const path = this.fds.get(fd)?.p; + if (typeof path === `undefined`) + throw EBADF(reason); + return path; + } + async writeFilePromise(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + await this.chmodPromise(resolvedP, mode); + } + } + writeFileSync(p, content, opts) { + const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); + if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) + content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]); + if (encoding !== null) + content = content.toString(encoding); + const newIndex = this.setFileSource(resolvedP, content); + if (newIndex !== index) + this.registerEntry(resolvedP, newIndex); + if (mode !== null) { + this.chmodSync(resolvedP, mode); + } + } + prepareWriteFile(p, opts) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + if (this.readOnly) + throw EROFS(`open '${p}'`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`open '${p}'`); + let encoding = null, mode = null; + if (typeof opts === `string`) { + encoding = opts; + } else if (typeof opts === `object`) { + ({ + encoding = null, + mode = null + } = opts); + } + const index = this.entries.get(resolvedP); + return { + encoding, + mode, + resolvedP, + index + }; + } + async unlinkPromise(p) { + return this.unlinkSync(p); + } + unlinkSync(p) { + if (this.readOnly) + throw EROFS(`unlink '${p}'`); + const resolvedP = this.resolveFilename(`unlink '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`unlink '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`unlink '${p}'`); + this.deleteEntry(resolvedP, index); + } + async utimesPromise(p, atime, mtime) { + return this.utimesSync(p, atime, mtime); + } + utimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`utimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p); + this.utimesImpl(resolvedP, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.lutimesSync(p, atime, mtime); + } + lutimesSync(p, atime, mtime) { + if (this.readOnly) + throw EROFS(`lutimes '${p}'`); + const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false); + this.utimesImpl(resolvedP, mtime); + } + utimesImpl(resolvedP, mtime) { + if (this.listings.has(resolvedP)) { + if (!this.entries.has(resolvedP)) + this.hydrateDirectory(resolvedP); + } + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0); + if (rc === -1) { + throw this.makeLibzipError(this.libzip.getError(this.zip)); + } + } + async mkdirPromise(p, opts) { + return this.mkdirSync(p, opts); + } + mkdirSync(p, { mode = 493, recursive = false } = {}) { + if (recursive) + return this.mkdirpSync(p, { chmod: mode }); + if (this.readOnly) + throw EROFS(`mkdir '${p}'`); + const resolvedP = this.resolveFilename(`mkdir '${p}'`, p); + if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) + throw EEXIST(`mkdir '${p}'`); + this.hydrateDirectory(resolvedP); + this.chmodSync(resolvedP, mode); + return void 0; + } + async rmdirPromise(p, opts) { + return this.rmdirSync(p, opts); + } + rmdirSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rmdir '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rmdir '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rmdir '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rmdir '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rmdir '${p}'`); + this.deleteEntry(p, index); + } + async rmPromise(p, opts) { + return this.rmSync(p, opts); + } + rmSync(p, { recursive = false } = {}) { + if (this.readOnly) + throw EROFS(`rm '${p}'`); + if (recursive) { + this.removeSync(p); + return; + } + const resolvedP = this.resolveFilename(`rm '${p}'`, p); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`rm '${p}'`); + if (directoryListing.size > 0) + throw ENOTEMPTY(`rm '${p}'`); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`rm '${p}'`); + this.deleteEntry(p, index); + } + hydrateDirectory(resolvedP) { + const index = this.libzip.dir.add(this.zip, ppath.relative(PortablePath.root, resolvedP)); + if (index === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + this.registerListing(resolvedP); + this.registerEntry(resolvedP, index); + return index; + } + async linkPromise(existingP, newP) { + return this.linkSync(existingP, newP); + } + linkSync(existingP, newP) { + throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`); + } + async symlinkPromise(target, p) { + return this.symlinkSync(target, p); + } + symlinkSync(target, p) { + if (this.readOnly) + throw EROFS(`symlink '${target}' -> '${p}'`); + const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p); + if (this.listings.has(resolvedP)) + throw EISDIR(`symlink '${target}' -> '${p}'`); + if (this.entries.has(resolvedP)) + throw EEXIST(`symlink '${target}' -> '${p}'`); + const index = this.setFileSource(resolvedP, target); + this.registerEntry(resolvedP, index); + const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (fs.constants.S_IFLNK | 511) << 16); + if (rc === -1) + throw this.makeLibzipError(this.libzip.getError(this.zip)); + this.symlinkCount += 1; + } + async readFilePromise(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = await this.readFileBuffer(p, { asyncDecompress: true }); + return encoding ? data.toString(encoding) : data; + } + readFileSync(p, encoding) { + if (typeof encoding === `object`) + encoding = encoding ? encoding.encoding : void 0; + const data = this.readFileBuffer(p); + return encoding ? data.toString(encoding) : data; + } + readFileBuffer(p, opts = { asyncDecompress: false }) { + if (typeof p === `number`) + p = this.fdToPath(p, `read`); + const resolvedP = this.resolveFilename(`open '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`open '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EISDIR(`read`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + return this.getFileSource(entry, opts); + } + async readdirPromise(p, opts) { + return this.readdirSync(p, opts); + } + readdirSync(p, opts) { + const resolvedP = this.resolveFilename(`scandir '${p}'`, p); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`scandir '${p}'`); + const directoryListing = this.listings.get(resolvedP); + if (!directoryListing) + throw ENOTDIR(`scandir '${p}'`); + if (opts?.recursive) { + if (opts?.withFileTypes) { + const entries = Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: PortablePath.dot + }); + }); + for (const entry of entries) { + if (!entry.isDirectory()) + continue; + const subPath = ppath.join(entry.path, entry.name); + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + for (const child of subListing) { + entries.push(Object.assign(this.statImpl(`lstat`, ppath.join(p, subPath, child)), { + name: child, + path: subPath + })); + } + } + return entries; + } else { + const entries = [...directoryListing]; + for (const subPath of entries) { + const subListing = this.listings.get(ppath.join(resolvedP, subPath)); + if (typeof subListing === `undefined`) + continue; + for (const child of subListing) { + entries.push(ppath.join(subPath, child)); + } + } + return entries; + } + } else if (opts?.withFileTypes) { + return Array.from(directoryListing, (name) => { + return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { + name, + path: void 0 + }); + }); + } else { + return [...directoryListing]; + } + } + async readlinkPromise(p) { + const entry = this.prepareReadlink(p); + return (await this.getFileSource(entry, { asyncDecompress: true })).toString(); + } + readlinkSync(p) { + const entry = this.prepareReadlink(p); + return this.getFileSource(entry).toString(); + } + prepareReadlink(p) { + const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false); + if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) + throw ENOENT(`readlink '${p}'`); + if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) + throw ENOTDIR(`open '${p}'`); + if (this.listings.has(resolvedP)) + throw EINVAL(`readlink '${p}'`); + const entry = this.entries.get(resolvedP); + if (entry === void 0) + throw new Error(`Unreachable`); + if (!this.isSymbolicLink(entry)) + throw EINVAL(`readlink '${p}'`); + return entry; + } + async truncatePromise(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = await this.getFileSource(index, { asyncDecompress: true }); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return await this.writeFilePromise(p, truncated); + } + truncateSync(p, len = 0) { + const resolvedP = this.resolveFilename(`open '${p}'`, p); + const index = this.entries.get(resolvedP); + if (typeof index === `undefined`) + throw EINVAL(`open '${p}'`); + const source = this.getFileSource(index); + const truncated = Buffer.alloc(len, 0); + source.copy(truncated); + return this.writeFileSync(p, truncated); + } + async ftruncatePromise(fd, len) { + return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len); + } + ftruncateSync(fd, len) { + return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len); + } + watch(p, a, b) { + let persistent; + switch (typeof a) { + case `function`: + case `string`: + case `undefined`: + { + persistent = true; + } + break; + default: + { + ({ persistent = true } = a); + } + break; + } + if (!persistent) + return { on: () => { + }, close: () => { + } }; + const interval = setInterval(() => { + }, 24 * 60 * 60 * 1e3); + return { on: () => { + }, close: () => { + clearInterval(interval); + } }; + } + watchFile(p, a, b) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return watchFile(this, resolvedP, a, b); + } + unwatchFile(p, cb) { + const resolvedP = ppath.resolve(PortablePath.root, p); + return unwatchFile(this, resolvedP, cb); + } +} + +setFactory(() => { + const emZip = createModule(); + return makeInterface(emZip); +}); + +var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => { + ErrorCode2["API_ERROR"] = `API_ERROR`; + ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`; + ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`; + ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`; + ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`; + ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`; + ErrorCode2["INTERNAL"] = `INTERNAL`; + ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`; + ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`; + return ErrorCode2; +})(ErrorCode || {}); +const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([ + "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */, + "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */, + "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */, + "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */, + "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */ +]); +function makeError(pnpCode, message, data = {}, code) { + code ??= MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode; + const propertySpec = { + configurable: true, + writable: true, + enumerable: false + }; + return Object.defineProperties(new Error(message), { + code: { + ...propertySpec, + value: code + }, + pnpCode: { + ...propertySpec, + value: pnpCode + }, + data: { + ...propertySpec, + value: data + } + }); +} +function getIssuerModule(parent) { + let issuer = parent; + while (issuer && (issuer.id === `[eval]` || issuer.id === `` || !issuer.filename)) + issuer = issuer.parent; + return issuer || null; +} +function getPathForDisplay(p) { + return npath.normalize(npath.fromPortablePath(p)); +} + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs__default.default.existsSync(jsonPath)) + return null; + return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`)); +} +function ERR_REQUIRE_ESM(filename, parentPath = null) { + const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename); + const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported. +Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`; + const err = new Error(msg); + err.code = `ERR_REQUIRE_ESM`; + return err; +} +function reportRequiredFilesToWatchMode(files) { + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename)))); + if (WATCH_MODE_MESSAGE_USES_ARRAYS) { + process.send({ "watch:require": files }); + } else { + for (const filename of files) { + process.send({ "watch:require": filename }); + } + } + } +} + +function applyPatch(pnpapi, opts) { + let enableNativeHooks = true; + process.versions.pnp = String(pnpapi.VERSIONS.std); + const moduleExports = require$$0__default.default; + moduleExports.findPnpApi = (lookupSource) => { + const lookupPath = lookupSource instanceof URL ? url.fileURLToPath(lookupSource) : lookupSource; + const apiPath = opts.manager.findApiPathFor(lookupPath); + if (apiPath === null) + return null; + const apiEntry = opts.manager.getApiEntry(apiPath, true); + return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null; + }; + function getRequireStack(parent) { + const requireStack = []; + for (let cursor = parent; cursor; cursor = cursor.parent) + requireStack.push(cursor.filename || cursor.id); + return requireStack; + } + const originalModuleLoad = require$$0.Module._load; + require$$0.Module._load = function(request, parent, isMain) { + if (request === `pnpapi`) { + const parentApiPath = opts.manager.getApiPathFromParent(parent); + if (parentApiPath) { + return opts.manager.getApiEntry(parentApiPath, true).instance; + } + } + return originalModuleLoad.call(require$$0.Module, request, parent, isMain); + }; + function getIssuerSpecsFromPaths(paths) { + return paths.map((path) => ({ + apiPath: opts.manager.findApiPathFor(path), + path, + module: null + })); + } + function getIssuerSpecsFromModule(module) { + if (module && module.id !== `` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) { + return [{ + apiPath: opts.manager.findApiPathFor(module.paths[0]), + path: module.paths[0], + module + }]; + } + const issuer = getIssuerModule(module); + if (issuer !== null) { + const path = npath.dirname(issuer.filename); + const apiPath = opts.manager.getApiPathFromParent(issuer); + return [{ apiPath, path, module }]; + } else { + const path = process.cwd(); + const apiPath = opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? opts.manager.getApiPathFromParent(null); + return [{ apiPath, path, module }]; + } + } + function makeFakeParent(path) { + const fakeParent = new require$$0.Module(``); + const fakeFilePath = npath.join(path, `[file]`); + fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath); + return fakeParent; + } + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const originalModuleResolveFilename = require$$0.Module._resolveFilename; + require$$0.Module._resolveFilename = function(request, parent, isMain, options) { + if (require$$0.isBuiltin(request)) + return request; + if (!enableNativeHooks) + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options); + if (options && options.plugnplay === false) { + const { plugnplay, ...forwardedOptions } = options; + try { + enableNativeHooks = false; + return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions); + } finally { + enableNativeHooks = true; + } + } + if (options) { + const optionNames = new Set(Object.keys(options)); + optionNames.delete(`paths`); + optionNames.delete(`plugnplay`); + if (optionNames.size > 0) { + throw makeError( + ErrorCode.UNSUPPORTED, + `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})` + ); + } + } + const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent); + if (request.match(pathRegExp) === null) { + const parentDirectory = parent?.filename != null ? npath.dirname(parent.filename) : null; + const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null; + if (absoluteRequest !== null) { + const apiPath = parent && parentDirectory === npath.dirname(absoluteRequest) ? opts.manager.getApiPathFromParent(parent) : opts.manager.findApiPathFor(absoluteRequest); + if (apiPath !== null) { + issuerSpecs.unshift({ + apiPath, + path: parentDirectory, + module: null + }); + } + } + } + let firstError; + for (const { apiPath, path, module } of issuerSpecs) { + let resolution; + const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null; + try { + if (issuerApi !== null) { + resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null); + } else { + if (path === null) + throw new Error(`Assertion failed: Expected the path to be set`); + resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain); + } + } catch (error) { + firstError = firstError || error; + continue; + } + if (resolution !== null) { + return resolution; + } + } + const requireStack = getRequireStack(parent); + Object.defineProperty(firstError, `requireStack`, { + configurable: true, + writable: true, + enumerable: false, + value: requireStack + }); + if (requireStack.length > 0) + firstError.message += ` +Require stack: +- ${requireStack.join(` +- `)}`; + if (typeof firstError.pnpCode === `string`) + Error.captureStackTrace(firstError); + throw firstError; + }; + const originalFindPath = require$$0.Module._findPath; + require$$0.Module._findPath = function(request, paths, isMain) { + if (request === `pnpapi`) + return false; + if (!enableNativeHooks) + return originalFindPath.call(require$$0.Module, request, paths, isMain); + const isAbsolute = npath.isAbsolute(request); + if (isAbsolute) + paths = [``]; + else if (!paths || paths.length === 0) + return false; + for (const path of paths) { + let resolution; + try { + const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path); + if (pnpApiPath !== null) { + const api = opts.manager.getApiEntry(pnpApiPath, true).instance; + resolution = api.resolveRequest(request, path) || false; + } else { + resolution = originalFindPath.call(require$$0.Module, request, [path], isMain); + } + } catch (error) { + continue; + } + if (resolution) { + return resolution; + } + } + return false; + }; + const originalExtensionJSFunction = require$$0.Module._extensions[`.js`]; + require$$0.Module._extensions[`.js`] = function(module, filename) { + if (filename.endsWith(`.js`)) { + const pkg = readPackageScope(filename); + if (pkg && pkg.data?.type === `module`) { + const err = ERR_REQUIRE_ESM(filename, module.parent?.filename); + Error.captureStackTrace(err); + throw err; + } + } + originalExtensionJSFunction.call(this, module, filename); + }; + const originalDlopen = process.dlopen; + process.dlopen = function(...args) { + const [module, filename, ...rest] = args; + return originalDlopen.call( + this, + module, + npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))), + ...rest + ); + }; + const originalEmit = process.emit; + process.emit = function(name, data, ...args) { + if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`))) + return false; + return originalEmit.apply(process, arguments); + }; + patchFs(fs__default.default, new PosixFS(opts.fakeFs)); +} + +function hydrateRuntimeState(data, { basePath }) { + const portablePath = npath.toPortablePath(basePath); + const absolutePortablePath = ppath.resolve(portablePath); + const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; + const packageLocatorsByLocations = /* @__PURE__ */ new Map(); + const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => { + return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => { + if (packageName === null !== (packageReference === null)) + throw new Error(`Assertion failed: The name and reference should be null, or neither should`); + const discardFromLookup = packageInformationData.discardFromLookup ?? false; + const packageLocator = { name: packageName, reference: packageReference }; + const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation); + if (!entry) { + packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup }); + } else { + entry.discardFromLookup = entry.discardFromLookup && discardFromLookup; + if (!discardFromLookup) { + entry.locator = packageLocator; + } + } + let resolvedPackageLocation = null; + return [packageReference, { + packageDependencies: new Map(packageInformationData.packageDependencies), + packagePeers: new Set(packageInformationData.packagePeers), + linkType: packageInformationData.linkType, + discardFromLookup, + // we only need this for packages that are used by the currently running script + // this is a lazy getter because `ppath.join` has some overhead + get packageLocation() { + return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation)); + } + }]; + }))]; + })); + const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => { + return [packageName, new Set(packageReferences)]; + })); + const fallbackPool = new Map(data.fallbackPool); + const dependencyTreeRoots = data.dependencyTreeRoots; + const enableTopLevelFallback = data.enableTopLevelFallback; + return { + basePath: portablePath, + dependencyTreeRoots, + enableTopLevelFallback, + fallbackExclusionList, + fallbackPool, + ignorePattern, + packageLocatorsByLocations, + packageRegistry + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert__default.default(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); +const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType( + "ERR_PACKAGE_PATH_NOT_EXPORTED", + (pkgPath, subpath, base = void 0) => { + if (subpath === ".") + return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + url.fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = url.fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)), + url.fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && url.fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && url.fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function isConditionalExportsMainSugar(exports, packageJSONUrl, base) { + if (typeof exports === "string" || ArrayIsArray(exports)) return true; + if (typeof exports !== "object" || exports === null) return false; + const keys = ObjectGetOwnPropertyNames(exports); + let isConditionalSugar = false; + let i = 0; + for (let j = 0; j < keys.length; j++) { + const key = keys[j]; + const curIsConditionalSugar = key === "" || key[0] !== "."; + if (i++ === 0) { + isConditionalSugar = curIsConditionalSugar; + } else if (isConditionalSugar !== curIsConditionalSugar) { + throw new ERR_INVALID_PACKAGE_CONFIG( + url.fileURLToPath(packageJSONUrl), + base, + `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.` + ); + } + } + return isConditionalSugar; +} +function throwExportsNotFound(subpath, packageJSONUrl, base) { + throw new ERR_PACKAGE_PATH_NOT_EXPORTED( + url.fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + base && url.fileURLToPath(base) + ); +} +const emittedPackageWarnings = /* @__PURE__ */ new Set(); +function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) { + const pjsonPath = url.fileURLToPath(pjsonUrl); + if (emittedPackageWarnings.has(pjsonPath + "|" + match)) return; + emittedPackageWarnings.add(pjsonPath + "|" + match); + process.emitWarning( + `Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`, + "DeprecationWarning", + "DEP0155" + ); +} +function packageExportsResolve({ + packageJSONUrl, + packageSubpath, + exports, + base, + conditions +}) { + if (isConditionalExportsMainSugar(exports, packageJSONUrl, base)) + exports = { ".": exports }; + if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) { + const target = exports[packageSubpath]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + "", + packageSubpath, + base, + false, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(exports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + packageSubpath, + StringPrototypeSlice(key, 0, patternIndex) + )) { + if (StringPrototypeEndsWith(packageSubpath, "/")) + emitTrailingSlashPatternDeprecation( + packageSubpath, + packageJSONUrl, + base + ); + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + packageSubpath, + patternIndex, + packageSubpath.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = exports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + false, + conditions + ); + if (resolveResult == null) { + throwExportsNotFound(packageSubpath, packageJSONUrl, base); + } + return resolveResult; + } + throwExportsNotFound(packageSubpath, packageJSONUrl, base); +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +const flagSymbol = Symbol('arg flag'); + +class ArgError extends Error { + constructor(msg, code) { + super(msg); + this.name = 'ArgError'; + this.code = code; + + Object.setPrototypeOf(this, ArgError.prototype); + } +} + +function arg( + opts, + { + argv = process.argv.slice(2), + permissive = false, + stopAtPositional = false + } = {} +) { + if (!opts) { + throw new ArgError( + 'argument specification object is required', + 'ARG_CONFIG_NO_SPEC' + ); + } + + const result = { _: [] }; + + const aliases = {}; + const handlers = {}; + + for (const key of Object.keys(opts)) { + if (!key) { + throw new ArgError( + 'argument key cannot be an empty string', + 'ARG_CONFIG_EMPTY_KEY' + ); + } + + if (key[0] !== '-') { + throw new ArgError( + `argument key must start with '-' but found: '${key}'`, + 'ARG_CONFIG_NONOPT_KEY' + ); + } + + if (key.length === 1) { + throw new ArgError( + `argument key must have a name; singular '-' keys are not allowed: ${key}`, + 'ARG_CONFIG_NONAME_KEY' + ); + } + + if (typeof opts[key] === 'string') { + aliases[key] = opts[key]; + continue; + } + + let type = opts[key]; + let isFlag = false; + + if ( + Array.isArray(type) && + type.length === 1 && + typeof type[0] === 'function' + ) { + const [fn] = type; + type = (value, name, prev = []) => { + prev.push(fn(value, name, prev[prev.length - 1])); + return prev; + }; + isFlag = fn === Boolean || fn[flagSymbol] === true; + } else if (typeof type === 'function') { + isFlag = type === Boolean || type[flagSymbol] === true; + } else { + throw new ArgError( + `type missing or not a function or valid array type: ${key}`, + 'ARG_CONFIG_VAD_TYPE' + ); + } + + if (key[1] !== '-' && key.length > 2) { + throw new ArgError( + `short argument keys (with a single hyphen) must have only one character: ${key}`, + 'ARG_CONFIG_SHORTOPT_TOOLONG' + ); + } + + handlers[key] = [type, isFlag]; + } + + for (let i = 0, len = argv.length; i < len; i++) { + const wholeArg = argv[i]; + + if (stopAtPositional && result._.length > 0) { + result._ = result._.concat(argv.slice(i)); + break; + } + + if (wholeArg === '--') { + result._ = result._.concat(argv.slice(i + 1)); + break; + } + + if (wholeArg.length > 1 && wholeArg[0] === '-') { + /* eslint-disable operator-linebreak */ + const separatedArguments = + wholeArg[1] === '-' || wholeArg.length === 2 + ? [wholeArg] + : wholeArg + .slice(1) + .split('') + .map((a) => `-${a}`); + /* eslint-enable operator-linebreak */ + + for (let j = 0; j < separatedArguments.length; j++) { + const arg = separatedArguments[j]; + const [originalArgName, argStr] = + arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; + + let argName = originalArgName; + while (argName in aliases) { + argName = aliases[argName]; + } + + if (!(argName in handlers)) { + if (permissive) { + result._.push(arg); + continue; + } else { + throw new ArgError( + `unknown or unexpected option: ${originalArgName}`, + 'ARG_UNKNOWN_OPTION' + ); + } + } + + const [type, isFlag] = handlers[argName]; + + if (!isFlag && j + 1 < separatedArguments.length) { + throw new ArgError( + `option requires argument (but was followed by another short argument): ${originalArgName}`, + 'ARG_MISSING_REQUIRED_SHORTARG' + ); + } + + if (isFlag) { + result[argName] = type(true, argName, result[argName]); + } else if (argStr === undefined) { + if ( + argv.length < i + 2 || + (argv[i + 1].length > 1 && + argv[i + 1][0] === '-' && + !( + argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && + (type === Number || + // eslint-disable-next-line no-undef + (typeof BigInt !== 'undefined' && type === BigInt)) + )) + ) { + const extended = + originalArgName === argName ? '' : ` (alias for ${argName})`; + throw new ArgError( + `option requires argument: ${originalArgName}${extended}`, + 'ARG_MISSING_REQUIRED_LONGARG' + ); + } + + result[argName] = type(argv[i + 1], argName, result[argName]); + ++i; + } else { + result[argName] = type(argStr, argName, result[argName]); + } + } + } else { + result._.push(wholeArg); + } + } + + return result; +} + +arg.flag = (fn) => { + fn[flagSymbol] = true; + return fn; +}; + +// Utility types +arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1); + +// Expose error class +arg.ArgError = ArgError; + +var arg_1 = arg; + +/** + @license + The MIT License (MIT) + + Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ +function getOptionValue(opt) { + parseOptions(); + return options[opt]; +} +let options; +function parseOptions() { + if (!options) { + options = { + "--conditions": [], + ...parseArgv(getNodeOptionsEnvArgv()), + ...parseArgv(process.execArgv) + }; + } +} +function parseArgv(argv) { + return arg_1( + { + "--conditions": [String], + "-C": "--conditions" + }, + { + argv, + permissive: true + } + ); +} +function getNodeOptionsEnvArgv() { + const errors = []; + const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors); + if (errors.length !== 0) ; + return envArgv; +} +function ParseNodeOptionsEnvVar(node_options, errors) { + const env_argv = []; + let is_in_string = false; + let will_start_new_arg = true; + for (let index = 0; index < node_options.length; ++index) { + let c = node_options[index]; + if (c === "\\" && is_in_string) { + if (index + 1 === node_options.length) { + errors.push("invalid value for NODE_OPTIONS (invalid escape)\n"); + return env_argv; + } else { + c = node_options[++index]; + } + } else if (c === " " && !is_in_string) { + will_start_new_arg = true; + continue; + } else if (c === '"') { + is_in_string = !is_in_string; + continue; + } + if (will_start_new_arg) { + env_argv.push(c); + will_start_new_arg = false; + } else { + env_argv[env_argv.length - 1] += c; + } + } + if (is_in_string) { + errors.push("invalid value for NODE_OPTIONS (unterminated string)\n"); + } + return env_argv; +} + +function makeApi(runtimeState, opts) { + const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; + const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); + const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; + const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/; + const isDirRegExp = /\/$/; + const isRelativeRegexp = /^\.{0,2}\//; + const topLevelLocator = { name: null, reference: null }; + const fallbackLocators = []; + const emittedWarnings = /* @__PURE__ */ new Set(); + if (runtimeState.enableTopLevelFallback === true) + fallbackLocators.push(topLevelLocator); + if (opts.compatibilityMode !== false) { + for (const name of [`react-scripts`, `gatsby`]) { + const packageStore = runtimeState.packageRegistry.get(name); + if (packageStore) { + for (const reference of packageStore.keys()) { + if (reference === null) { + throw new Error(`Assertion failed: This reference shouldn't be null`); + } else { + fallbackLocators.push({ name, reference }); + } + } + } + } + } + const { + ignorePattern, + packageRegistry, + packageLocatorsByLocations + } = runtimeState; + function makeLogEntry(name, args) { + return { + fn: name, + args, + error: null, + result: null + }; + } + function trace(entry) { + const colors = process.stderr?.hasColors?.() ?? process.stdout.isTTY; + const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`; + const error = entry.error; + if (error) + console.error(c(`31;1`, `\u2716 ${entry.error?.message.replace(/\n.*/s, ``)}`)); + else + console.error(c(`33;1`, `\u203C Resolution`)); + if (entry.args.length > 0) + console.error(); + for (const arg of entry.args) + console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`); + if (entry.result) { + console.error(); + console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`); + } + const stack = new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2) ?? []; + if (stack.length > 0) { + console.error(); + for (const line of stack) { + console.error(` ${c(`38;5;244`, line)}`); + } + } + console.error(); + } + function maybeLog(name, fn) { + if (opts.allowDebug === false) + return fn; + if (Number.isFinite(debugLevel)) { + if (debugLevel >= 2) { + return (...args) => { + const logEntry = makeLogEntry(name, args); + try { + return logEntry.result = fn(...args); + } catch (error) { + throw logEntry.error = error; + } finally { + trace(logEntry); + } + }; + } else if (debugLevel >= 1) { + return (...args) => { + try { + return fn(...args); + } catch (error) { + const logEntry = makeLogEntry(name, args); + logEntry.error = error; + trace(logEntry); + throw error; + } + }; + } + } + return fn; + } + function getPackageInformationSafe(packageLocator) { + const packageInformation = getPackageInformation(packageLocator); + if (!packageInformation) { + throw makeError( + ErrorCode.INTERNAL, + `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)` + ); + } + return packageInformation; + } + function isDependencyTreeRoot(packageLocator) { + if (packageLocator.name === null) + return true; + for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) + if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) + return true; + return false; + } + const defaultExportsConditions = /* @__PURE__ */ new Set([ + `node`, + `require`, + ...getOptionValue(`--conditions`) + ]); + function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) { + const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), { + resolveIgnored: true, + includeDiscardFromLookup: true + }); + if (locator === null) { + throw makeError( + ErrorCode.INTERNAL, + `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)` + ); + } + const { packageLocation } = getPackageInformationSafe(locator); + const manifestPath = ppath.join(packageLocation, Filename.manifest); + if (!opts.fakeFs.existsSync(manifestPath)) + return null; + const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`)); + if (pkgJson.exports == null) + return null; + let subpath = ppath.contains(packageLocation, unqualifiedPath); + if (subpath === null) { + throw makeError( + ErrorCode.INTERNAL, + `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)` + ); + } + if (subpath !== `.` && !isRelativeRegexp.test(subpath)) + subpath = `./${subpath}`; + try { + const resolvedExport = packageExportsResolve({ + packageJSONUrl: url.pathToFileURL(npath.fromPortablePath(manifestPath)), + packageSubpath: subpath, + exports: pkgJson.exports, + base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null, + conditions + }); + return npath.toPortablePath(url.fileURLToPath(resolvedExport)); + } catch (error) { + throw makeError( + ErrorCode.EXPORTS_RESOLUTION_FAILED, + error.message, + { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions }, + error.code + ); + } + } + function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) { + let stat; + try { + candidates.push(unqualifiedPath); + stat = opts.fakeFs.statSync(unqualifiedPath); + } catch (error) { + } + if (stat && !stat.isDirectory()) + return opts.fakeFs.realpathSync(unqualifiedPath); + if (stat && stat.isDirectory()) { + let pkgJson; + try { + pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`)); + } catch (error) { + } + let nextUnqualifiedPath; + if (pkgJson && pkgJson.main) + nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main); + if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) { + const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions }); + if (resolution !== null) { + return resolution; + } + } + } + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = `${unqualifiedPath}${extensions[i]}`; + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + if (stat && stat.isDirectory()) { + for (let i = 0, length = extensions.length; i < length; i++) { + const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] }); + candidates.push(candidateFile); + if (opts.fakeFs.existsSync(candidateFile)) { + return candidateFile; + } + } + } + return null; + } + function makeFakeModule(path) { + const fakeModule = new require$$0.Module(path, null); + fakeModule.filename = path; + fakeModule.paths = require$$0.Module._nodeModulePaths(path); + return fakeModule; + } + function callNativeResolution(request, issuer) { + if (issuer.endsWith(`/`)) + issuer = ppath.join(issuer, `internal.js`); + return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false }); + } + function isPathIgnored(path) { + if (ignorePattern === null) + return false; + const subPath = ppath.contains(runtimeState.basePath, path); + if (subPath === null) + return false; + if (ignorePattern.test(subPath.replace(/\/$/, ``))) { + return true; + } else { + return false; + } + } + const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 }; + const topLevel = topLevelLocator; + function getPackageInformation({ name, reference }) { + const packageInformationStore = packageRegistry.get(name); + if (!packageInformationStore) + return null; + const packageInformation = packageInformationStore.get(reference); + if (!packageInformation) + return null; + return packageInformation; + } + function findPackageDependents({ name, reference }) { + const dependents = []; + for (const [dependentName, packageInformationStore] of packageRegistry) { + if (dependentName === null) + continue; + for (const [dependentReference, packageInformation] of packageInformationStore) { + if (dependentReference === null) + continue; + const dependencyReference = packageInformation.packageDependencies.get(name); + if (dependencyReference !== reference) + continue; + if (dependentName === name && dependentReference === reference) + continue; + dependents.push({ + name: dependentName, + reference: dependentReference + }); + } + } + return dependents; + } + function findBrokenPeerDependencies(dependency, initialPackage) { + const brokenPackages = /* @__PURE__ */ new Map(); + const alreadyVisited = /* @__PURE__ */ new Set(); + const traversal = (currentPackage) => { + const identifier = JSON.stringify(currentPackage.name); + if (alreadyVisited.has(identifier)) + return; + alreadyVisited.add(identifier); + const dependents = findPackageDependents(currentPackage); + for (const dependent of dependents) { + const dependentInformation = getPackageInformationSafe(dependent); + if (dependentInformation.packagePeers.has(dependency)) { + traversal(dependent); + } else { + let brokenSet = brokenPackages.get(dependent.name); + if (typeof brokenSet === `undefined`) + brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set()); + brokenSet.add(dependent.reference); + } + } + }; + traversal(initialPackage); + const brokenList = []; + for (const name of [...brokenPackages.keys()].sort()) + for (const reference of [...brokenPackages.get(name)].sort()) + brokenList.push({ name, reference }); + return brokenList; + } + function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) { + if (isPathIgnored(location) && !resolveIgnored) + return null; + let relativeLocation = ppath.relative(runtimeState.basePath, location); + if (!relativeLocation.match(isStrictRegExp)) + relativeLocation = `./${relativeLocation}`; + if (!relativeLocation.endsWith(`/`)) + relativeLocation = `${relativeLocation}/`; + do { + const entry = packageLocatorsByLocations.get(relativeLocation); + if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) { + relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1); + continue; + } + return entry.locator; + } while (relativeLocation !== ``); + return null; + } + function tryReadFile(filePath) { + try { + return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } + } + function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) { + if (request.startsWith(`#`)) + throw new Error(`resolveToUnqualified can not handle private import mappings`); + if (request === `pnpapi`) + return npath.toPortablePath(opts.pnpapiResolution); + if (considerBuiltins && require$$0.isBuiltin(request)) + return null; + const requestForDisplay = getPathForDisplay(request); + const issuerForDisplay = issuer && getPathForDisplay(issuer); + if (issuer && isPathIgnored(issuer)) { + if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + } + let unqualifiedPath; + const dependencyNameMatch = request.match(pathRegExp); + if (!dependencyNameMatch) { + if (ppath.isAbsolute(request)) { + unqualifiedPath = ppath.normalize(request); + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const absoluteIssuer = ppath.resolve(issuer); + if (issuer.match(isDirRegExp)) { + unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request)); + } else { + unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request)); + } + } + } else { + if (!issuer) { + throw makeError( + ErrorCode.API_ERROR, + `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + const [, dependencyName, subPath] = dependencyNameMatch; + const issuerLocator = findPackageLocator(issuer); + if (!issuerLocator) { + const result = callNativeResolution(request, issuer); + if (result === false) { + throw makeError( + ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, + `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${requestForDisplay}" +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay } + ); + } + return npath.toPortablePath(result); + } + const issuerInformation = getPackageInformationSafe(issuerLocator); + let dependencyReference = issuerInformation.packageDependencies.get(dependencyName); + let fallbackReference = null; + if (dependencyReference == null) { + if (issuerLocator.name !== null) { + const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name); + const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); + if (canUseFallbacks) { + for (let t = 0, T = fallbackLocators.length; t < T; ++t) { + const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]); + const reference = fallbackInformation.packageDependencies.get(dependencyName); + if (reference == null) + continue; + if (alwaysWarnOnFallback) + fallbackReference = reference; + else + dependencyReference = reference; + break; + } + if (runtimeState.enableTopLevelFallback) { + if (dependencyReference == null && fallbackReference === null) { + const reference = runtimeState.fallbackPool.get(dependencyName); + if (reference != null) { + fallbackReference = reference; + } + } + } + } + } + } + let error = null; + if (dependencyReference === null) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator); + if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } else { + error = makeError( + ErrorCode.MISSING_PEER_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) + +${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} +`).join(``)} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } + ); + } + } + } else if (dependencyReference === void 0) { + if (!considerBuiltins && require$$0.isBuiltin(request)) { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } else { + if (isDependencyTreeRoot(issuerLocator)) { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerForDisplay} +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } + ); + } else { + error = makeError( + ErrorCode.UNDECLARED_DEPENDENCY, + `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } + ); + } + } + } + if (dependencyReference == null) { + if (fallbackReference === null || error === null) + throw error || new Error(`Assertion failed: Expected an error to have been set`); + dependencyReference = fallbackReference; + const message = error.message.replace(/\n.*/g, ``); + error.message = message; + if (!emittedWarnings.has(message) && debugLevel !== 0) { + emittedWarnings.add(message); + process.emitWarning(error); + } + } + const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference }; + const dependencyInformation = getPackageInformationSafe(dependencyLocator); + if (!dependencyInformation.packageLocation) { + throw makeError( + ErrorCode.MISSING_DEPENDENCY, + `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} +Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) +`, + { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) } + ); + } + const dependencyLocation = dependencyInformation.packageLocation; + if (subPath) { + unqualifiedPath = ppath.join(dependencyLocation, subPath); + } else { + unqualifiedPath = dependencyLocation; + } + } + return ppath.normalize(unqualifiedPath); + } + function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) { + if (isStrictRegExp.test(request)) + return unqualifiedPath; + const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer); + if (unqualifiedExportPath) { + return ppath.normalize(unqualifiedExportPath); + } else { + return unqualifiedPath; + } + } + function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) { + const candidates = []; + const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }); + if (qualifiedPath) { + return ppath.normalize(qualifiedPath); + } else { + reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate))); + const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath); + const containingPackage = findPackageLocator(unqualifiedPath); + if (containingPackage) { + const { packageLocation } = getPackageInformationSafe(containingPackage); + let exists = true; + try { + opts.fakeFs.accessSync(packageLocation); + } catch (err) { + if (err?.code === `ENOENT`) { + exists = false; + } else { + const readableError = (err?.message ?? err ?? `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); + throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}). + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, { unqualifiedPath: unqualifiedPathForDisplay, extensions }); + } + } + if (!exists) { + const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `${errorMessage} + +Missing package: ${containingPackage.name}@${containingPackage.reference} +Expected package location: ${getPathForDisplay(packageLocation)} +`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + throw makeError( + ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, + `Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${unqualifiedPathForDisplay} +${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} +`).join(``)}`, + { unqualifiedPath: unqualifiedPathForDisplay, extensions } + ); + } + } + function resolvePrivateRequest(request, issuer, opts2) { + if (!issuer) + throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`); + const resolved = packageImportsResolve({ + name: request, + base: url.pathToFileURL(npath.fromPortablePath(issuer)), + conditions: opts2.conditions ?? defaultExportsConditions, + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions }); + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolveRequest(resolved, issuer, opts2); + } + } + function resolveRequest(request, issuer, opts2 = {}) { + try { + if (request.startsWith(`#`)) + return resolvePrivateRequest(request, issuer, opts2); + const { considerBuiltins, extensions, conditions } = opts2; + const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins }); + if (request === `pnpapi`) + return unqualifiedPath; + if (unqualifiedPath === null) + return null; + const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false; + const remappedPath = (!considerBuiltins || !require$$0.isBuiltin(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath; + return resolveUnqualified(remappedPath, { extensions }); + } catch (error) { + if (Object.hasOwn(error, `pnpCode`)) + Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) }); + throw error; + } + } + function resolveVirtual(request) { + const normalized = ppath.normalize(request); + const resolved = VirtualFS.resolveVirtual(normalized); + return resolved !== normalized ? resolved : null; + } + return { + VERSIONS, + topLevel, + getLocator: (name, referencish) => { + if (Array.isArray(referencish)) { + return { name: referencish[0], reference: referencish[1] }; + } else { + return { name, reference: referencish }; + } + }, + getDependencyTreeRoots: () => { + return [...runtimeState.dependencyTreeRoots]; + }, + getAllLocators() { + const locators = []; + for (const [name, entry] of packageRegistry) + for (const reference of entry.keys()) + if (name !== null && reference !== null) + locators.push({ name, reference }); + return locators; + }, + getPackageInformation: (locator) => { + const info = getPackageInformation(locator); + if (info === null) + return null; + const packageLocation = npath.fromPortablePath(info.packageLocation); + const nativeInfo = { ...info, packageLocation }; + return nativeInfo; + }, + findPackageLocator: (path) => { + return findPackageLocator(npath.toPortablePath(path)); + }, + resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => { + return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2)); + }), + resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => { + const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; + const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2); + if (resolution === null) + return null; + return npath.fromPortablePath(resolution); + }), + resolveVirtual: maybeLog(`resolveVirtual`, (path) => { + const result = resolveVirtual(npath.toPortablePath(path)); + if (result !== null) { + return npath.fromPortablePath(result); + } else { + return null; + } + }) + }; +} + +function makeManager(pnpapi, opts) { + const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null)); + const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath)); + const apiMetadata = /* @__PURE__ */ new Map([ + [initialApiPath, { + instance: pnpapi, + stats: initialApiStats, + lastRefreshCheck: Date.now() + }] + ]); + function loadApiInstance(pnpApiPath) { + const nativePath = npath.fromPortablePath(pnpApiPath); + const module = new require$$0.Module(nativePath, null); + module.load(nativePath); + return module.exports; + } + function refreshApiEntry(pnpApiPath, apiEntry) { + const timeNow = Date.now(); + if (timeNow - apiEntry.lastRefreshCheck < 500) + return; + apiEntry.lastRefreshCheck = timeNow; + const stats = opts.fakeFs.statSync(pnpApiPath); + if (stats.mtime > apiEntry.stats.mtime) { + process.emitWarning(`[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`); + apiEntry.stats = stats; + apiEntry.instance = loadApiInstance(pnpApiPath); + } + } + function getApiEntry(pnpApiPath, refresh = false) { + let apiEntry = apiMetadata.get(pnpApiPath); + if (typeof apiEntry !== `undefined`) { + if (refresh) { + refreshApiEntry(pnpApiPath, apiEntry); + } + } else { + apiMetadata.set(pnpApiPath, apiEntry = { + instance: loadApiInstance(pnpApiPath), + stats: opts.fakeFs.statSync(pnpApiPath), + lastRefreshCheck: Date.now() + }); + } + return apiEntry; + } + const findApiPathCache = /* @__PURE__ */ new Map(); + function addToCacheAndReturn(start, end, target) { + if (target !== null) { + target = VirtualFS.resolveVirtual(target); + target = opts.fakeFs.realpathSync(target); + } + let curr; + let next = start; + do { + curr = next; + findApiPathCache.set(curr, target); + next = ppath.dirname(curr); + } while (curr !== end); + return target; + } + function findApiPathFor(modulePath) { + let bestCandidate = null; + for (const [apiPath, apiEntry] of apiMetadata) { + const locator = apiEntry.instance.findPackageLocator(modulePath); + if (!locator) + continue; + if (apiMetadata.size === 1) + return apiPath; + const packageInformation = apiEntry.instance.getPackageInformation(locator); + if (!packageInformation) + throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`); + if (!bestCandidate) + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] }; + if (packageInformation.packageLocation === bestCandidate.packageLocation) { + bestCandidate.apiPaths.push(apiPath); + } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) { + bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] }; + } + } + if (bestCandidate) { + if (bestCandidate.apiPaths.length === 1) + return bestCandidate.apiPaths[0]; + const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(` +`); + throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances. +This is usually caused by using the global cache (enableGlobalCache: true) + +Controlled by: +${controlSegment} +`); + } + const start = ppath.resolve(npath.toPortablePath(modulePath)); + let curr; + let next = start; + do { + curr = next; + const cached = findApiPathCache.get(curr); + if (cached !== void 0) + return addToCacheAndReturn(start, curr, cached); + const cjsCandidate = ppath.join(curr, Filename.pnpCjs); + if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, cjsCandidate); + const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs); + if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile()) + return addToCacheAndReturn(start, curr, legacyCjsCandidate); + next = ppath.dirname(curr); + } while (curr !== PortablePath.root); + return addToCacheAndReturn(start, curr, null); + } + const moduleToApiPathCache = /* @__PURE__ */ new WeakMap(); + function getApiPathFromParent(parent) { + if (parent == null) + return initialApiPath; + let apiPath = moduleToApiPathCache.get(parent); + if (typeof apiPath !== `undefined`) + return apiPath; + apiPath = parent.filename ? findApiPathFor(parent.filename) : null; + moduleToApiPathCache.set(parent, apiPath); + return apiPath; + } + return { + getApiPathFromParent, + findApiPathFor, + getApiEntry + }; +} + +const localFs = { ...fs__default.default }; +const nodeFs = new NodeFS(localFs); +const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState); +const defaultPnpapiResolution = __filename; +const defaultFsLayer = new VirtualFS({ + baseFs: new ZipOpenFS({ + baseFs: nodeFs, + maxOpenFiles: 80, + readOnlyArchives: true + }) +}); +class DynamicFS extends ProxiedFS { + baseFs = defaultFsLayer; + constructor() { + super(ppath); + } + mapToBase(p) { + return p; + } + mapFromBase(p) { + return p; + } +} +const dynamicFsLayer = new DynamicFS(); +let manager; +const defaultApi = Object.assign(makeApi(defaultRuntimeState, { + fakeFs: dynamicFsLayer, + pnpapiResolution: defaultPnpapiResolution +}), { + /** + * Can be used to generate a different API than the default one (for example + * to map it on `/` rather than the local directory path, or to use a + * different FS layer than the default one). + */ + makeApi: ({ + basePath = void 0, + fakeFs = dynamicFsLayer, + pnpapiResolution = defaultPnpapiResolution, + ...rest + }) => { + const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState; + return makeApi(apiRuntimeState, { + fakeFs, + pnpapiResolution, + ...rest + }); + }, + /** + * Will inject the specified API into the environment, monkey-patching FS. Is + * automatically called when the hook is loaded through `--require`. + */ + setup: (api) => { + applyPatch(api || defaultApi, { + fakeFs: defaultFsLayer, + manager + }); + dynamicFsLayer.baseFs = new NodeFS(fs__default.default); + } +}); +manager = makeManager(defaultApi, { + fakeFs: dynamicFsLayer +}); +if (module.parent && module.parent.id === `internal/preload`) { + defaultApi.setup(); + if (module.filename) { + delete require$$0__default.default._cache[module.filename]; + } +} +if (process.mainModule === module) { + const reportError = (code, message, data) => { + process.stdout.write(`${JSON.stringify([{ code, message, data }, null])} +`); + }; + const reportSuccess = (resolution) => { + process.stdout.write(`${JSON.stringify([null, resolution])} +`); + }; + const processResolution = (request, issuer) => { + try { + reportSuccess(defaultApi.resolveRequest(request, issuer)); + } catch (error) { + reportError(error.code, error.message, error.data); + } + }; + const processRequest = (data) => { + try { + const [request, issuer] = JSON.parse(data); + processResolution(request, issuer); + } catch (error) { + reportError(`INVALID_JSON`, error.message, error.data); + } + }; + if (process.argv.length > 2) { + if (process.argv.length !== 4) { + process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} +`); + process.exitCode = 64; + } else { + processResolution(process.argv[2], process.argv[3]); + } + } else { + let buffer = ``; + const decoder = new StringDecoder__default.default.StringDecoder(); + process.stdin.on(`data`, (chunk) => { + buffer += decoder.write(chunk); + do { + const index = buffer.indexOf(` +`); + if (index === -1) + break; + const line = buffer.slice(0, index); + buffer = buffer.slice(index + 1); + processRequest(line); + } while (true); + }); + } +} + +module.exports = defaultApi; diff --git a/.pnp.loader.mjs b/.pnp.loader.mjs new file mode 100644 index 000000000..e5a542909 --- /dev/null +++ b/.pnp.loader.mjs @@ -0,0 +1,2126 @@ +/* eslint-disable */ +// @ts-nocheck + +import fs from 'fs'; +import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; +import path from 'path'; +import { createHash } from 'crypto'; +import { EOL } from 'os'; +import esmModule, { createRequire, isBuiltin } from 'module'; +import assert from 'assert'; + +const SAFE_TIME = 456789e3; + +const PortablePath = { + root: `/`, + dot: `.`, + parent: `..` +}; +const npath = Object.create(path); +const ppath = Object.create(path.posix); +npath.cwd = () => process.cwd(); +ppath.cwd = process.platform === `win32` ? () => toPortablePath(process.cwd()) : process.cwd; +if (process.platform === `win32`) { + ppath.resolve = (...segments) => { + if (segments.length > 0 && ppath.isAbsolute(segments[0])) { + return path.posix.resolve(...segments); + } else { + return path.posix.resolve(ppath.cwd(), ...segments); + } + }; +} +const contains = function(pathUtils, from, to) { + from = pathUtils.normalize(from); + to = pathUtils.normalize(to); + if (from === to) + return `.`; + if (!from.endsWith(pathUtils.sep)) + from = from + pathUtils.sep; + if (to.startsWith(from)) { + return to.slice(from.length); + } else { + return null; + } +}; +npath.contains = (from, to) => contains(npath, from, to); +ppath.contains = (from, to) => contains(ppath, from, to); +const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; +const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; +const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; +const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; +function fromPortablePathWin32(p) { + let portablePathMatch, uncPortablePathMatch; + if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) + p = portablePathMatch[1]; + else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) + p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; + else + return p; + return p.replace(/\//g, `\\`); +} +function toPortablePathWin32(p) { + p = p.replace(/\\/g, `/`); + let windowsPathMatch, uncWindowsPathMatch; + if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) + p = `/${windowsPathMatch[1]}`; + else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) + p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; + return p; +} +const toPortablePath = process.platform === `win32` ? toPortablePathWin32 : (p) => p; +const fromPortablePath = process.platform === `win32` ? fromPortablePathWin32 : (p) => p; +npath.fromPortablePath = fromPortablePath; +npath.toPortablePath = toPortablePath; +function convertPath(targetPathUtils, sourcePath) { + return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); +} + +const defaultTime = new Date(SAFE_TIME * 1e3); +const defaultTimeMs = defaultTime.getTime(); +async function copyPromise(destinationFs, destination, sourceFs, source, opts) { + const normalizedDestination = destinationFs.pathUtils.normalize(destination); + const normalizedSource = sourceFs.pathUtils.normalize(source); + const prelayout = []; + const postlayout = []; + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); + await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); + await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); + for (const operation of prelayout) + await operation(); + await Promise.all(postlayout.map((operation) => { + return operation(); + })); +} +async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) { + const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; + const sourceStat = await sourceFs.lstatPromise(source); + const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; + let updated; + switch (true) { + case sourceStat.isDirectory(): + { + updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isFile(): + { + updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + case sourceStat.isSymbolicLink(): + { + updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } + break; + default: { + throw new Error(`Unsupported file type (${sourceStat.mode})`); + } + } + if (opts.linkStrategy?.type !== `HardlinkFromIndex` || !sourceStat.isFile()) { + if (updated || destinationStat?.mtime?.getTime() !== mtime.getTime() || destinationStat?.atime?.getTime() !== atime.getTime()) { + postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime)); + updated = true; + } + if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { + postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); + updated = true; + } + } + return updated; +} +async function maybeLStat(baseFs, p) { + try { + return await baseFs.lstatPromise(p); + } catch (e) { + return null; + } +} +async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null && !destinationStat.isDirectory()) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + let updated = false; + if (destinationStat === null) { + prelayout.push(async () => { + try { + await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); + } catch (err) { + if (err.code !== `EEXIST`) { + throw err; + } + } + }); + updated = true; + } + const entries = await sourceFs.readdirPromise(source); + const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; + if (opts.stableSort) { + for (const entry of entries.sort()) { + if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { + updated = true; + } + } + } else { + const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { + await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); + })); + if (entriesUpdateStatus.some((status) => status)) { + updated = true; + } + } + return updated; +} +async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) { + const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` }); + const defaultMode = 420; + const sourceMode = sourceStat.mode & 511; + const indexFileName = `${sourceHash}${sourceMode !== defaultMode ? sourceMode.toString(8) : ``}`; + const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${indexFileName}.dat`); + let AtomicBehavior; + ((AtomicBehavior2) => { + AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock"; + AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename"; + })(AtomicBehavior || (AtomicBehavior = {})); + let atomicBehavior = 1 /* Rename */; + let indexStat = await maybeLStat(destinationFs, indexPath); + if (destinationStat) { + const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino; + const isIndexModified = indexStat?.mtimeMs !== defaultTimeMs; + if (isDestinationHardlinkedFromIndex) { + if (isIndexModified && linkStrategy.autoRepair) { + atomicBehavior = 0 /* Lock */; + indexStat = null; + } + } + if (!isDestinationHardlinkedFromIndex) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + } + const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null; + let tempPathCleaned = false; + prelayout.push(async () => { + if (!indexStat) { + if (atomicBehavior === 0 /* Lock */) { + await destinationFs.lockPromise(indexPath, async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(indexPath, content); + }); + } + if (atomicBehavior === 1 /* Rename */ && tempPath) { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(tempPath, content); + try { + await destinationFs.linkPromise(tempPath, indexPath); + } catch (err) { + if (err.code === `EEXIST`) { + tempPathCleaned = true; + await destinationFs.unlinkPromise(tempPath); + } else { + throw err; + } + } + } + } + if (!destinationStat) { + await destinationFs.linkPromise(indexPath, destination); + } + }); + postlayout.push(async () => { + if (!indexStat) { + await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime); + if (sourceMode !== defaultMode) { + await destinationFs.chmodPromise(indexPath, sourceMode); + } + } + if (tempPath && !tempPathCleaned) { + await destinationFs.unlinkPromise(tempPath); + } + }); + return false; +} +async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + const content = await sourceFs.readFilePromise(source); + await destinationFs.writeFilePromise(destination, content); + }); + return true; +} +async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (opts.linkStrategy?.type === `HardlinkFromIndex`) { + return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy); + } else { + return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); + } +} +async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { + if (destinationStat !== null) { + if (opts.overwrite) { + prelayout.push(async () => destinationFs.removePromise(destination)); + destinationStat = null; + } else { + return false; + } + } + prelayout.push(async () => { + await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); + }); + return true; +} + +class FakeFS { + pathUtils; + constructor(pathUtils) { + this.pathUtils = pathUtils; + } + async *genTraversePromise(init, { stableSort = false } = {}) { + const stack = [init]; + while (stack.length > 0) { + const p = stack.shift(); + const entry = await this.lstatPromise(p); + if (entry.isDirectory()) { + const entries = await this.readdirPromise(p); + if (stableSort) { + for (const entry2 of entries.sort()) { + stack.push(this.pathUtils.join(p, entry2)); + } + } else { + throw new Error(`Not supported`); + } + } else { + yield p; + } + } + } + async checksumFilePromise(path, { algorithm = `sha512` } = {}) { + const fd = await this.openPromise(path, `r`); + try { + const CHUNK_SIZE = 65536; + const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE); + const hash = createHash(algorithm); + let bytesRead = 0; + while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0) + hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead)); + return hash.digest(`hex`); + } finally { + await this.closePromise(fd); + } + } + async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { + let stat; + try { + stat = await this.lstatPromise(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) { + const entries = await this.readdirPromise(p); + await Promise.all(entries.map((entry) => { + return this.removePromise(this.pathUtils.resolve(p, entry)); + })); + } + for (let t = 0; t <= maxRetries; t++) { + try { + await this.rmdirPromise(p); + break; + } catch (error) { + if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { + throw error; + } else if (t < maxRetries) { + await new Promise((resolve) => setTimeout(resolve, t * 100)); + } + } + } + } else { + await this.unlinkPromise(p); + } + } + removeSync(p, { recursive = true } = {}) { + let stat; + try { + stat = this.lstatSync(p); + } catch (error) { + if (error.code === `ENOENT`) { + return; + } else { + throw error; + } + } + if (stat.isDirectory()) { + if (recursive) + for (const entry of this.readdirSync(p)) + this.removeSync(this.pathUtils.resolve(p, entry)); + this.rmdirSync(p); + } else { + this.unlinkSync(p); + } + } + async mkdirpPromise(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + await this.mkdirPromise(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + await this.chmodPromise(subPath, chmod); + if (utimes != null) { + await this.utimesPromise(subPath, utimes[0], utimes[1]); + } else { + const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); + await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + mkdirpSync(p, { chmod, utimes } = {}) { + p = this.resolve(p); + if (p === this.pathUtils.dirname(p)) + return void 0; + const parts = p.split(this.pathUtils.sep); + let createdDirectory; + for (let u = 2; u <= parts.length; ++u) { + const subPath = parts.slice(0, u).join(this.pathUtils.sep); + if (!this.existsSync(subPath)) { + try { + this.mkdirSync(subPath); + } catch (error) { + if (error.code === `EEXIST`) { + continue; + } else { + throw error; + } + } + createdDirectory ??= subPath; + if (chmod != null) + this.chmodSync(subPath, chmod); + if (utimes != null) { + this.utimesSync(subPath, utimes[0], utimes[1]); + } else { + const parentStat = this.statSync(this.pathUtils.dirname(subPath)); + this.utimesSync(subPath, parentStat.atime, parentStat.mtime); + } + } + } + return createdDirectory; + } + async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { + return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); + } + copySync(destination, source, { baseFs = this, overwrite = true } = {}) { + const stat = baseFs.lstatSync(source); + const exists = this.existsSync(destination); + if (stat.isDirectory()) { + this.mkdirpSync(destination); + const directoryListing = baseFs.readdirSync(source); + for (const entry of directoryListing) { + this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); + } + } else if (stat.isFile()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const content = baseFs.readFileSync(source); + this.writeFileSync(destination, content); + } + } else if (stat.isSymbolicLink()) { + if (!exists || overwrite) { + if (exists) + this.removeSync(destination); + const target = baseFs.readlinkSync(source); + this.symlinkSync(convertPath(this.pathUtils, target), destination); + } + } else { + throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); + } + const mode = stat.mode & 511; + this.chmodSync(destination, mode); + } + async changeFilePromise(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferPromise(p, content, opts); + } else { + return this.changeFileTextPromise(p, content, opts); + } + } + async changeFileBufferPromise(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = await this.readFilePromise(p); + } catch (error) { + } + if (Buffer.compare(current, content) === 0) + return; + await this.writeFilePromise(p, content, { mode }); + } + async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { + let current = ``; + try { + current = await this.readFilePromise(p, `utf8`); + } catch (error) { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + await this.writeFilePromise(p, normalizedContent, { mode }); + } + changeFileSync(p, content, opts = {}) { + if (Buffer.isBuffer(content)) { + return this.changeFileBufferSync(p, content, opts); + } else { + return this.changeFileTextSync(p, content, opts); + } + } + changeFileBufferSync(p, content, { mode } = {}) { + let current = Buffer.alloc(0); + try { + current = this.readFileSync(p); + } catch (error) { + } + if (Buffer.compare(current, content) === 0) + return; + this.writeFileSync(p, content, { mode }); + } + changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { + let current = ``; + try { + current = this.readFileSync(p, `utf8`); + } catch (error) { + } + const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; + if (current === normalizedContent) + return; + this.writeFileSync(p, normalizedContent, { mode }); + } + async movePromise(fromP, toP) { + try { + await this.renamePromise(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + await this.copyPromise(toP, fromP); + await this.removePromise(fromP); + } else { + throw error; + } + } + } + moveSync(fromP, toP) { + try { + this.renameSync(fromP, toP); + } catch (error) { + if (error.code === `EXDEV`) { + this.copySync(toP, fromP); + this.removeSync(fromP); + } else { + throw error; + } + } + } + async lockPromise(affectedPath, callback) { + const lockPath = `${affectedPath}.flock`; + const interval = 1e3 / 60; + const startTime = Date.now(); + let fd = null; + const isAlive = async () => { + let pid; + try { + [pid] = await this.readJsonPromise(lockPath); + } catch (error) { + return Date.now() - startTime < 500; + } + try { + process.kill(pid, 0); + return true; + } catch (error) { + return false; + } + }; + while (fd === null) { + try { + fd = await this.openPromise(lockPath, `wx`); + } catch (error) { + if (error.code === `EEXIST`) { + if (!await isAlive()) { + try { + await this.unlinkPromise(lockPath); + continue; + } catch (error2) { + } + } + if (Date.now() - startTime < 60 * 1e3) { + await new Promise((resolve) => setTimeout(resolve, interval)); + } else { + throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); + } + } else { + throw error; + } + } + } + await this.writePromise(fd, JSON.stringify([process.pid])); + try { + return await callback(); + } finally { + try { + await this.closePromise(fd); + await this.unlinkPromise(lockPath); + } catch (error) { + } + } + } + async readJsonPromise(p) { + const content = await this.readFilePromise(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + readJsonSync(p) { + const content = this.readFileSync(p, `utf8`); + try { + return JSON.parse(content); + } catch (error) { + error.message += ` (in ${p})`; + throw error; + } + } + async writeJsonPromise(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return await this.writeFilePromise(p, `${JSON.stringify(data, null, space)} +`); + } + writeJsonSync(p, data, { compact = false } = {}) { + const space = compact ? 0 : 2; + return this.writeFileSync(p, `${JSON.stringify(data, null, space)} +`); + } + async preserveTimePromise(p, cb) { + const stat = await this.lstatPromise(p); + const result = await cb(); + if (typeof result !== `undefined`) + p = result; + await this.lutimesPromise(p, stat.atime, stat.mtime); + } + async preserveTimeSync(p, cb) { + const stat = this.lstatSync(p); + const result = cb(); + if (typeof result !== `undefined`) + p = result; + this.lutimesSync(p, stat.atime, stat.mtime); + } +} +class BasePortableFakeFS extends FakeFS { + constructor() { + super(ppath); + } +} +function getEndOfLine(content) { + const matches = content.match(/\r?\n/g); + if (matches === null) + return EOL; + const crlf = matches.filter((nl) => nl === `\r +`).length; + const lf = matches.length - crlf; + return crlf > lf ? `\r +` : ` +`; +} +function normalizeLineEndings(originalContent, newContent) { + return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); +} + +class ProxiedFS extends FakeFS { + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + resolve(path) { + return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); + } + getRealPath() { + return this.mapFromBase(this.baseFs.getRealPath()); + } + async openPromise(p, flags, mode) { + return this.baseFs.openPromise(this.mapToBase(p), flags, mode); + } + openSync(p, flags, mode) { + return this.baseFs.openSync(this.mapToBase(p), flags, mode); + } + async opendirPromise(p, opts) { + return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); + } + opendirSync(p, opts) { + return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); + } + async readPromise(fd, buffer, offset, length, position) { + return await this.baseFs.readPromise(fd, buffer, offset, length, position); + } + readSync(fd, buffer, offset, length, position) { + return this.baseFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return await this.baseFs.writePromise(fd, buffer, offset); + } else { + return await this.baseFs.writePromise(fd, buffer, offset, length, position); + } + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.baseFs.writeSync(fd, buffer, offset); + } else { + return this.baseFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + return this.baseFs.closePromise(fd); + } + closeSync(fd) { + this.baseFs.closeSync(fd); + } + createReadStream(p, opts) { + return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); + } + createWriteStream(p, opts) { + return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); + } + async realpathPromise(p) { + return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); + } + realpathSync(p) { + return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); + } + async existsPromise(p) { + return this.baseFs.existsPromise(this.mapToBase(p)); + } + existsSync(p) { + return this.baseFs.existsSync(this.mapToBase(p)); + } + accessSync(p, mode) { + return this.baseFs.accessSync(this.mapToBase(p), mode); + } + async accessPromise(p, mode) { + return this.baseFs.accessPromise(this.mapToBase(p), mode); + } + async statPromise(p, opts) { + return this.baseFs.statPromise(this.mapToBase(p), opts); + } + statSync(p, opts) { + return this.baseFs.statSync(this.mapToBase(p), opts); + } + async fstatPromise(fd, opts) { + return this.baseFs.fstatPromise(fd, opts); + } + fstatSync(fd, opts) { + return this.baseFs.fstatSync(fd, opts); + } + lstatPromise(p, opts) { + return this.baseFs.lstatPromise(this.mapToBase(p), opts); + } + lstatSync(p, opts) { + return this.baseFs.lstatSync(this.mapToBase(p), opts); + } + async fchmodPromise(fd, mask) { + return this.baseFs.fchmodPromise(fd, mask); + } + fchmodSync(fd, mask) { + return this.baseFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return this.baseFs.chmodPromise(this.mapToBase(p), mask); + } + chmodSync(p, mask) { + return this.baseFs.chmodSync(this.mapToBase(p), mask); + } + async fchownPromise(fd, uid, gid) { + return this.baseFs.fchownPromise(fd, uid, gid); + } + fchownSync(fd, uid, gid) { + return this.baseFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); + } + chownSync(p, uid, gid) { + return this.baseFs.chownSync(this.mapToBase(p), uid, gid); + } + async renamePromise(oldP, newP) { + return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); + } + renameSync(oldP, newP) { + return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); + } + async appendFilePromise(p, content, opts) { + return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); + } + appendFileSync(p, content, opts) { + return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); + } + async writeFilePromise(p, content, opts) { + return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); + } + writeFileSync(p, content, opts) { + return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); + } + async unlinkPromise(p) { + return this.baseFs.unlinkPromise(this.mapToBase(p)); + } + unlinkSync(p) { + return this.baseFs.unlinkSync(this.mapToBase(p)); + } + async utimesPromise(p, atime, mtime) { + return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); + } + utimesSync(p, atime, mtime) { + return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime); + } + lutimesSync(p, atime, mtime) { + return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return this.baseFs.mkdirPromise(this.mapToBase(p), opts); + } + mkdirSync(p, opts) { + return this.baseFs.mkdirSync(this.mapToBase(p), opts); + } + async rmdirPromise(p, opts) { + return this.baseFs.rmdirPromise(this.mapToBase(p), opts); + } + rmdirSync(p, opts) { + return this.baseFs.rmdirSync(this.mapToBase(p), opts); + } + async rmPromise(p, opts) { + return this.baseFs.rmPromise(this.mapToBase(p), opts); + } + rmSync(p, opts) { + return this.baseFs.rmSync(this.mapToBase(p), opts); + } + async linkPromise(existingP, newP) { + return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); + } + linkSync(existingP, newP) { + return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); + } + async symlinkPromise(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); + } + symlinkSync(target, p, type) { + const mappedP = this.mapToBase(p); + if (this.pathUtils.isAbsolute(target)) + return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); + const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); + const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); + return this.baseFs.symlinkSync(mappedTarget, mappedP, type); + } + async readFilePromise(p, encoding) { + return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); + } + readFileSync(p, encoding) { + return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); + } + readdirPromise(p, opts) { + return this.baseFs.readdirPromise(this.mapToBase(p), opts); + } + readdirSync(p, opts) { + return this.baseFs.readdirSync(this.mapToBase(p), opts); + } + async readlinkPromise(p) { + return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); + } + readlinkSync(p) { + return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); + } + async truncatePromise(p, len) { + return this.baseFs.truncatePromise(this.mapToBase(p), len); + } + truncateSync(p, len) { + return this.baseFs.truncateSync(this.mapToBase(p), len); + } + async ftruncatePromise(fd, len) { + return this.baseFs.ftruncatePromise(fd, len); + } + ftruncateSync(fd, len) { + return this.baseFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.baseFs.watch( + this.mapToBase(p), + // @ts-expect-error + a, + b + ); + } + watchFile(p, a, b) { + return this.baseFs.watchFile( + this.mapToBase(p), + // @ts-expect-error + a, + b + ); + } + unwatchFile(p, cb) { + return this.baseFs.unwatchFile(this.mapToBase(p), cb); + } + fsMapToBase(p) { + if (typeof p === `number`) { + return p; + } else { + return this.mapToBase(p); + } + } +} + +function direntToPortable(dirent) { + const portableDirent = dirent; + if (typeof dirent.path === `string`) + portableDirent.path = npath.toPortablePath(dirent.path); + return portableDirent; +} +class NodeFS extends BasePortableFakeFS { + realFs; + constructor(realFs = fs) { + super(); + this.realFs = realFs; + } + getExtractHint() { + return false; + } + getRealPath() { + return PortablePath.root; + } + resolve(p) { + return ppath.resolve(p); + } + async openPromise(p, flags, mode) { + return await new Promise((resolve, reject) => { + this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); + }); + } + openSync(p, flags, mode) { + return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); + } + async opendirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (typeof opts !== `undefined`) { + this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }).then((dir) => { + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + }); + } + opendirSync(p, opts) { + const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); + const dirWithFixedPath = dir; + Object.defineProperty(dirWithFixedPath, `path`, { + value: p, + configurable: true, + writable: true + }); + return dirWithFixedPath; + } + async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { + return await new Promise((resolve, reject) => { + this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { + if (error) { + reject(error); + } else { + resolve(bytesRead); + } + }); + }); + } + readSync(fd, buffer, offset, length, position) { + return this.realFs.readSync(fd, buffer, offset, length, position); + } + async writePromise(fd, buffer, offset, length, position) { + return await new Promise((resolve, reject) => { + if (typeof buffer === `string`) { + return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); + } else { + return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); + } + }); + } + writeSync(fd, buffer, offset, length, position) { + if (typeof buffer === `string`) { + return this.realFs.writeSync(fd, buffer, offset); + } else { + return this.realFs.writeSync(fd, buffer, offset, length, position); + } + } + async closePromise(fd) { + await new Promise((resolve, reject) => { + this.realFs.close(fd, this.makeCallback(resolve, reject)); + }); + } + closeSync(fd) { + this.realFs.closeSync(fd); + } + createReadStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createReadStream(realPath, opts); + } + createWriteStream(p, opts) { + const realPath = p !== null ? npath.fromPortablePath(p) : p; + return this.realFs.createWriteStream(realPath, opts); + } + async realpathPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + realpathSync(p) { + return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); + } + async existsPromise(p) { + return await new Promise((resolve) => { + this.realFs.exists(npath.fromPortablePath(p), resolve); + }); + } + accessSync(p, mode) { + return this.realFs.accessSync(npath.fromPortablePath(p), mode); + } + async accessPromise(p, mode) { + return await new Promise((resolve, reject) => { + this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); + }); + } + existsSync(p) { + return this.realFs.existsSync(npath.fromPortablePath(p)); + } + async statPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + statSync(p, opts) { + if (opts) { + return this.realFs.statSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.statSync(npath.fromPortablePath(p)); + } + } + async fstatPromise(fd, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.fstat(fd, this.makeCallback(resolve, reject)); + } + }); + } + fstatSync(fd, opts) { + if (opts) { + return this.realFs.fstatSync(fd, opts); + } else { + return this.realFs.fstatSync(fd); + } + } + async lstatPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + lstatSync(p, opts) { + if (opts) { + return this.realFs.lstatSync(npath.fromPortablePath(p), opts); + } else { + return this.realFs.lstatSync(npath.fromPortablePath(p)); + } + } + async fchmodPromise(fd, mask) { + return await new Promise((resolve, reject) => { + this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); + }); + } + fchmodSync(fd, mask) { + return this.realFs.fchmodSync(fd, mask); + } + async chmodPromise(p, mask) { + return await new Promise((resolve, reject) => { + this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); + }); + } + chmodSync(p, mask) { + return this.realFs.chmodSync(npath.fromPortablePath(p), mask); + } + async fchownPromise(fd, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); + }); + } + fchownSync(fd, uid, gid) { + return this.realFs.fchownSync(fd, uid, gid); + } + async chownPromise(p, uid, gid) { + return await new Promise((resolve, reject) => { + this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); + }); + } + chownSync(p, uid, gid) { + return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); + } + async renamePromise(oldP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + renameSync(oldP, newP) { + return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); + } + async copyFilePromise(sourceP, destP, flags = 0) { + return await new Promise((resolve, reject) => { + this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); + }); + } + copyFileSync(sourceP, destP, flags = 0) { + return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); + } + async appendFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + appendFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.appendFileSync(fsNativePath, content, opts); + } else { + this.realFs.appendFileSync(fsNativePath, content); + } + } + async writeFilePromise(p, content, opts) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); + } + }); + } + writeFileSync(p, content, opts) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + if (opts) { + this.realFs.writeFileSync(fsNativePath, content, opts); + } else { + this.realFs.writeFileSync(fsNativePath, content); + } + } + async unlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }); + } + unlinkSync(p) { + return this.realFs.unlinkSync(npath.fromPortablePath(p)); + } + async utimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + utimesSync(p, atime, mtime) { + this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); + } + async lutimesPromise(p, atime, mtime) { + return await new Promise((resolve, reject) => { + this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); + }); + } + lutimesSync(p, atime, mtime) { + this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime); + } + async mkdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + }); + } + mkdirSync(p, opts) { + return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); + } + async rmdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmdirSync(p, opts) { + return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); + } + async rmPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + this.realFs.rm(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } else { + this.realFs.rm(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + rmSync(p, opts) { + return this.realFs.rmSync(npath.fromPortablePath(p), opts); + } + async linkPromise(existingP, newP) { + return await new Promise((resolve, reject) => { + this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); + }); + } + linkSync(existingP, newP) { + return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); + } + async symlinkPromise(target, p, type) { + return await new Promise((resolve, reject) => { + this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); + }); + } + symlinkSync(target, p, type) { + return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); + } + async readFilePromise(p, encoding) { + return await new Promise((resolve, reject) => { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); + }); + } + readFileSync(p, encoding) { + const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; + return this.realFs.readFileSync(fsNativePath, encoding); + } + async readdirPromise(p, opts) { + return await new Promise((resolve, reject) => { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(direntToPortable)), reject)); + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback((results) => resolve(results.map(npath.toPortablePath)), reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); + } + } else { + this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + } + }); + } + readdirSync(p, opts) { + if (opts) { + if (opts.recursive && process.platform === `win32`) { + if (opts.withFileTypes) { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(direntToPortable); + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts).map(npath.toPortablePath); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p), opts); + } + } else { + return this.realFs.readdirSync(npath.fromPortablePath(p)); + } + } + async readlinkPromise(p) { + return await new Promise((resolve, reject) => { + this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); + }).then((path) => { + return npath.toPortablePath(path); + }); + } + readlinkSync(p) { + return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); + } + async truncatePromise(p, len) { + return await new Promise((resolve, reject) => { + this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); + }); + } + truncateSync(p, len) { + return this.realFs.truncateSync(npath.fromPortablePath(p), len); + } + async ftruncatePromise(fd, len) { + return await new Promise((resolve, reject) => { + this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); + }); + } + ftruncateSync(fd, len) { + return this.realFs.ftruncateSync(fd, len); + } + watch(p, a, b) { + return this.realFs.watch( + npath.fromPortablePath(p), + // @ts-expect-error + a, + b + ); + } + watchFile(p, a, b) { + return this.realFs.watchFile( + npath.fromPortablePath(p), + // @ts-expect-error + a, + b + ); + } + unwatchFile(p, cb) { + return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); + } + makeCallback(resolve, reject) { + return (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }; + } +} + +const NUMBER_REGEXP = /^[0-9]+$/; +const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; +const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; +class VirtualFS extends ProxiedFS { + baseFs; + static makeVirtualPath(base, component, to) { + if (ppath.basename(base) !== `__virtual__`) + throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); + if (!ppath.basename(component).match(VALID_COMPONENT)) + throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); + const target = ppath.relative(ppath.dirname(base), to); + const segments = target.split(`/`); + let depth = 0; + while (depth < segments.length && segments[depth] === `..`) + depth += 1; + const finalSegments = segments.slice(depth); + const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); + return fullVirtualPath; + } + static resolveVirtual(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match || !match[3] && match[5]) + return p; + const target = ppath.dirname(match[1]); + if (!match[3] || !match[4]) + return target; + const isnum = NUMBER_REGEXP.test(match[4]); + if (!isnum) + return p; + const depth = Number(match[4]); + const backstep = `../`.repeat(depth); + const subpath = match[5] || `.`; + return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); + } + constructor({ baseFs = new NodeFS() } = {}) { + super(ppath); + this.baseFs = baseFs; + } + getExtractHint(hints) { + return this.baseFs.getExtractHint(hints); + } + getRealPath() { + return this.baseFs.getRealPath(); + } + realpathSync(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return this.baseFs.realpathSync(p); + if (!match[5]) + return p; + const realpath = this.baseFs.realpathSync(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + async realpathPromise(p) { + const match = p.match(VIRTUAL_REGEXP); + if (!match) + return await this.baseFs.realpathPromise(p); + if (!match[5]) + return p; + const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); + return VirtualFS.makeVirtualPath(match[1], match[3], realpath); + } + mapToBase(p) { + if (p === ``) + return p; + if (this.pathUtils.isAbsolute(p)) + return VirtualFS.resolveVirtual(p); + const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); + const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); + return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; + } + mapFromBase(p) { + return p; + } +} + +const URL = Number(process.versions.node.split('.', 1)[0]) < 20 ? URL$1 : globalThis.URL; + +const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); +const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; +const HAS_LAZY_LOADED_TRANSLATORS = major === 20 && minor < 6 || major === 19 && minor >= 3; +const SUPPORTS_IMPORT_ATTRIBUTES = major >= 21 || major === 20 && minor >= 10 || major === 18 && minor >= 20; +const SUPPORTS_IMPORT_ATTRIBUTES_ONLY = major >= 22; + +function readPackageScope(checkPath) { + const rootSeparatorIndex = checkPath.indexOf(npath.sep); + let separatorIndex; + do { + separatorIndex = checkPath.lastIndexOf(npath.sep); + checkPath = checkPath.slice(0, separatorIndex); + if (checkPath.endsWith(`${npath.sep}node_modules`)) + return false; + const pjson = readPackage(checkPath + npath.sep); + if (pjson) { + return { + data: pjson, + path: checkPath + }; + } + } while (separatorIndex > rootSeparatorIndex); + return false; +} +function readPackage(requestPath) { + const jsonPath = npath.resolve(requestPath, `package.json`); + if (!fs.existsSync(jsonPath)) + return null; + return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); +} + +async function tryReadFile$1(path2) { + try { + return await fs.promises.readFile(path2, `utf8`); + } catch (error) { + if (error.code === `ENOENT`) + return null; + throw error; + } +} +function tryParseURL(str, base) { + try { + return new URL(str, base); + } catch { + return null; + } +} +let entrypointPath = null; +function setEntrypointPath(file) { + entrypointPath = file; +} +function getFileFormat(filepath) { + const ext = path.extname(filepath); + switch (ext) { + case `.mjs`: { + return `module`; + } + case `.cjs`: { + return `commonjs`; + } + case `.wasm`: { + throw new Error( + `Unknown file extension ".wasm" for ${filepath}` + ); + } + case `.json`: { + return `json`; + } + case `.js`: { + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + return pkg.data.type ?? `commonjs`; + } + default: { + if (entrypointPath !== filepath) + return null; + const pkg = readPackageScope(filepath); + if (!pkg) + return `commonjs`; + if (pkg.data.type === `module`) + return null; + return pkg.data.type ?? `commonjs`; + } + } +} + +async function load$1(urlString, context, nextLoad) { + const url = tryParseURL(urlString); + if (url?.protocol !== `file:`) + return nextLoad(urlString, context, nextLoad); + const filePath = fileURLToPath(url); + const format = getFileFormat(filePath); + if (!format) + return nextLoad(urlString, context, nextLoad); + if (format === `json`) { + if (SUPPORTS_IMPORT_ATTRIBUTES_ONLY) { + if (context.importAttributes?.type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ATTRIBUTE_MISSING]: Module "${urlString}" needs an import attribute of "type: json"`); + err.code = `ERR_IMPORT_ATTRIBUTE_MISSING`; + throw err; + } + } else { + const type = `importAttributes` in context ? context.importAttributes?.type : context.importAssertions?.type; + if (type !== `json`) { + const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import ${SUPPORTS_IMPORT_ATTRIBUTES ? `attribute` : `assertion`} of type "json"`); + err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`; + throw err; + } + } + } + if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { + const pathToSend = pathToFileURL( + npath.fromPortablePath( + VirtualFS.resolveVirtual(npath.toPortablePath(filePath)) + ) + ).href; + process.send({ + "watch:import": WATCH_MODE_MESSAGE_USES_ARRAYS ? [pathToSend] : pathToSend + }); + } + return { + format, + source: format === `commonjs` ? void 0 : await fs.promises.readFile(filePath, `utf8`), + shortCircuit: true + }; +} + +const ArrayIsArray = Array.isArray; +const JSONStringify = JSON.stringify; +const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; +const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); +const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); +const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); +const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); +const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); +const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); +const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); +const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); +const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); +const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); +const SafeMap = Map; +const JSONParse = JSON.parse; + +function createErrorType(code, messageCreator, errorType) { + return class extends errorType { + constructor(...args) { + super(messageCreator(...args)); + this.code = code; + this.name = `${errorType.name} [${code}]`; + } + }; +} +const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( + `ERR_PACKAGE_IMPORT_NOT_DEFINED`, + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; + }, + TypeError +); +const ERR_INVALID_MODULE_SPECIFIER = createErrorType( + `ERR_INVALID_MODULE_SPECIFIER`, + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; + }, + TypeError +); +const ERR_INVALID_PACKAGE_TARGET = createErrorType( + `ERR_INVALID_PACKAGE_TARGET`, + (pkgPath, key, target, isImport = false, base = void 0) => { + const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); + if (key === `.`) { + assert(isImport === false); + return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + } + return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( + target + )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; + }, + Error +); +const ERR_INVALID_PACKAGE_CONFIG = createErrorType( + `ERR_INVALID_PACKAGE_CONFIG`, + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; + }, + Error +); + +function filterOwnProperties(source, keys) { + const filtered = /* @__PURE__ */ Object.create(null); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (ObjectPrototypeHasOwnProperty(source, key)) { + filtered[key] = source[key]; + } + } + return filtered; +} + +const packageJSONCache = new SafeMap(); +function getPackageConfig(path, specifier, base, readFileSyncFn) { + const existing = packageJSONCache.get(path); + if (existing !== void 0) { + return existing; + } + const source = readFileSyncFn(path); + if (source === void 0) { + const packageConfig2 = { + pjsonPath: path, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(path, packageConfig2); + return packageConfig2; + } + let packageJSON; + try { + packageJSON = JSONParse(source); + } catch (error) { + throw new ERR_INVALID_PACKAGE_CONFIG( + path, + (base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier), + error.message + ); + } + let { imports, main, name, type } = filterOwnProperties(packageJSON, [ + "imports", + "main", + "name", + "type" + ]); + const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; + if (typeof imports !== "object" || imports === null) { + imports = void 0; + } + if (typeof main !== "string") { + main = void 0; + } + if (typeof name !== "string") { + name = void 0; + } + if (type !== "module" && type !== "commonjs") { + type = "none"; + } + const packageConfig = { + pjsonPath: path, + exists: true, + main, + name, + type, + exports, + imports + }; + packageJSONCache.set(path, packageConfig); + return packageConfig; +} +function getPackageScopeConfig(resolved, readFileSyncFn) { + let packageJSONUrl = new URL("./package.json", resolved); + while (true) { + const packageJSONPath2 = packageJSONUrl.pathname; + if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { + break; + } + const packageConfig2 = getPackageConfig( + fileURLToPath(packageJSONUrl), + resolved, + void 0, + readFileSyncFn + ); + if (packageConfig2.exists) { + return packageConfig2; + } + const lastPackageJSONUrl = packageJSONUrl; + packageJSONUrl = new URL("../package.json", packageJSONUrl); + if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { + break; + } + } + const packageJSONPath = fileURLToPath(packageJSONUrl); + const packageConfig = { + pjsonPath: packageJSONPath, + exists: false, + main: void 0, + name: void 0, + type: "none", + exports: void 0, + imports: void 0 + }; + packageJSONCache.set(packageJSONPath, packageConfig); + return packageConfig; +} + +function throwImportNotDefined(specifier, packageJSONUrl, base) { + throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( + specifier, + packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)), + fileURLToPath(base) + ); +} +function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { + const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${fileURLToPath(packageJSONUrl)}`; + throw new ERR_INVALID_MODULE_SPECIFIER( + subpath, + reason, + base && fileURLToPath(base) + ); +} +function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { + if (typeof target === "object" && target !== null) { + target = JSONStringify(target, null, ""); + } else { + target = `${target}`; + } + throw new ERR_INVALID_PACKAGE_TARGET( + fileURLToPath(new URL(".", packageJSONUrl)), + subpath, + target, + internal, + base && fileURLToPath(base) + ); +} +const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; +const patternRegEx = /\*/g; +function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { + if (subpath !== "" && !pattern && target[target.length - 1] !== "/") + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (!StringPrototypeStartsWith(target, "./")) { + if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { + let isURL = false; + try { + new URL(target); + isURL = true; + } catch { + } + if (!isURL) { + const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; + return exportTarget; + } + } + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + } + if (RegExpPrototypeExec( + invalidSegmentRegEx, + StringPrototypeSlice(target, 2) + ) !== null) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + const resolved = new URL(target, packageJSONUrl); + const resolvedPath = resolved.pathname; + const packagePath = new URL(".", packageJSONUrl).pathname; + if (!StringPrototypeStartsWith(resolvedPath, packagePath)) + throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); + if (subpath === "") return resolved; + if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { + const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; + throwInvalidSubpath(request, packageJSONUrl, internal, base); + } + if (pattern) { + return new URL( + RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) + ); + } + return new URL(subpath, resolved); +} +function isArrayIndex(key) { + const keyNum = +key; + if (`${keyNum}` !== key) return false; + return keyNum >= 0 && keyNum < 4294967295; +} +function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { + if (typeof target === "string") { + return resolvePackageTargetString( + target, + subpath, + packageSubpath, + packageJSONUrl, + base, + pattern, + internal); + } else if (ArrayIsArray(target)) { + if (target.length === 0) { + return null; + } + let lastException; + for (let i = 0; i < target.length; i++) { + const targetItem = target[i]; + let resolveResult; + try { + resolveResult = resolvePackageTarget( + packageJSONUrl, + targetItem, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + } catch (e) { + lastException = e; + if (e.code === "ERR_INVALID_PACKAGE_TARGET") { + continue; + } + throw e; + } + if (resolveResult === void 0) { + continue; + } + if (resolveResult === null) { + lastException = null; + continue; + } + return resolveResult; + } + if (lastException === void 0 || lastException === null) + return lastException; + throw lastException; + } else if (typeof target === "object" && target !== null) { + const keys = ObjectGetOwnPropertyNames(target); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (isArrayIndex(key)) { + throw new ERR_INVALID_PACKAGE_CONFIG( + fileURLToPath(packageJSONUrl), + base, + '"exports" cannot contain numeric property keys.' + ); + } + } + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key === "default" || conditions.has(key)) { + const conditionalTarget = target[key]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + conditionalTarget, + subpath, + packageSubpath, + base, + pattern, + internal, + conditions + ); + if (resolveResult === void 0) continue; + return resolveResult; + } + } + return void 0; + } else if (target === null) { + return null; + } + throwInvalidPackageTarget( + packageSubpath, + target, + packageJSONUrl, + internal, + base + ); +} +function patternKeyCompare(a, b) { + const aPatternIndex = StringPrototypeIndexOf(a, "*"); + const bPatternIndex = StringPrototypeIndexOf(b, "*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + return 0; +} +function packageImportsResolve({ name, base, conditions, readFileSyncFn }) { + if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { + const reason = "is not a valid internal imports specifier name"; + throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base)); + } + let packageJSONUrl; + const packageConfig = getPackageScopeConfig(base, readFileSyncFn); + if (packageConfig.exists) { + packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); + const imports = packageConfig.imports; + if (imports) { + if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { + const resolveResult = resolvePackageTarget( + packageJSONUrl, + imports[name], + "", + name, + base, + false, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } else { + let bestMatch = ""; + let bestMatchSubpath; + const keys = ObjectGetOwnPropertyNames(imports); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = StringPrototypeIndexOf(key, "*"); + if (patternIndex !== -1 && StringPrototypeStartsWith( + name, + StringPrototypeSlice(key, 0, patternIndex) + )) { + const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); + if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { + bestMatch = key; + bestMatchSubpath = StringPrototypeSlice( + name, + patternIndex, + name.length - patternTrailer.length + ); + } + } + } + if (bestMatch) { + const target = imports[bestMatch]; + const resolveResult = resolvePackageTarget( + packageJSONUrl, + target, + bestMatchSubpath, + bestMatch, + base, + true, + true, + conditions + ); + if (resolveResult != null) { + return resolveResult; + } + } + } + } + } + throwImportNotDefined(name, packageJSONUrl, base); +} + +let findPnpApi = esmModule.findPnpApi; +if (!findPnpApi) { + const require = createRequire(import.meta.url); + const pnpApi = require(`./.pnp.cjs`); + pnpApi.setup(); + findPnpApi = esmModule.findPnpApi; +} +const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; +const isRelativeRegexp = /^\.{0,2}\//; +function tryReadFile(filePath) { + try { + return fs.readFileSync(filePath, `utf8`); + } catch (err) { + if (err.code === `ENOENT`) + return void 0; + throw err; + } +} +async function resolvePrivateRequest(specifier, issuer, context, nextResolve) { + const resolved = packageImportsResolve({ + name: specifier, + base: pathToFileURL(issuer), + conditions: new Set(context.conditions), + readFileSyncFn: tryReadFile + }); + if (resolved instanceof URL) { + return { url: resolved.href, shortCircuit: true }; + } else { + if (resolved.startsWith(`#`)) + throw new Error(`Mapping from one private import to another isn't allowed`); + return resolve$1(resolved, context, nextResolve); + } +} +async function resolve$1(originalSpecifier, context, nextResolve) { + if (!findPnpApi || isBuiltin(originalSpecifier)) + return nextResolve(originalSpecifier, context, nextResolve); + let specifier = originalSpecifier; + const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0); + if (url) { + if (url.protocol !== `file:`) + return nextResolve(originalSpecifier, context, nextResolve); + specifier = fileURLToPath(url); + } + const { parentURL, conditions = [] } = context; + const issuer = parentURL && tryParseURL(parentURL)?.protocol === `file:` ? fileURLToPath(parentURL) : process.cwd(); + const pnpapi = findPnpApi(issuer) ?? (url ? findPnpApi(specifier) : null); + if (!pnpapi) + return nextResolve(originalSpecifier, context, nextResolve); + if (specifier.startsWith(`#`)) + return resolvePrivateRequest(specifier, issuer, context, nextResolve); + const dependencyNameMatch = specifier.match(pathRegExp); + let allowLegacyResolve = false; + if (dependencyNameMatch) { + const [, dependencyName, subPath] = dependencyNameMatch; + if (subPath === `` && dependencyName !== `pnpapi`) { + const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); + if (resolved) { + const content = await tryReadFile$1(resolved); + if (content) { + const pkg = JSON.parse(content); + allowLegacyResolve = pkg.exports == null; + } + } + } + } + let result; + try { + result = pnpapi.resolveRequest(specifier, issuer, { + conditions: new Set(conditions), + // TODO: Handle --experimental-specifier-resolution=node + extensions: allowLegacyResolve ? void 0 : [] + }); + } catch (err) { + if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + err.code = `ERR_MODULE_NOT_FOUND`; + throw err; + } + if (!result) + throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); + const resultURL = pathToFileURL(result); + if (url) { + resultURL.search = url.search; + resultURL.hash = url.hash; + } + if (!parentURL) + setEntrypointPath(fileURLToPath(resultURL)); + return { + url: resultURL.href, + shortCircuit: true + }; +} + +if (!HAS_LAZY_LOADED_TRANSLATORS) { + const binding = process.binding(`fs`); + const originalReadFile = binding.readFileUtf8 || binding.readFileSync; + if (originalReadFile) { + binding[originalReadFile.name] = function(...args) { + try { + return fs.readFileSync(args[0], { + encoding: `utf8`, + // @ts-expect-error - The docs says it needs to be a string but + // links to https://nodejs.org/dist/latest-v20.x/docs/api/fs.html#file-system-flags + // which says it can be a number which matches the implementation. + flag: args[1] + }); + } catch { + } + return originalReadFile.apply(this, args); + }; + } else { + const binding2 = process.binding(`fs`); + const originalfstat = binding2.fstat; + const ZIP_MASK = 4278190080; + const ZIP_MAGIC = 704643072; + binding2.fstat = function(...args) { + const [fd, useBigint, req] = args; + if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) { + try { + const stats = fs.fstatSync(fd); + return new Float64Array([ + stats.dev, + stats.mode, + stats.nlink, + stats.uid, + stats.gid, + stats.rdev, + stats.blksize, + stats.ino, + stats.size, + stats.blocks + // atime sec + // atime ns + // mtime sec + // mtime ns + // ctime sec + // ctime ns + // birthtime sec + // birthtime ns + ]); + } catch { + } + } + return originalfstat.apply(this, args); + }; + } +} + +const resolve = resolve$1; +const load = load$1; + +export { load, resolve }; diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e976c1100e9a21269c37de4dbf2c40e3093a797 GIT binary patch literal 884034 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

&mgSUPW@^{SzgGGIi~gG{agBe3W8dw z+>>y@cnmHqek9A4xf)9_o}HvGPcgww_v-X<=g_;K zI|G^LX%kH03!dgKM=s0>h{B?nF=yHC?=jafIN7{)@|~KF;i;7X9^~&I32Txl6Uvf3 zNO?9botq7i)T%z{)|@q1JjrT+6){>jM;9UJRtn=!+XI6-(m75y(oaA8< z0)p8n^YNyL>h&s8Tf7rAEKA;g;xB$Iz{OoqfHOX2U<=7YNzN`P8xAg+mIHnR0E+!y zr)1STgE>YZ;#p1BtcWfykNOnl)BwmsFKaJtU2GEgk+aEv|x6wTkkvug<<=I>g3fKioA~M9M<(Y*xH0o0j%H+ z&9O0hd^J8tFURY%GpE?_zd9W|5>k6|(|0l!U=xTiLKLxfaG5OYz*CaS>W(w%YV$Ro zWG5TftWg-M8_qc7Ne*vz!ILU|zuI~!ppc%WvuQzfcyXuj zQ5Y|%damLuxVRP=_7VMq^}y{|SC(7*Is1i4)T(-sJm7WHYZCDy_W(L^Qo3xI zLqY4qj4h|fc%n^Zs)fx9p9NnY+|t{OC|!S4Y`VG=d`z;`U#lk$VRjfwMRk+rhE%4f zAqv6iaG@DK_SIo=b5X9G_qgL;|Kw9?$OKxuXzEXS6xd4yypf&D>nZ#o@{B6I-b2ah zrL~H}S?x}7uSDTgQK^Ly$Gs(-ITZ7MzT?c=7B7FohWyF6`0(Ne=UwY4T29LH>p>T6 z>Gqrq`ETQFewEY3d7gV2WcOc@Gj1UBYs_^@AC2q2zFPANx^EZ)1`8*Q(llu=BA|G+ z4_2?GvXdn_-BzNap(l++0&C2KdQ}_Lc_FS}ckb?w`wCqFZXnw2L--aH^uglPYJ2~V zx0czE{U!sJtTs!K#o9fXy8+g;YuG2@TTwMc62$on5Lq@M{dr6A1ghHiN*}l{;kcF8 zFt*(UbzHqs*;!Yr)k}$1P5!J5Ux1x7&Q|@-J)d=p2?LU5vSs8cgiOX2t1oYaw`-%T zuS!cbWRM1kLK3hmv64c$@=4}ruGTj!$g($y$i}T3I#G$tmu{}3_oDQNk+E>g!{t=y zhPLNzDe!+jq4Ru%T_y%41^kE*Nd&}|1)?r+|JeG}BTVL=@=AgnZ@(BC91^E*K)F1@ zl(T4OF1_wU+n?1Mxz{1&kTAR@-wp0P2MKki+{=5UP?lb-eJvEm?0#ELjCXQjK=^K% zDKBO>_!v;*J5>8K3B51$dY#=sf!%J5w-rD-@pL0b0xp~F?Mz_{T^{~o0US$m41@J; zrxk*XYQMN(^1bFvb*ty}Jsf!LpatCG|V9#0`HUC^o#4xuTYq zfC42pLGy#1r;Tg2Wu{da6%+%+F|=T(W`oYjK3+Au1N?wHv5scW*tZyCN}8Oy{DI1p zfcwNn%*&c2cI;NrmGy;tlF8M>Ly9>Y%D`f37UL~HJmYm_I)Z3U6db#;{ch}^qmRiv zoHgzZ=&!HpN94t5q|U}zd7o<}2=2p^zcxA9tvyDCO45uYz=@S(xNic4LwL%Y=k7F5~ zOoWLwZN)|+P@yThVsbefx@ijc%tn%c3;{_b1BLHpgevPi-o@iFoX;Kwwng`zN}-Hz z)ZIy5uCJ`;i97@Xs&dy_Y{^i@IfjT(${T}&pYJU) zFBtrR&Jo+_?Z$P>DgNMcF60AxkvKGS!67yj6@HjDq3gPG7_u3UC4TPL)!0BP@XDVK z_J^ln-od~-W~}z>v%oMW{KAJC2VSW=4*NWlLhVSe6&BhzXuayx^|KUe2&o5KNzB|M z>`5nQ;cjT8R0b5&1#_`rxPjX-a#eo2&MSf2_<5Q5d!9NkiVLNPj&gcV2LIskk-MKo zkwvY|3o-WDhlOF7Fm$HT2ePzdiv(1D<=mX3b@nx*oC897Vo-0pZ+br@M<=W&S1liZ zA!99N46g+eH!lLb!C(ze=`;rS5}{m0{$pF0S= z9HrrVH#xOBxQI_W^OP*HWhbj-cLA2^ZPw#5Ht9^hhNA(FvpV)H>@XJk>n{A;nHj*& z66_2M)+iniSv_^q2>!k*nA}mmGNBr6TgkPsz)G_li|OWkpX+;zm5U?+9ha8P)sMgw z0c)rgwmbgRJRK7qM-JB7Ytw9*z)%210+v0Bio0EL9vE1?cAX>?I(5mtnj`7ZJD#Uo z`H{&lWAT7V%eVeA$m;zbE$>*~-{X#p8_PMPHcXQRk^M!~R@)ld`Tu0_4)a*n-2}we z`w<|Yv0;I^SR`xFNj>o;@A)Kb8M#uK6cr)N--)P>x;tNl9JYjBqw?t;m0=Z@c-ZR) z<-rpP^{8g$3ir`Oe+glG?ehR{d@F_^wFiz$F4s4F-_{r#(PYm;gmF+T=D5-s$K#Ty z(9oc!)dj|c zk#RMDe+Vpu@H~YV?Ltlh=gR%+v})0Y@!?2VhsMa6{DNixywgg6xR81K%z0>?^_H9RmwQE)^flZb=Xv^&@a*} zxk+qZ@s9Nl10V?8gAoF93iMmy2-b=`%Mv9PCc_M?0`DbftCiK^7=GCbT{mqARh2GG z(vgh#?nZYFTy2m!uPEGK0tHqIq`@i>*smluWb#gTgLNdl-Pa)Au|q;HB);pub#iR7 zbHfY@&}ruj%kO@LG$FZ=mN1*)6o;Ce)rOVC1aeb=`5VcGHs%IW22 zfib3((UJ@aT20<8{0P)uo&-{ftVx+(@F4|mAxsU2aMy@^S$R<{guFt#sb7e-Kx!|< zBX{sW5{KWVaB(DUBtzHS6F~93vDfNhUxapIBz~6ZZ2CkP@LEnSLF%6F3LPc!b7=4g`fme|h~2 z(UT2}LYu4PI-$^=sKKd*&8{f-@0BIzgN0w(lup{b1EIn6rzHM zkeT3pUh;$=7kMR$fnF8n(AsNh_r1vtMVHfiTzjf31B+ARC@ub_#1`<&ci;UqQa1B2 z>wS8SXx#vQ3)!4Y&Hl(n?Snx8t_3X&UK~qxmfGK#3^7d9+hY#8=`CrsIozGqPkCu{ z2e`#*0Og&)zh{~_4o^bLMTvkr*Khy!r+?kQ|82#e&;B_|{R1AQe$FvJ=a`>!%+ERI z=N$8Mj`@GjF~9xGpZ@uezkb7z|NNid|GeM(JA?kOJd`1zTVo|OvY^N;01e80OKv`J z6EH`?>L*#3C#CH9$h-=OzmfvHB5}Y?2MaZYbF}=lHR32S^;vj$=WEZ9$>nGxX0^ZC z4(uH=KMY)&fHk|^t z39>HI$SF~~4?ktUs35kb=eE%o@ntmr=BFr}L@V=E{fp;foj@RkGhx2=L4~ zguf?NrVV?ThD!``2kZ@YJKMG`-X(X>T)2y9r1ZxbBKDPipNj3_V7F;I7@=--sy2!4 z3luxjJvHl;4v5D43Er(hxl3ttQx+xx5GDBUxHQ>E^4%j^w6Jnurr~o>g`U6tt>3N{ zL7<=lP^Q%gEq#e&&!ID(%>+Zmu?Z2Z759tIHFph*it(;%)u~qMAjf_KiJ*#=#u_XW1YT7h!L zk>z_+E^T`Hu{(%>oZjeTlDMpati`Xgm_*@vgZJZ_v+^d22X<+!p{lGN{6&d%AB+)s z$UKmBWlzbcystH1Jszq*(C}{M3q^tCx=z_0UUjF~Xq-5WNia4H3f7aKdpi#lY#I(M zX*@|FY(m1EQD6k7Bo^DzN)fe*CJdh02LCMik7 zW6%0huTt-Eh2^Q3<84TTu&&*cK-NLM^oEO152XBJe~G zwTLAYAk1VKWC``gjuZ^DTf>~%A%2gxh#moHlP;`WD3nR+%t2stp8g;|lpA3W6c~Kf z%GL%6FF4%3q!Y5+VcxT2Bxd9DqPv_XjZH!}z)kG(XPa zy;|n-rwH@6arVQ_;VuV8NUg%IBO`hz9#G~qmN`*&^9qr}dtbGXS58Stdp*d-CZfF% zL~@v%3#^O?2NzE>jmK%i8R2X3zA2E!<`Z0U8>g^eMLBA=wZL@`)ZnNa5zIRXMA#Vo~Cm}pakT^Wr9ZmC=PP_BWB+9Y)rl^3Y z3(qAZ=ha&X-9eChrVJ3^rg*&i3siXu{Aie?LgdQ>Zy{f7 z*Mqm~1=o^3+@=e~DxCZ5UA}k#H6Hb}ln8H1(oULi*!YuroDCW$3f`-VSC2O9{a~Tx zpdd>PB))a>yuqH$t!q{6Fs&!8W56^!E{x5YtnEv~^X2k3Wr|?L7J<#bu6Uf}yQMeIp0(ngnCq(1qXi6bPvA^4RTBBjwG0;GDz0X8Qs78KirK=N?!q!Sth zfD8@}&d?5=@W5@rBS;H=wzXbj~OOg?+ zBku@PnYHogeMzNVAV3^rKi}s<_{4Ex&kfyA21hwJ+VL)j8&IFNsR%y?hQyk2qi%NM z4uHETLgK=WVD???kmTkOR|;C%!2=o$z=S%`TMgZFaze#%Z%Tfa9ue7!)@V%M#e>ty zuFx^H)k_hRB0SD+%LKG=J3BR`XK4lZ2w57n*Sf)f#e}S#`C~S1ztlau|S)0=% zWD11MWf|gEDty<+TkamSSA&;>@NtiJ=_=G6MQ^E{F#U}(XyyXaYqE(X+OefHQtz!i z!e?-(N)Qb3Gk*HV89)7O@_r^@KNGN@3E0mB>}LY@k2(S4HWi$FT8;tS1sjJ|jAR?4a1 z>d9sY0MAWNU|Mau8SjLSOghsQQu&LGzORFm?wT&m_)FtSq+&}c%~r!->YHYm;^Q+B zAYO>t$`r2ld*B+yC&FrN@j?3wK3wytH8Oh?GDGLVwY><(T|o5a40~ zO=?FM7iB5NfhV0mM*l!?!pu=C2*1ue$#7^6lp(G4dPm1$^AM%2W2hJ>Myq=mnZq$k z0U_`T7^Qdo68_Qu`R@!X=-Hhm^`86mQRAlg2%O)|*bmC9O` z%|))WhLt-!>F?%O;MogzORMA~|K_v~+k3ND#Ubm(%Zgsz;dn(;O?~fxZB*hXAr$hNO?03)(`dVsW6wy2%CQ;cjH)f9-cG36I<A7)p>@&e3I@p(`b?*5s z+6c(;=X5BF)Y}-&qUpANYU>b+^DJ0jiwYBNJbK&KVbmlg&7OAlwUEZtn(?y(0fT2T z?%Eu?26KzHx*YMj_t>*L45EAx;$awGWdpOK+S;PbL7I2;op<(T@O3Te8EVudWmK~< z$7xoW0M?p1bO=n!J4^}}IG#feEyr6^`9J(JU*Ej`<=y)5aHIU}#k;>2`leTiyv@NH zQJqcRM=g=vrS_bu=mE5%`&BuDuWG(%9-OM4=aH_m%c-6cz%iU!ht9-sj9gLEJfILf zV6O`=Dk#?}4JsSa?apX}e+R42=zDb^V5nxPW9GgU5@{vkmtA*H^s_6@JFHVJ8mePj z%)yr>pV-)`+7zv&InL=)PEPt&XoDAgFEi?ty4WU*HeI*j;=g%${SglO*$a1nDgX80 zbKTibGUu=obGK@1p8@pI4#&!+X^%4~ArS4ex=)6#xXM|rUov7H?J!%KaSyH)Oe zP&FcwUC2b1dEaC@)!2Cy3urp9Cp=28%L+FT$xZCGsb=OA!IX=I6dC!RI z_2m%(`q|5Oe>+gVwO*T*?FoCwwA5>qJhv;O&n0_sHcN8|&^8lWGC(pcJeRZOuCA4$ z3pcAtU>(82vDl+x`E9n~0vvqm=rpri>(mr*^6fG1s&ovb8hyA{CVFW8+_8j{y-OWw z#>tD6mv;Eq(rQhh>sIGsMbpX7|J)J?F57iTA8jTwi$)CXV(AQ-wG^$b z|N2V(?abmoeVbXli+3wNy@@}6{1mUR*O2PNuQz=U74=VE+`B1;emfmi|628HtHxnq z(?tZ8Xwgk}XP4!dF_vH3>dFs)fq7*l3CT+f6SHR3|6 zwvy+`r=418ix~yfv~?wob6n8>7OEZ*O5AkxQRdxbGIt%Gdc{WG(srufOS$dt8(Ku1 zTvn9|IL4aJIE2kALwTB(i3Vn?J1?Dz2<`VnJjqHQ*Xb_KKX!9A{O=| zRokAsR&0n|JZ~mk<7CefV>{eoI=teTW-*@_PO#X$1&XFxV=( z=*;x2CK+~tvuP|Lm7lp04r)>MDbYIc+>^KXb(kMTXWm+TpbT^VI`xE(bNYs}<+;$5 zONC7oJ6D$|3cFq89>z9v(^g@1?KZM%w^7=z16eBA^l2+fZ=-O>uy%{-Jtkd&y|*V> z6Ub$2+dL-o{6dyxcUNF9+$rX=8#=dOEv4`REc4>P%PlkU?_OTte7z!k=%9P<(%pZg zU!Th(Q#7(8dhJD9a~MlQ9kgJo6jfvma)efAb3eIfk6cbZI&!yFX7o~9Di>)(@(f6i zO41);a1uQS(qliI3iLR?rw1Bc0;+L){Opyy|AfDFrdL_#;P1%z0k}>}ox%pH=QZLAe^6annic`Q26pF| zS7VXU<9cXs;JmGg>poj^J?2@a%ru(JA!%0lFgzQ{v;ko0yCQpfpc(98(pI;o0|3cP z-AY>fur)QslyQnNH;k~c0D!NmNvo-JdQ@Xw1TFBwUX9Cz>^(W6vcOBNlwm;+kKtqP zSeVjQ8CLi0m-c_TKH;w)@J}BHavSVe>ChkJL+1ei2-t^fW36b z(K61s=qB5D2KQ_f?;G+oDS_x_RaekEliE!XYplDPw{vipUoXw$ZlaushU0gF@EF|R z$eLSg-*@DS>eHL;oVu6!|5Nui&2}ZXneN1`mMz2OIY9LhvgFGL(_F5|wc=0?_9Cc-Yq2V>2gt)7epbmiK zH#|xpXGI%;@aYKL<=_?SN~RG&;ZA6Tb_3j*Nyjq~S!Bc?+QahrPb6cmM09{`~b({pck8hZq=SN`&%s;iL{iBw~T$u2{)_Fyh}eXe4TKI}y4E$V&a-^Vu3o{$yhago8uG zucUU}brklg^xAm+#NpyTyY1q|C_^Tg4o9MGIYB5Otg$j}bpbhR_ko*bWMhnT^gz+d zo%r&3!hykq21K%F_Kxi<{3hrx8>DeyG~RX;{^@5|_AkDDpS_H4UEZDsr|iTY9`lgL zFYC{6-)n;4xT#_EaCw3P5vd&^>$X-lMX0fGl8-O|SO=!qC>DmoX_x@xJ+t6|j83a~ z*HCW*47wTk$9Iut>wPbyCT1#9tTWrD1*aM4J%FP|k6!97=PcmHbtQgVfKt&IA3WN` zesz29l^YcDB})ak?iGNGw~eEdn4_51YB!Z;7nuM5a(O?V^ZB8>F#j)^e0s1U-!3vwbc3eXWN7erD?E`$~s@Bm@>SYcXrNJqrTgbT5t zWpa?bKw%j1UT14#t=s3a0Q#^R)C@&4CWmo0su_$Rb6E@+v#5d!3L2DZFS)Y~%-N$A zg9eT){1V$UP)%wFM$&L5dUP~; z_8Q*z8(#NR!>M)H9Xay!gib3@?hpAA#tJx(K`i7 zQWfnkpgsSRcYDQ_v& zzpu|IKL79ulYlP|yZFyuz&E|32L-PNg3q$fGvTGZfINH9vR0@K&9HTbx2q_xyuk*5 z38h~hHk5B0#wXCS65Yd74S%v-18N*9#J*5fuW=DhFNGWq_IZ0@9S0%@g;)(bXP{eJ z!j21SVnlBnxZ5x*;oY#S%z4e#!PRK4xgoxhgfh9u2KSG)vK!B`8SO4;@4*9d=(5n;T-U0FCg}iSmy~bd%>&iA4S{Qrp0LDGWAPC*hbaX^V zUbK6bFnF#P3SiK5=0QNB@9Xn+;1U`;8|||l;Uch}M*2KC{ED#xomIIfadr1-i^sZ! z9HWHTQ+nIwx-rClDxsDH3garUcVrOR5Aci(`tinufa!$6##%G4;)e45!o(;gFdu(<~- zb0jEBP zE^mnf1Ly9T*pe$u-`i|%IFff5cJfZpPHt`Ph!pU^mco~XBtOg8-Khf;;f-f!O>0iY z;60<%+!KIc6rx6KFst$N2^~T==)kK5=gYQeII>J`n+{f4jsR*~Kw$Ij3HQGvgY#`R z``u3$_2G2FlUMSsyB4;EQby4_64MXxOJo{DiM%v~Ag!X9$eM|EqzU0FYiNcb(-{Y1 zA@t`uMoc$O0yW#NNkBm;Ed^q9Tz4FX{ECznq(Yy1XIz>nGhPGKCwp&!4!vCN#e{Aw z4kmTzm=hTLvBsReIHr=K5^%iD0KI*C$I~rfGFrI?ijAaQSPNsH2)i4;Y=df7@GpA9 zc>8Vl;OiCs^6^pG@ySc~)=dkfyXB$dc%{ii z-F;l5DutL@*mB57unWVNA?th2HE@bayv1klg(=Dg+t=2u%jGtbQ;M0AnhM_uzEK;? z*%IdEStlAJ?ACYntH^^AG5Be!YjlRG2*$AG$NFOS!G?24&nBdSFl6hfL*bWTw26G} zYp!+`4dzaF1G_IDzSO4=>;1dW?>{~|)joUq-l{g%cG%5w%zOqT0YRyeb7Jqxd}lpM2z z$}+KQi8b173d5jT)!Az7J#=qi;FhgseF8MW?z8z>F{H?Nv=gY{y6!;@O`ncs^G%?x z`3bz6H<}J}trL3sDUGlLNHQMiDH9D*NyL+i=@!fRyO+;b#0HImN4wwlOI*2VpE_{4}1(PEfYk&o&v8~12SlOzk9F#?aSwPKUNtZW@?_h zdT$kuhj(~p%KL5`ukr~!a>9;^N4Ymy3#v!=-V%gDz|||S2_>W5ZJRg_5>*{0_>C@E zg%H&`I?iC8Vr9QaR)-q5 z&)M|Q^5(slGDz)XV*ql)HM%$_*PxfQ$3{G5ywzXo;=(_SgzI~ov6{*@&j|~MZDh=s0u+h z#fsUKVlPZ2f*k-yBQKo$-4ndUi3o+Vf$Kkry=HY}&jJfA>uxY?GI`sH-M%axTl|1( zcv#tI9lUl~QU|K#ZK;$ht)`${f>cVhoeDMPx$(A2GidWo)*H@Q|mNRv7F!<%~mlGWaznPKS46uY?^ga zboadYy%XP8doHwJHgTN>fMhS|v!w|3xe2Z~?b3c$x4uOqPj1we&|1^mE`X1=s$=#| z)}lF1YdOdZElUsy;LtF`)(ELj-V)ckiO^w^#I^k&F6nefrjSe|y{X>~(zWn8V0Ncg%~;)rM4X;DfzU)9wbz za$w9qya}3}4zE{R2ZZL06Gx$MM)(8ZVEb@p@hhYy+je(%3Yn;~tgR`)08Q)~n0H5? z_4b(42ImlhXcPD-*v@eRWx#CE;welQB;X>Lj6V~b;mqAxMLM0s*gr)iI~l;EBNK}&tnx2Cpw?Ies|-1f1uY3J5>#3Yn;!Q z^rV^xQm}ol6oRM-?T!+db%J;UVcB*Ls39o6i#sS@P<;-zT`}UyabcFQ6!lwxMh_-x ztOj0yG%*9en-$X?aEiMyTz593a9sCpa169r6BZB36mCV9fb(DseqB&MK;E(8IE)y> zT81-h@@$zKavT%z?`dt2-Htb92=Xl9c78wdE};&9v^BOzEB@Y!x(+mVDG z6K^depzi!qh&CjE(gD_zh9?((nLB8*!2+NuF_9kPNtoZ0THrno>qK4BFyU4hnn((&1Fwldt=p0i(@3XsIQ>_Z+jtW1@3`8o5d^ zMr+QxcCThqjrbtmnR@X;uI*cGAJD~XLn<5HU512Y z!>j;7TXsQFr66^yaqVpq1B)^{W)PXdT*n(t0~D`=dKgOC`(SQSc;^Z^dc<0c+Y5`C z$HHWjskI4=a)%lV##YnBGbua45}QaKD56e%4?xA0c=t6_Pvn>v_%JCOx87?x$8kXq zblV*G{Z`v@J=Qt~>t^%0YwE3T;-6lVF+aO;zkGW6{?Xp}$;)_Oee&1mGNdC5I$k&Q zFfki}w8;?DVa_oDH;a>p0u2)~>^u9`kOTA{YFh{+UH0__UY98uq(y6wHA{BsOjK#4 z_t6FzStyQe(x}~U2M7=y2CsB55bjl(3!xAhl(_{$o{kepB8bFYIFm8^)`vzg6B*)jdFxG-RW8}7mc!DL(=3|Lcu$uZpk z|LOuvQxYD}1d;EWFH{%|hnC%*eoSizjg^LkyaS@;ki`&oPpI|tu^EDac-3BKdH05# zMAcCp?P6($u2CqzI`6fz94c;*)e-5`Fc~x#&yMh;(`EItIng@3O;h}T53lg&FYD8z zhxD`8@~vy!$AY{A5H@#=B;`4P<WwMrG`u1EVgfpLA*-;3w$dx_ zZnLlDkkY$O#k*wjqQKCl3)pD~?>jy13=|Y^YslXFF!&n4__MtO_8+2}it;g;V^9^7 z+9;-um0ZZ|JMgCxZMASXc-mF9Y@IGg^GeY7dJ{6}8J_NjZ^6lIA z|M}VR_U-D$v)Ayg1JQAY7$DJ4=&d6WNxoq8922f3CGUYr%Bg5hbt|-yJN!KpBQ_a?df~*5skPfDbkm+}AVOP*%-(_nq~s2F zVC#C(Tx<@!>9}CD<$jK{2MDKVowtVR%x-}5)tuNAFN<8f3~la^9>FWyKC}zm4fAu_ z-e>S^w>idt`Ng&Uiy8B0FXUUTf&_*g26AkeMo3?J_T7jzn?2DcOdKA@(aHZf&Bo5LZ;#!5CZ zMu+@!Bb_|QURQv0(KYEZ0%X+Ac2L082^*jlY3(LM8B_7N*;=d(kj3pASkO(^S_M;~ z?*;0)R3O32+`+3C^>w-@!9}g`uHlwdkeYOyvo_)O(1vlVraI=3>I^b95cz8~kuwYf z`4gkPiLRjf*xNwH|4UEjH*el&ui^c*ea)%{yqc+Wbe9muQFw#VjgFJ|uyAB(D-y9T z1Ph&K_ojw~5wi~3fT_MdnfjhNPKbB+ib1(^lQlWaNd@yW>9Mk zPaT`?YKkXN2Zzr$S^$j_8{M&YI6P;{(7Eugt~3}?W|aw!hD%A7<2`(6_Dr3f3|q~0 ztl?7t2H4o;r?{zx#umHn9sK@JAL8SG{Kb^{vlsBKn-;D8=sIHBp{cQy5mH*qHzkA8={x5xlXD{J{zQI=pubPiZn14y1 zdc3fkk(Mm91_Y433{iVtAj|LF4ZTKiW6iQM@q+;WBmF@CSdmpRWm_wZmbz{T2(D04 zi-t}#;6g;7^E85(_I$)W=gs7Xs9-FgMpDa7TFlwS3!^_DN zu#Cvv#yXh15iogkiFld}__+A^Xd}i@*u^{azo#$gByRf#`SJb7Pw(Cs8hG~F{n9Y= zQxkWxf$@uiN-)MjBk^D4^)W9r@(fp-;J>CSBAsYX9L~;EhOH@}-&Nu^8{}m@1<%M{ zRkKM$yLF9PiU*+zoPopDQ=o|yyW_R~ny%@y*Y4Xj{cBv)pU`659MijV%%-wE!Nfp` z8#3e})OrEFU_NU5B|2%{)d4IU-2q5T(^vsh=WKzkI7sB38|bo-adjTM>ps@z7|S7s zhU0$V8`2%G1i&{z#Yo$^rne?M9JUiSiq*Ta)I#}o912)$CBcl}CDOSrzMoy3Js$h= zg)L5?@Mm6Yco0NJeYxiD3XEdWlI^gt&PMxo-}IaF@zcAPM?IituiKj_3q}`Z;&Wq> zIfa->F7~g?z6B=bo`JOm$VDw6TE9#g)@g$4EOYc8XI$m_RX{CDq(FzKqUP(MC)N8r z+!LYrG{-+U!f}^NWq_7;t%)iU<^gdKF${8w%hofkQ7*xE5Z>cP-pxxmmee7IeSFO{by!Jy&bx?d)s(8>4NCBvZ$+0`ti( zr?MUF1`pVkJQ4YTkk)VvSTVeAI|NE#LJtK#3N+P@P__5mM?jp|HrgifW3v?safr5E zpq)^Lf1Tm}!01&N{M~fGvCT{bF#y8%ZWtjyE7z$~nu|cD+DEv|$fb>Uw=?2iwn z@y}knH?Qg1ts(h`Q9u!JAu(#gwz^k4eMc#r*Aa;^Mm7P>l*UnDH)b6v>fs$x{s}yB zk&>BgFzE5J!n`&(?g>ONY7HeGaiCj{?6)I$u^54FZZZy#jD1;acto)lgoT7p|5QHO zbDEzxj>6J}paMc9cVKj-K*~mrqA_xgjU8gB&X7H$=ewQJaKJ3)J{sJ4dRFpn(dl`)U(fAu)Z4_M8gNHa#w$VFy z28-A2jf(jAiq9Y4|LM!4J<_um@2!i9M$rN@1K6-m;hu`B)%MYk%!$HDk24iTkZz~- zK1B?Y2Xahl>g)s5GH6W{d^yyHXr~=t3vwnaO-I4KNkdnK;f|YXhYs28FlEY22XvE~ z9|8k=27VT4zPsgFJ{QL2P8BMziLN~4-5%O`4YU9xPhHv1K6EL=W;j=!;XLsKly=zG zq+DH%5wIEo7g3|L@-_qY*Wa%n-sQ^g9?m~MdFg(6N!uUz>m@aTP6%W4FmsY}5F(L| z=Y(EU7C_ltYEo{IBk)oS7;cvM^$42>w$Vl@ZQEJn8n~aS-C6=xoB&1g^z9MBS25FSH%$yhZk--Y zuYRYH>eyq9*c97ABSPzQ7QxdJ#XCqSxX;RY$^hc>j*VVUqzJJ6IMZQ!I7ZYbs-RBB zECJwHN4I1!#4UXwMt_IcghfHe(gm%w_`Jrf2y5TA$wDIWc;wpXWik>Y&5Qe>y5Lc^ zn(z`OyGnNxTal?M9c*0NbK@A;iiI&PL!xt6L(`W<#=ITL`t5Z||GggK%%8k+_p?}E zVVV^(E1(dZPTmPmICgQAI#6hAk$$uR{yqrU1M-$S@R4-sCEQ0i&W;uV9p}Vtak?eI zkWB=f@q~c(%&eHB!Jx3`v4n8+_PI+4M)TMe;?ufEMZ4M_9vhpP4wgu?@)b?yygs^7 zu`r>iV~u65=#WTVr8rzo6!-Ulj{!wjT6_wJcdETHSy~X;LRGNaIJY~bzj-a^*UE>T zxF@gOTf1JGQ*cPI6_?toQ=S6U0Q6Ac;V|EH=7A1vLfF{=_E7DD{0V|K+IWvjc>fxC z0pSnfiI^1zOis=`md+ganTxK#gkV6i#1pdE zYOBMFd0Imsn$}o+AVMtQ%Ye8iAPCoJ0S1e}y;i%{Fus~_Y|tGh5AJ(VnW7zbXT`j( z>04~YXD{Ac8>Fr>yjMmsIgB}!edH(yO9?Z^eYR7*L5~I5m*ACurO@Mm(GXUOI|p49 z6hTI;wF_e2N$rX#1b{`@(k*S}W#dSni<;>yxxG=N4pAR4+@Uk3b!OiQ+ZxzS*oc^B zRkpd;Smj$HFYn+&_~)vNn{`Ahv^D6G=20(%5r8e{jksGkqC&OsplcS_wpV1a=v_AA zw=bVxBgGF(z0X~_w;sKi>H%C3uwc%-o(JeZ?y`yBz7{HxfB}Qt?}AK6ACnlILX2XX zMlkgSpTa3;9S1qHwR3b5O!+3J;RJ91TpZ;b+AiKNG}(6(lgp7WV-^7BDYk%^Go>xf z+0pe*?{vWCUXzhRFt1mG1~x@43?f1WxQq~hJI!4S)6vpp%yUJxJ@JW0niJS46x|PM z<@#ek^?&@``+CXmzWlNNjQ{+2eSdhDA9p=cN<4cV?q}Vho7Ze(5o27S7+c4d%qTe7 zQp^(1fm+?cCMtF~;wMP;Zj22Ck9}He+_v04hW`sf5RYm}&tA4~m-D||Rs7d0IVK*| z$u6X{mkr{nt5wIYx>e3?#B1njh+ZFX3RMxyR-dlnb2GMjs!p0EsuR3FCp>f#G1}!# zRo3uPjSb3GPdWiVnA0s_;+z&aJ1$+7!$3MQVy+`M=v#qO!GKGhC|%Q5XziVAT)Bwo zN2>cC9r!|)z{AfNc1w7$wmOWsITjPrYBAw+A7h*vhf;RCb-w)lYxeN}--SE$Q6=fw z>-X)F{uYqSaBJ4xTw+@syujLANrGh5-bRL~#gfs^ z_8yoWhvWdqJh#O#h=M-pc-Lt=gmSm(VGM^BA-~(&9a%5nh>TL%TBE~j6Oc0_oe!Hr zcD9aVYS8gTTP6n0cw8dLFvEu;<_eqGkn*mzVmq=e=$tf=>>N)-j3&lq>Ovqwj*eWV z^S0IY+m{dD)u)$-=HX|r+*?oF4Wc4C3ZO)FyE>4-9p^G%GO1!ob4*j9&fUbQ1Ru6} z?e(T(Jc98|Y@LX(b%6`oFpCRF;0eovy1>%G20?>i$GKZ<=3M&@GOp&8Jwc^Kf^xT- z2(rMF7YnmX2h`%ob%o1#wxf*BBoOo0BrKtSO%r(FonMSM9AGFXESd53mfRt-UCa-J?}eL`28iSegR=I+snG z0)8jrA!}nB30g3F2caH+5kE^^5Hw5#Zq(rq;Z`#YSRY2n-59xaC}f0g`=(=qX}WAd zwFM*-CS_C$!*tEh7#Clu#_R%l7VTPuxQEP*@QxrI4RS9;4??qm{~ZJm7Lp-4Q(^=Me**$epQ#t7rJj5ASVn}Uh&RuT(mr(n(& zm@zzB8~SEWZ=Dxix;JLVV0~Wag@taDUbM%n8`v?OX>kYyc9=JF)Ii{1Vz!AA)f?`2 z58iQzW;W23xmqAkmGhl+(MF2+*=Hd2hfHLSX`p)!;UZX@DF0PIPr& z1Dt1=-qr*Qy_gy+c&sTS1!t883R;5i7@IS~wJCQsW!udFVp!3_x}tXQIz_ogp-XKH z#Fk>H1t;5v)EZnUC%(o)s7Clqny#Iq-%eKj{&jQo?n{0D!~6BHCG+eB{ACoW{RpT% z%d}$vC8w2nVSx0IS_1dfVX4(D+GAx`AvSEq@Nybd-Od4z2-N)!{TBuqu^HJ?D@HpL z{o$5UAQcS>^tf}b!7Hz^wg=HcMF)G-4gh>p#NwR9F$IGb6tPv%U=F}N+8|nmsa3=z zJ1y3^`8ki|7X%x^JF(XTkDyqIa*V=u0+V;rpOfxuXs z2oVHbm51uCR&IN9nR5q+gc>ncsKDt$(ynw&Fu=B^Qk`WF9+<4{2oZ)d)PMebsjsYxwLzRk#t5hD} zc|3a4=pl*G`WUd)Z~^F z?vT!+2C)JHk4TlcJIegO-@kl#`F_2B`TXT2->uJ|>)}+~vlsEr*7!Ac^ctaf?}hJds0I|dicvsMnb@NT&Q`PmA(m;p>S+Kdq=su^OS8X*o(;4VIZg7>=eK@f-? zAr{8G3h4`d^{$T!2G^e;Bz@ExfAZ43b-#{<2*EW3 z!q+_DJadg{eKn#ZL5AVq+B0Qfq8cRQy%tyrMjRG6K`%=cbshaAVZiikOp5zVI0wwI z+uX!C>(DTRwp`Y$4ER@EdU*26y@gXtXk0FW(SVzEqSFjPjUe{D33_G01K%+Lg0saL zy9}D~#&dP8eiZ1<>UfM{QZU%S4+! zCLU)14m)N*yEGj5VZ9Q@z#m{b!h6yG6C>wxeVNCzK;7e+UVPK&GcK2&)@&) z%M0-RKYXfue7Je``n?IZ+)FwgM0h}fI>mrHL0vn6E2l9A(4a1enPRf{1ZMDRT#1}5 zdvAfaX^&3s2|4X>%CLd>U*A-;PQz(SNK3o=!GM=1yH}sL181 zVrkrv#D^K?fW^ZlftQe&a)YKU0}iP!V>oK=Z7)qznj8%%_}+62lnvYIF}F2<|M>Ef|Nd@$ddN?E_A1`ruCG@&5Jm+le)V2%PN~t(zEsLY3qm!3 zPOa_BE5og$#uhXITNKnLJ;BGpjKdsPb7E0Ke%Km3$|PY*+|&0)enWka9OuL?(tXEI z8`3OHaNIT&@*JWYoj^oq=HO!;>>fEXf@c~GlZg9hVvtb)#%lt9Z}8zQfGp+kFzR_0 zQsD#nTJLDISi0?oz)2gF%b@DKjh~_ zsNtzd*8%M+!F3RhjFDr$(Aq$wAiLRRBlmSK6p`7ExncIX-2?yX&Nk0pzx!A0*Xzm- z85Hs~R`Vc8iQ=iw6gUnVT_Rl_rB@k}rv*MIMgXJ4kqMRM7%pkjV$Ez5+i^SE4-V6` zHiIp{MWDK#21#43YO)}KfWaX@dOXueNaB?V7MfjRhFu<&>P_W9$7fBX2K zf5?yDe;YoI^|@3YUE3$G;al~Hu?ZHIwnfokhHQn4ydfO|T?ORzXA(j=iVZz`*coot z8xI@}1N^{Y5QKnBkAA1;DU3R8Xx?o{!2PkBI=C?j6iY{p0k4kRXR$49J;8(9uoPVw z76g4jRPyZTQd-suHH?|`oruKrvHR&_9DAIgmLif43dk9j(;6eu$F0=!oB|s}5TX(C z?%ui?^E_n5`4_J3U*Z0Jcy@j63f^DYS5ga@s|Z(IK0a_y7K^)=|h!1CyDNo0k#eiKvH>D>6k`_kfL!DtiqwElLUt!U#)2_ks@c(Yp$w^&Hc* zcU>v3>|bH>ijIxvM%*0}4iT7DZAbxOCc^?8K*9jhD01asWG^kZgE$;=U{)Pz)cJTV zXe{U)n>5ds5M-B%LYP6UN z%7G^!x$O=ZP0eirg}&J)gE6-FOi1t1O&(K@*cr(0w@I5*V*6Dr0^g<$?NH~CV_-~z z7e}vC7mC((U@{-uEe0xUVFLqX5ys49L6bnYk+k1_`R?VzA738kfS8(A%I0qpU!y?nN1}s6o;j`F9fM7sfo|NcZ9temCHGbuF@(cbVz3-jD4=VdNxLVRqoWR<-2$J zZx7v&PhP=qm-b(9X@CCn{_FpgAMe~QvVq=3MiC6x&ahh`%V-f~1WQPwJG@(m2fkxU z0P~_?FaVIbeJNHhk)6*iP?!>4ib1lcO7pRiV?R840D*qYMu8VZ7<9Tl%6i{(s!^BG zZLW>RGWW5^*~3mE#Ye4ST$fKA6o07T6ImUpCt;Z_=Yil$`>w@A(U=(QxdHOB1Jruj z6p%h9g`7!I3)5H5byp$&`LaEPW<7WHe)&8eKfY!ABJPR@H`F|sr5{Obop)s4!@+;t zZ4HhC&QZfH)DR?ZCkbriEU{VX%rnHsoIpvo!@WrWpg>>0V~bN_2=1O_#Zxi&s=gq* zgcgwR_D>zdy;Ii$@6Bi7NTLAqSKDASo)aKX!8`-IEiMdavw;)}pgZ%55Ottet7PqM zLv&i8fwudc+OMG;IU-F~lQYH`h&Bmal(zu?>n!`jyY=Do%Nw`uv)Aw2b^WJrx9;mt z`>+2~e?0y)Y`rLvkM^q!Zc)I{OLg@XDl)7Pur^Fc8`35_w4t@XcW?Xp*xO(fdq7)& z<$8{`Hw(%D*uksYqITd0M8e$=OY69lm3Q9A29c?!zyU>Y8&p+&g3ywQZEJK{wP#L&i*pfQ^I8($tr&f@5>^(3s;+r}ERH zJ$mUrdF}246ZBP)GkWuRxybXCLcra-pnM_&Mb4EtLGMC}r1Lr0)#;d+!8^Mg51`W0QJcOVp2E-J&T$f1qLjVBjU&;dHVK6s?yx2W?BiBm7Qi_a zq!dG-8^dregeA&+AnC&`ikI!l7CU9RYYbq@R@#<0aEBgp)o#r!LGj9UnsQdewL8f^?=Gg#|NAxTBP-1C{x8VRQQ-)k9Mjju;0OV9l)_ zl6A#0y24-a}h60TS zS<*F^K0wMrXgI(}T&-J2s+eI*0)lwY+e`X4*X{b2WANE)_seVg)4Npy7Lp~P%WPy< z(d^yhbW9?kXEGG}EDVO{t|2QDRtRzyxXl?jVjn^{Y=bz5#$!R@M`&}aNdcM(u{2WC z)rp{J^E}aq?Qt7i^RPIE1YyYO2i4vl)+Vrloz?-CN3yRuK-eijc?SAHiVFWW8e_>B z;MgD3Ap60D;XqKnvRbO4^Id>GVwH!bHV}L;{W|#GkMsAnK7U!CU)G1Ww#Cn0zqeRD z8}ZeOV`2w%z=`w?c8^PGuh}9bgG|6)sQ*`X~1*HO4k?l3A_Sivd20E+Y zL2b0mpqir1bz#YLRE&n9USJb$!7k=qXETb+VT(38H+9|16xovv{|^CQ1XCRjj!=;- zFH*cPjZun+_DMB{9rLLj91t{)4#|Rt0%K4e#XV2>k?_b~l-YJ$x9`{A)%PF&?JwP| z&t1G#56Ds!K}jCb$cgxAkX9$QP|ny zD^Fy(O*c3oNPZj3fLJEL;YDpY%P|8L*CZD5ejGDL8!K`WA5C~wusjp#YDRR%SL=5d z^?Cq*{_>yiACI9wdGT(az~A1g*uRBMIElT*$cd8)B&zmDJruAfd!hi#+-@|a@6G{6+BO`%lReaCT2jrf(7C7!){w`GZM z?^Vs5trpD16T?FZETjoKDX6q{p~N&2#N~WV36szs&6>H4t<>p2W+(%pK}eBvAIHN2 z%5!JO^QX%dzH>cug_ssMG*X(#1O7g?qG{AH$$>XdAA<4Lo*ad6$(KIfw?V51P-k*C1J!RS8GTWl>0EKE(P%qI5rhy1fpj)#9J5q zv;}lYn6GsXl*%wgPy?*D3i-}v>*8LaFC&9*w@PzQMX-m?)z|P`yc=)!NMfIpq>oj5 z92KCn_9f*D_cZJ4K6S!DnOz@`AN>x+h< zla%DlJ`XyM;W!~!6H;H&0SQE=!oBzi67oBti6a(3+gsNY6YGT!#9ZzK|AwM|`g%O?3|-O*n@M0UoIpJW z5v#pXkrSZ;<_n!L#2;5Iq&s98L&zeq1(Okey1mQ0BTDZv`c%Wm&;q zx}uMrVRmEf*$7XB%_2 zjft&!sae`tyPzKQfz0)YS`D}=1TrSN-&|{7e4365EA@(FCu-}Q zbqA>IIb?9Ev`*6@F!3w5A`ScqP}#Y)>}@Y0UEMX$Y}cIdB5-b+cQ16g`e4Eq6kbf_ zxsVc;#O=L}ZA7ssgU`R4ZH1vLE`OPc(?3KIU8GU{1j^(gnnJRK~zGGlko1KxX zU302Z$AsX;JcSPxVH9$QO!M%xc1nP-z|e!7b9}n1V>ZktxM1LSU{rhgL>+f;R`uq_ z3!lfk0Jshh(mvLJNFZHxJ1T!54V~>?G|3Q#&t)`1>`EN+1~jfArI2gQQ;f;rP2?Sz zU~saA^(G1|9zv)=;N$>1aNQk!5+|XM=V#1?2{@15oL1S8oRLu{+)UZ@&Nc{qpIDN4=RRuiIN{ zWee(aAWICja3K?E!ohvtt1});6{y?7Uc-9>%B_LKbb!?EJ4glT(}}0`aq2cO{Jn4My#Mt-*LzH! zKYHXodEss)_dkaC2adzkdxx9$FtpNUb8k!oY^3o3$ZQlC35wi!XkglZCGyM@pY?+| zuyi_@PuipVG0;C3xGw-a2Ev$82u&1JkW zgLQjBKYpk$FAoJo&tABXF)0gM9Pq` zf?R&g<)PFu6+c(sS<;#cEY%0JUBVioeT1hF`2f-$Hjc{Il+CtFF*`JA&kb%#*z(4= zE%9Fwp6A&s_ZH}b07hmwL#nxYDFScZU_(pTUbluPAacf`uR6NWkOa}`#MbRl&VV_Tt?K&c2Q$!^*);TSqi) z?RCAmVsvk|3TibH%{TET@Y&f+*4P$4YfJ zpywFO#$QCl46eM91Yyuxt2hjODoi;`Esz8`sPDAf^UIanfBT|7d+~l@^y@!W>wBxC z!qDEdC3vch68CeI1JUADvu(zt7otytFv=sEO~=gEFrEgL4lN(*u%RJo0B^6Yj)65~ zRUH9sbcz~;T;YV_>2<8g@1mg%(_pjbUR!d(GlZa4dh{`Clpu&{4NmLLt&?w0jh($2 zuK|gMi#ObUV11r38=6*2Pt(w)CPrEwa6n${!Yw-ohMsGB+drO3|Hp4W{P2CgfB6P@ zUVp3)k6x(HUcEPWNj4y4#wpPHB8VNf%p99AoiYp1Xs21dX5>jk^u|^gdDmXsVLfaq zZ91*AChN!)kwBxV&~e%%EGVgq9XC^K3N^a+lpKq03%n+U+#O-`9!3m8XBjLkNk@yK z4@~W1>u9UBQ>HLw#B|(eZIPdB)O;ZB5wjp5o|lfZ!#8}K0H7RRrz9$c>v+=y6O=Lb zcsFW}2F_yv(X$usCaG^fRRdRTZ{)E7E2z`y40NrgVQdt;u8Cj)GUAwIABj+sHe`?01hF1N z)MxfVai^>K$M3#;`D&GV_qo1bAHKZg!^+^3SMm0k`mK&siHVIqVM780YD5DI5Y=dn zv2;voC_AFg6+R{=J?7%j-pShV-CA^SOT$k~2dKo9Ag-M_j3#@(UwH4 z&S%vfU%zKRByy@5$eJZp(R)Y34R5DhEQz4U93J8e11D!~fNr)T?L7t9G)B#7c}t|a zTunA%%W{lluMHU>P>?ZE(oZ_gDLArc-t|mhKEHdvzK^{gw!xpfbZ_=deHi>X4&{oo zpT!L&Q{eg8cLUv83OHNciyPXEK4BPuMQ3)@uVKPOHyC`8jfogu5qkP*a4%t=gaA$9 zUe=^!3SuIg3o)^C&(XuN)kt`%3xey*Bl*`l%3XnW&U{oe>!OrPju#Va; zd=bLE<3w+c1LFXJs!!hYoD8F5=>d^J>pQS!0D0@ayQF{rt$hFP)R%`wqGzw)TdI>< zmczK?c|W{0KB=ZV8^&TAur*>Um?v4gCVXQ65`!_z(qT~1O#vl^kcH|7TcoH1HxD)x zHX%C&!#@R*%D9jxnt-=0VZM!m0&=|#YVJhprZ7>h*idkw-+X+W<>YfF5E{9wFU6_11^5CqcE>@}dE)q28{D$n0>sa*>-#@_ei&PM z^7`H1udfDr+CVx2&(GAG@6}N@A7nmKa$(Cgsq?NulXr0URpU&9bsA-5%L1>}M~+b# z+*&Bypg^}NLUDuuBxj~1a4KLgVo%p0Z1&Y|V=FmhwRTPAg0BvD`x5Syt?S%-j{@tl z4O5OqXCo~_3sSZWbkS{Gr#&5r7wpp+N5Q#xbpUj(9O=38JS@}??6d83iD9{GRoqqz z|J#q(^@o=q>ix@yhrX#NFX8>*>Z^zzJN|Y~%nqkYV3hlSK~{ht0a9fg2A(O#DYr4L z-MRC^c^C#s31dUgKDbtMUaQsW)(4wej*0mR+;!WXxfBEi*b=P|8U5VZ8-GQe)Mu~U z{S3`(!B8BMD?yub=n%AhbQUH<2qxttuqyA^Jh?|7NL{#F)ZXkhHy&e{_OcU(A?ewc z^{G3?wDG>kswE zk6&KamyeGM5zk(`+uXK(?Y+&c^wq1kwWkNt9KJA%)cT_7jSy?ZuE5~uu+!Gu8LK9$ zZe+8~SYvgib_Kt{AdiliZpQVtff->&zks+>eb2EIm}H?i)bzGhQ;jf{-FGH%*TdbV zv;ZJ9kh8VZz6_4Y1f4t^q-I*Gbn?MnsTf79tw z4PZ#fjBC{0T?(4kyZ0ae_~_93uk zAL`yRzowwU;r(oTFgT5gc(Vrna$gfG&0Lekr65P$ZC}qdI(7m zESwt=S*rhc?_U0hO)auABi!xYYepl_`Hoa5+Bl21L?CtpA?tInZIYFH3&t#a8m`=9 z%)?wZhqX9?Yq>M}t$lU;MlFXm94@z|(nQZ1HT~+R&2)l57o;TQ(l6m-xjL+HBS~YT zzCeN#0|~7Ro+rRA2ZXd0`*mU5$|huV@1e9N2+%R|5a5UtT`_ z{QR0vFZuc9E$rQ+m+#%olZNbI;06}lo5*_%sbsiM2L67jBSo^HGPVWnG=$Ze#%=f& zndg10_U+b=j;6cO7%ON&?7oj&r-YvrI`GhMj3Q-8gEEEgW~ytHa+}S5Hjl;vbg^z>(hNWf6hJLclspz(`-W$v=U?ubo{OgiWw>|5j* zf|t?Gxy?LzeSLY$+V<#GyXh>o-!3%J)*aD4+5xl)`5=g=J8Shwt_hecV- z&|!wQUjx6yh|NI09yLS(Upd=hh@f3GuawxChfWRX3Rdlb`TjoFM{;@NtdEY*fb&5f&GCay?43`^5nJ_1GDu+y{ zA$tuoZ3cU5niRRkw^7Z1_yM%j58rm*m;C7uuRrBmBe+Me-|cz2zKKFtG;O0;eO;_I zaze!C3f`k5eJr7`#K0MX@jbykjj0<3_PG=aMgSO@WIU0 z$c$|>0UEktbfH^q64bIe$%`a34~^D#PY%H4(|dL-qFiJ!-_2e$|b zwb58vf^-j;9i3QOsRrz#rqZjmnM1Pn$)KrHAk=wlL3`X~Dwqa_Tj-&mLhkz*=kSIA ziL@0QGR>rUFOLRNdJf<(_GA(x6+@63hF(*URZvoHx*a4W1we}iOuKL(d2L!J6Ro?! z14Dbdt(*Sl&(Ha-8|#DD?)JtiU+*`Q(1YuVZ>2= z4XyOvHg0&fPX%JHR(2R_t@W7)0nmu9wYC6MEF#>^M7w}q9GklE5m*M>2%9n;gg5{i zZ|kPZn81bR%UKyIM{1@J^1%vZPt^O+<1NTR(qIy2NCpM!-GkI3#3ojmAgD2EnQ5Zv z+`87mbtkd`Nx8w`8q<|5Qb6|ReS2yB_uqEmpY3z}{@Y&sr>Bgc?cETgM=$An^VeiW zczS|si%@7}2`Ywz0jy@76`TsZOpr6oWb5bwArd1@&S^;-{;~xuIT4|}N0ghi$p{Dm z$O6~6<)EaW&a`pVNhsiy^PU#~8l9mLh^p}rvLdR_?vd9cSz`q|u^rUH2E*8=T>!{U;JP}InR}bA9f)v9VQC*y_TO8^C_s*mKqkZ@_|M3U@ z=!JbRj_jbB8O>IL8+j)5B9gc)2&6ZS@^XK}+2>6hL4|^LD_E-wQBA9{${}1>PHptU zb4L~_2>92m13{F-!q39ldAzqpiMC*g-f~LkFr2ERU!aH;u@a%Hp!7p9jrX}z&{4qr zVQiF1R&o$%+$4H+q_if~64CX5X@g3wnivun_rb2|QwGefNSX&CpBFiWtXX%m#6NwC z&!3+D^RM~qTc_}&7w>k%{`OGGnw-mi)?^znLStEO#Y&+Zw=CHjncEH0=00;bn8H9T z->~z?JmhQ009R7?p0i9itVZ!t^b4~Hdn9b%i9Z92>Z9XFz3np2CfDc%T&fz3H`So^ z+q;l3vLJzPOC11LnMeGh0?$3Db?CYKh{`Rapha0=1x_64Yb!Q6SiV^UG!8jB2ZE># zzUK6*b^J~|{KGF#Z}%-8y=?Do%230>MF2n$@rJ0?xM#s6+G#rsUqL$d^s~L4xkzFz z-W_3J8=|dot}GYA<@z8ebvZAXI-wpYd~?cW03OS793()1*-A#p#CQFTK6>%q6Pm6_ zu(Z!aJ5Iag>a!J(ff;c}-j&Db#0h8D0Z|C@+fiX>qaE0gK+>UKK-wPA>H8px0J9ZF zpJ2w^WH1jQoMsc+q!Sa@-a+5Ez2$a>hLQtd_N}0$_lCIWw!5q*P$3?IzR)(eia~T0 zp>nElA<&87HQ)H%HF1Aj2y+8UFLl-efsSR*&3^DN?VO50RNtUA-P1mPda=m*^}|!W zDTjIR;=R{6o+h|*NS+4TE;rfRw{;M>V)E(;hb<^GOP6DU2HyRq0|`g>m2D2fTZQm6 zP&f!Q1nN#JX9!A|W?@z+X=V0ZJrORu!Co2rmTWi#4f_$x4HO910EB&`xpYmQ&%m(O zAtzB}6Er#n3k=45S*BUJ1}y4jj{A%ZV63iHZD(%T2>I*>CVU#iwcz%iiQLLs8);Pd zZ_%?!-o#@)$5osup*c zn{QDczkYoFW4^rFhv$0hM1Az?y;mSfZ|mT-QYh&5kx7d21P+KehZ+z^*seN*_P_Nc zFh?D&f|EznpqNW(@bjU{>ps9o_Y3L_BpXCU8xxHhRIuA4khBm?u+nZ@j0?S8M27Q* znq)#2Z74X#Ml2h|@`*&70-TEA6kLW#MZqEJh_W|qRJaEF!k{JEYIE?FRWNiD>FnwZ z0Ql~6L09ZLptIIi`}RcrJD@&3fBJ%P`D|}Z?jF5>@13f-ssb4fZVlX^7Kaw~(IN!M z`Xy&n?S+i*hP8$i1rfm~weN{+RPo}o=2o5RSxQPwzA?YRJ*;B}Q-v*Y+W^Zh5sQk4 zGTUuWQDtwKWF}lR8(H=OAeFK-j0-?4lsr^JiEtU^(tr>shSFJihD=~lbYpSYFI*EG z&$$jL(3hymXm6>CwlNdpMDTrpd*gMNY;>}oKjzc1&-UBx^{vb5gIDn$&;LaalUIN! z(5o&FHD#*?v)@fX` zPDaX`@f;}=T+l#dAkzVrt24DpYp)KWkeAnK$d?n;V%+d;-4()r9roeFlRtlai_QP& zrF&1k767bXeJ{!_kdASj+|uTB$WdTu&wzPYD+p+uV^BH5Q99RlnSE^vjnS-u4QX1) z6Z1x7t4cdIyJ|zW_iAvbbd?b}K@acSN9s##ATkdAQ1o9wFe0?^w;?LqOn?K{u1;a& z?AXH^|qsL7ml1&=x#b7ZZkf%5ueQou6wSUYoYt7y){?l$lt;Y|IKeh zfKM+^FTZ|#$MgE=Mf}SVPy4aUw^80yz@()ODZ)4m8NbH6gpkuihtm;7C=NrkA|-hD zlS46xX?+T?kL>7@49^_9qv(?r35~v-mPJop44xvr@wuEeZn_u{$@%1=*4?)7sjl5rWDcfh3L8(Ud0W3vE&XPXCDQz z?kVDkJmAW-GhlzJ;D&s7&n`ZrV^rqq5LbdnziZJMiu@@jKWWZ__wH&0%s7kAU2Ll& zQe=PySSWGvC$3{B7s3i!blJ%F*#HyjBHBPkn+ue|xUq0S-4MQ32d?P&bV%n*CkSg3 zGSh}Hs;z`jPHQXE_`->_HtwRxo?mgk=F=ztL&jUJ;770Dd&2*X`S8r9JPSspGv+jJ z2)3&zadg_;W44WP<|y59-JjY#{nR)IW*B(--A@zv+d69VVd~1qSE-M=sVf_V{Jh1G z1|zMgw=-_XJnUOp7~{2d%)m{-2*Xeg?$!@P`beB>(7*>QS+kke-h3G4urA1osh?_% zhGT%wF&h$(3;hj&cDHmPCWYvl59V4Cp@hVa+c6Kk9It=+*+0FNXY}Z$yMLr#{pk)B z71G+#Xq*kNeN6biDSB&cu{;xOVJ|Dc6?_GI#PxP6Sk?qCs?KzF=lYkARID)idUZZV<@>E@Si=E&d z(<-6l)fEhr(91nV1FZv5$Xm|rNFy2vP1=IzY|XYdB$RD`X^!5WvENfs{OF~-f28_l zC>IRG*YsIHJwihwZMV2WW7){Dd^z@J=MC*OCdH!xH8Y{S8)&PrEdt4Ub&{)-Hka3g zy)O%@JfGg+KvBGU<|Ef-O9d_U*3yA6?17MwRmkE)*PHB6IlzR3KN1Mx0VTo3JKtG! z_8v!Mc0qhG5lA3`nqy!a%z4OS1DOppq8~af6Vc1)B?CkYMxCb7{B3@7qip;9VrV_R zIhT9z`u$}+Jbxtlaee7K8M-i6ceCKbTtFcSy#2TI5`jad^_flN6Fg&8?5~HTRpz9mE!a~z-%Ne=u&LR zhU#-Ej<6DFA}*f&#JsZsCbC-~Y%D`s2iN5wU|gc9_rBK7l1}hsL3BECNx-8tXon_% z+()GE-y$^r^1=Rq&G@Yi_|c2^?o++WG|6iH0L3UU`)ljS%?wv`77~;h=`L+*5Xqf*dhCZo7%!(+>RTrF*Y% z>J5!cm~Ufc3aNRpZ^Z09dUs9HSN}cxyL0D-LcLT`VPwO@-UC1ONgv zpdVZe%OJL+86B!S9ZG>o2 z!>`ZrmOSyn%Xe?6`*OvJevtaQ4}@QpP^aB z4sj4?E-*Ztk!9Vq0O#$vj0k{zips5NZ(#ui4^?brmDaq25x|HuDhSD#wms#jB7@Zo zn^azRio$2?i;5;PH9_s{ym2!qXB|Tjr;uI~sU(TW;@(a`(6^XrWv+P?mbtx__0m2EG$jnp5gjyGgkUnDt+Ng@1)w$;$ecaqFqENfkJ^s>Z@^rZ zckM_bx|19hEXK_jXJqkV*pY1>6qlWQ@8yt`_B29+H+3gYU=9N5yiE^uQLnU|?zTt} z#1{(^i3TK_bkPBBWXJHH#IC#`oWH@+`BwM;xB2>H{`&dF-fSK|dhzZOdFiVQmRnKV zENmGQ7%;pVvupwW*iSzRZ2Bsc)eB%r6(Dn0_r3cH;~aw^I;h4I$q*_#Php&L94sCm zx<^&n8WDz#2EzCNJAGB$9<6pZth@-=gopWTsOTqe z(v84$06>;++F)c(KNc4ZD@VY1VE|_z5~Le2AE^BW`1?KCo8FON^7ScSUOv6NndkZ7 zrF*Yh5=rC_^zPk2Ar>^anr{H=8WKa>oVgmDUlJ`n*F_b(5`-}|F0<-*KczSK2Fo$B z;}PU#8&Y*%yjHm_q*>;6;`CVJ-tcAIYG1y$BKXnEcmG(we5o{1Zq1>W>tQgdp~5=7 zEy?T7Xw}I9;zL(jW0pGteif0yW(xM6bizVOeWto^4HJ9#yCpN>1ob1Nj5i zTt$%ezAcnwk7mhCh%&G~N3|Akz8cKo)KoMQ+J2fnZ~fqR!HADu$M@Ot1+KxG*3=Kx;0DIhCa$fWEQ~mleK0kl@ z`1ECDcRzZ4@DjdPIxVftCZ*m+I==a{z~wWV%58PpU~tq`aUTP_1EX!j-ElU_EykM6 z3UFaIMe%wzC=2IwbV&Myu){aIEKDQ;cK~RKk?q6%t`z>RN~cFJ-d*X$-=yHXdP56M zb4GMKd8u~c)J#4}hUoSVS=c!nBMX~}#4}}>@?%qiP1iwxFzGP$Dq*UuX_I}}cClfC zz}rAb!m-_P69dUPx8LDu*XnScHwF5rRpF@Q-BV?awz_fF)d8OkT~|{bQ1^jSmjPqC z%4rLks5DQjNY0Qw0wL%!MUf}C6m~>3=;2eEj)AsWtXX$?=>M`ly*#D8!&-an%H8Tq z`Rfr2iUudt%b@41F>IebrB>gx%Fya+TSxK9oazUu6waLM(752-eyAPkb_LHy@nR&p z9Ypk;mJz`iVAMDbnwAd6uI`YAR{h|8d&HtQz$;w$l~|;FO8xY6F+^Hkuz@lNeZqt6 zE#Lw z4`FIY6DVNWXTxWYaGGpg+pbL;oe-X^KEryC>XuD_RPtC`_bx!LTUfP)6Als;%t@_`L_eo?$tMEUi^r zHVGo}c8flu!BV)G8e3Rjh~9BioOAMM5?`Vas;k%EEb)FMPm#K>H{#?&CK zHMuAZRMvGna1Gl{>NKEdxf30vcNOFNjW`UMWpcEZIfOj=7NIzO@<9o4Xio^dxCMH# z0?Bu7Tp5>+(cw0O)=7JBIoT0cz2W=`v=Ilz9rEYzezDKLe|q`!>GQj}%8y>a_Z%EN zV$5FISlnXjkw9a!>Dma80ut=R5e0j04miSbb%NF2CruQsGcS;#(4OuXdpBfWHp-FU ze`Lo9nG>@~rG-oOn#Tz#C}ejba|Dh@xGt4Q7qYrwXvtHK%w5MBYUpSQVOSf6;WZ`$ zF1>Bj38fyAv=g_bCuaJ z`<3!nMJcXns~AxVy0u_L&o0G<{(%GorS3ni|0eR2a!Hgw{?0 zdl?lF*KsSpq`oT{a2OF>B%q>i=;e|uId4SF0`wzM74HUP<)>;^oU~8u#Txa z?$8i5SIUKzt6j5A9<#phWSmDY-t9yEjTC{uenBC{V91~2Mp9vhx2X849k^lQSpwiT zqISr`$FVt)H5ut`v9xiHox;r^_Q*=|u5MNfWDDFYxs`!cG;*+?nYyI$?L+;J2*ZzF zx%V*dV4Nm%8`LJ!xp~il&Wk!^Py%ugciweGY&3KrrKTR(Z;eAc5B1HPTISv$A8A+A z<6yD|heeZMaK}1`V66%%nEi}1wujE!!U)|N9|=e>0!`21qppj|pcz$!E#scrKn|vA zOXmV-OE7o?kzx1*-IFEsw*?`F zbd0t5XbgbOcfra9B+HP1k^>2P25fF3QyjkmU{tllW8k&EeWWfxXRTvRz-WOi2_G$C zoY8%sj$gRJNpUJmv7zniMF+WUwX()KZHkU?N7xL2An2G1hl?1@5~2%U(s{sX?up!7 zguafeo_?3y|N8u2^DU9#qu1}f(ALpL(>X18Ua~JklNA;{-nly{C5*WcV${dF@;5Un zuJU^C8fU6lIoY#$hssVc;oX)K;hy^BcZ%VYo0XmA^`8GZ9JKB67y>j<> zcm9Sylw1k2>z*+9q_BqXf_$17avx+)PlEz#%#0CjZf~2>eh%Nl%tMFIvB&Ivgd$(I z!&)z#W1p?ogfzVNnJH)l(SQ%7?94k9`1cc({pgju=cCbASqm8BxDqF@;|vEAwzu6q zTGulszI7bzZPKLDvElTbt9M94rq({S8@Xr41^TR2dnP~~xl3go28Sd`)`8^C5YnlO zbtDE)w^y0EemRt+yB}5V3!P1xk;8+BFBp^dNPKP$q+V(uU=6OeE?4u?2(pw|zS?4k z=>axVUl^UL!r;V=eqpzLTv93#vdJw0yt+G1UtXR-#CucK^4OKTpP_z@V3^e@8}uF1 zn;qg#t1rb7rNH)*w;Thsy&d>W^jv%>-XspezRfzGLDCkmJI=@LL`jYLOD5W^p@fs{?B0+1%fEjkQXNY3e=5t7KCK$fD>{r5a5#(^yhPY zwmjwosXvIMG6Gv0<8q-B3Xq()jU4V-GTj-Y$QcJ{5yv$1F8}5$^5Y*xL_c~7@0Chl z?=mqkLBxT;fuBpf51nL0b8=mJlB0!q3Onv2k~#rC&!F3ambvk+`_UmhXd>O9I&f_U zzYh!vuq%<;z+;*Ra;pGx&}Iy~eYD?~+~LuS_l8pRi-={m-9cvsGG1h7fuGnNS`0)F zg3W+1Ht+pX7^{iX;#?%cHVI+!Km#tw88I6M(z($D?8{xL&UExewir5`XJ42>KsYeh zwtlA+jcx59op>yyR{4RV!7x;=%`?O$9Na0`(5K_a+mLr9Hdde39bi1bxDYP32|&-0 zu*x0qg9jkfv@N>2HUQMLadV34pa$M0q5ogsv`Mc|zqdc;yLRM9ui|^^LdZf|2c!To zjHIkXWvqnSaR7oe;RLkp2!$4y^9P|d?(;yY+X65KT01r~187hkVD3(vhbsV*jA{17 z99z8!ROx*=cPp4LZ=Y_uDp+B>^6ayANB;p44XVs@>dIM63S0gT(%nG<*yem0i_TtJ z1L1uL$912URxM$F7;r6|UxmjfCtqlI3DWVIN@~DwRv;(2=e#s8 zwAv`yJ=X!qPTU=_2YZqmk}!~YH3uR+cQQfvH1=|lD5qSf2GWUInBNLU|F&MA{;@vc zgBS0;KH(B@ZC6cPaZ8-jnC2IQ*tEPVPovPbsi*-w&9$dGz`EHc!~(uXVT#*#M`#md z%7fMVT8T=0k2PTpUJJ--K#~w1pfp3hZYSeNj*%P(;bYxXcnQ}|L>d>3h1}&RxQfwn z7-*&i^_}7P*T|@FpYO7Upvq*LywxG!)Jl62rob+HlsE)vAa$1_lN3hg`9WB`z3Br(Fi$byir1 zgGtPwy%=#&jg0N5Hj0r(qkD`EaF|;9;9+O9S-#8U)>M-s*t7ORk5gS%(8b9>odK{* z1eyqQw3eJ*4-}S{hQvqZauS8OliE66$C1_``;vra zTo_T~1lu7t5NSJrE~2a%q0n%;HoJOdruY_Y?$gn5(MGlqJk)?$xpS+=LWg%A!PKcB z{3{GEq&Tvh6(k~{oh%|0gWxKaQ|B*paRgM)*u@=bosc}BvldO5I@8cXof_^=1M7)k zduPCUCxWW^)>8AYf9w0krwe(g^JqBW^Wa5`#*_MqQ-aX6>)Z*vAb_yx z^az76-a7k$)|G;hx#tIw$Q>t~9F;baK6UbpCT&~y1!1G2UocsE;?@r9KIj~`&YCXG z2wiwWzYkA!6QS2a&JwBkBY2-aSoRo+2qz%0=hh@<6>9-^lF_l=Os;{l?-Pkhz!BUa zN326K;aW?i3W6?RSK4vjsaJmZ<>_bp|58_+ ziA2#n_(4wdK>SiifDp-y1I+nAR5=-Pi?P&v=EmrVsyU;%sgOFt$X0kq8&8~!IQKAJ zynURPp~w!>v6&&`73g;m@##l~^=bp+?1kfH%DxER%gGoa1n3;i8jzOE!vEGu;#LR< zf_cm~e1%HGpbU3_Mprtbf&j_}`|!2}@mHVit&#Yn7ws>%UB$TV%f|`&DiU&Z$@_Vxr$LWCwyX=PyEZ0g&}74+TWz1S#uQQn4};E#xUw~<5~)oX zp#jDa-KSRR=yUIe&vbOOPkXmE+nCxMeh50&z}ZDw=xw?CcfWpo{?EVW6FA=QxMv={ zfbW&OlyJ`zXyHJ6g7~y{kseU@8q--Du(53u3rDgVuQ^o_Ndc+eFg?5o`FJp1wsXFO zGA;a5T*39SApv*KwAdE@o*IjgfZP2JtF%F!i)6+99d}YXoYwi)K zLeb6P14>Na0|3wfjTwS_ktMR`QiP|?qct^TwwwXFU9CF=-Wf4s;HzaS zHiy$_b`}IdT?(TVK{7hxHUYuvQ3e3NRPIj4bc~X8qtnA+%Fzqt%EJc~6F8-T{l`sk z&JIWZ#K86>k7$1T(0_LmA^4{!`|xb9|J1{N^rF7|u#X&Xa|^;p0ab|!STS=FJizFn zj5+YyIbf>2*2qG#6@%tD(STA&m$Eibg9ALIWupBMG-zmo|{d2)b#i1P*}$C$u7K0*OaCV9bGX zvF3&zgKy8{AO7%~uW#AUAH8gUDLHIEj&Es39iuBdY!Dvw?6mRsC*}%M*v_z~kwXnl z&{&CKr2+2*Ei;5($R+P$(x>NT^`CVJMpIwS4Z5xD(uKuS8S1f&vw#%ZeWT=(M$cHmNOh&XKgooZFDfiA*F% zg2o&s9oz-X1=Qx%xu}id-CN$cFPz!8zR^c7-h1Y$GNR(qK*-!_I+!p=Y7IE~5fI^^ z@xBltj5#+#UNAMv!p0udu*<_KEhBRSTGv1Un35Z`-on&5lV+=x4B;|zw7TO<0zK?D z&FF9|WUwN3WINI&0KXehvTt;6oLejJ3fOn*75mq-d6TtwZ&paQ@#75lRR)m^;0H2^ z>jI*$YX-oB5C9w8{S4D7et05$mP1@WZzr(-`uX+gS8qL#_hcsJRUJeaYTz*exPer2M$8+K>TfaJ zF9P11n$pKE-Fpcs5VS>)I&;G6*?M}@Z3>#jAcM_zLu>%8AG+|ng|^XgH#2esvPU2+ zk9koDD>Ozs0(7fu08_PN99A7$ptv%yOprF5xL&N=JI(im<$v_jy(j!$vP5gZ<1;#5 zgB-mf9smKU=Y)zH+=dH7#*sub+Yx|oN5?BKdIlY^@EvlZS&WwVxe#H=T6G276_~v6 z0h!JvU?)jmvZvpErQcU9%A*(W{!rzwNk$eOV3Q`iR0zchu6hk|h#r6uFn-+a8PK3m zWjKP)HUiWJE*OAsdQ4RF+iF2m)tfg2(oW!27w;v4_(rZFr^QH&S2@xDxm8IF?PIHe z8R^WUi?l+NxwJL_@=$@3er$t=GZFbki3~vUxqSw9GX&z!Glu|qvyN7j!_dpL`=%;i zvxSdjjt;w`bjVJzy7%{*=hvrSKgJUr=Wiw$J$CWl;|F-nSg>pFWP~SL>mG`G9CDww zs*`o-SsCMfic_4sXB6&HObU~~)Le>Lf9!LLW6ay`;om&Rr;mSp`tbbu&E(w&uiY&=K)-=L1WG*& zmsyGHKvqo69TL9_XVZS;VtNH)ME>rxh z=*O{dOgVAb@*K!%lLh0bz|lJu^4n`jkQfS0$@B}MZY@vG?uZ{TgwJgUSGd8Hr;FkF zzrE4?{`2Qw(Bl6ue|owe?^{py!7F%gsrsf5i%-Q!khGg>Ckjo>RrR}(~!4iiDspXn{Dxt6(I5F=60#8?z zcFmxduAQwBl*4^?6B>ve)eUl4aYlht5f@XJlWTO;?X{O3GW~6R}l0>f~;V=g>>mN0m3}EYhk3d zQp>uw)}c_?z2@A}!}~l}#5%)o=^O*z+L2sH?{4hCT`;Ml-}7?n`}mq$#}Du%`i}A95nnBzUz%qtFmVd`!`%n2?Pw znVQ}j+vsQ$5DdVx%Pc5K(KSDf3@7XW`RFoAM5UhHmC!{ z%6@voT}-4~z^p_^ddZ{?xg-K6qkAEnWcWc{XRRFqFlugJF)KTp&rNkPgbvp@I!DF2 zpv=TBI&d8TdFb{_-P;W+%#Bf~ib*qY(vTr#G9YG|h^MK(WDT@cHy9H%(4iU2t&1h0 z#7&<(_gL%>ztUM<+sK0+WEpsnNS{s|tVn2UxzdNMTc7Ly`K=l8F8S`!>vvDS`*MA4 zeatdrBoK6r{p516F9=DdLKn}nlC&_Y=c)xbbwWWhP-oVJM(YUXL%uc#D91d+YozT? z=v@}{Jsz1b6QdAVm#{2nue+o5ySlzUdhPD7uU~Vicw}Gm%IRJvBm+#hy*fkRc*5a% zpVKl_1?@2mct<&gi#chx!LhS|<<5Z+KnhQS0gkjLHtN7-l%5nCM&RCL>J zD`9a=LT4YHU`1~XC<~3ybnsLBOsc)(j2xyLau;+28iemYe5{2Rd7>m;IjZDx9YVmh ze6qN}cs}7a-gJaXi_&wRbjzxxw*=@Pu1ff=uHl21?N)}izE!_7yjdRCG~Iag#nvG! z0AKvr0{FgT?{i}D!aD^ery%LM5zCgT!)3Nq+%8288L`q&1kH8n+NCaOW5mJWMXpd=IW-dj(2TFaKxTW7bQ%nupaAcSEEo0fL zfNnqlM1cr6T9ac_OKCJ;HIT4SGTW9y19o2&yWlREmmmtL9Y{-0OqrX{LBctP>y9kN zGm#p!7MLSm-EL>*Kb-V8OWsE>+qcL010Ls>8F{KSDEMkjBaAqjg^?jYNe(u9#H^3K z)>=?1QbYLMUVQ*xf2IA}Lfl9jTV^8@A;^Egqvn1Rj1wBQf$%fjwue(DItND+e*D`f zsbD+LMgwXFzarDtEbN@Ele=|*&9auJB8v$xYJ+Tg4C~s#7oAMp3#npqCduVP&!RYL zGJGk@Q_M6Cu>_Fl2{pu;0>XO-GK@>p^7`50KfQH@dGO-Br~I`5{k-jM8N56EAh0#B zXc{{qn{5sgUf<3RFM%$g{E@+4bLMRLn4*OvRTKlv0bknK;NAxCdl&%nz8**n@N#yW zV@FiXIOkS?hRAOnjX>}nZb?S16dksOFBV_bAzDBJTASA}iehoP3V^ych_6AjlvX^#_9WK+J^P#tG_r zKB{J0c88X4ENn5ivl`ke0aOPR4#4g}q&vrew%KcdYpt|8)nFgJRq1hFiB!e2T2Hy8 zqyb?+Mj(se=1AnPDJ0iB5w_RkEJ&Y1^Z>Wk3Wf@b?RO{X^Dj?!&P%@OJb(1s{pB;= zzX@9ALJ&?X+F-k1oky>|`kA@R7@^%RklLUu=?A?y@Vge+Wz!3b)C*ji0JYD6ui6;p zZs1Gc^yYa0vN6EKO55&hU!05O#?)>vrl@NW>v1~rUqD@VSrEGu3BsVOiOD=E7hN^{ z;D;T}x+V8jz}G=H>(F#tq2Ij=8PbZ)xhiOlh03&HYyhfH?&UzhvO&;&`%M3j*Prd> z^ZO*(N3Y)Pm->y>)31heU%ZkgV7l3T7X_dhEGWUjiNjm0g~2Z}y4{9#4EoqT5v$aY zstI%PiqZChLlDqxgZyBeaa@Ehw}c^MbB+T%)`oN977{TFOk>1EbK|L(PN6f75C?iv z^owJ$^L7w$ya(tIc4bX%3@ZP#F=GXa$%ojWhnLh zw&VLR{_yH=WpqAz)xJH=zsA%2vp^JSDG2)PPzqP$zIIE>Xehgz z3`Xz|@6}if{{O+Z5A$zce|dTS__?0`@Yc5b=(T%KpEM>ahE0IIYa1xHRF7inAsH=@ zOC}3O6O-^$@PyKA-AEH}74$Mt&#N+gJn8A-N$?zQ*owiu(j(v-FA<;QDY_9L>bm<~ zN__!mf_4}qPvUrQamH9JXp-`n9a>NanN<*(+`_d;cCC#7yaj{NYWP~XH}3~GcqAcT zks1N<%T9ENu`M1IfQ}Rc6SeFcte4x^zh8ejn8*0br+;|Om)8%^ub-dJTL_Rxuj9Ap z`#=8KAD>@7|7supe*wrnrVj)-7X;6N9KG7>TDD$eHB!J1TmZN+WR1Yng&Y1@Mb2;7f`x1sp1Lv{nnpOp6RzSbE0wN2_=BeouItru{K zMh@t&INFRyZC@c5jq%+T>a&5qR7x($BJ*hAUJt^nKtZ?yZxh?)uGBOV2? zc)+^1l|d$c=Q29(a0MNrQ3veQu{TuCrMo&@uh`8YARPw|m9snV16L*Q9^qwm4{I4r)H#rhIFY{)ZpjJU@JWz5buy=Z9bN<>}{7 z=hqMU^!dd;zSgIgpWnP8Ja|37y>b8Zw>OTZ!wI|E-df^4k)6{L?v^pPLO8C&YeJgu zfu*#ywiUIDMQP-P)EZGhat(-{aWp3M*{4a2Itx=mNUwS<)VzaEHoSHtdCcE^?fTL9 z7N)vzMFUN^TM{C8Se@p8N(xEtz5BdG94lZ1wGMfK^ICHD9&N}N7%dudkMP%%>{#U; zU%58?PcF(B1NxxSy|(mS0sm-czf<2g8tSu?)1q~K$2eK0HNjro$ASA^@4|gtP)WmB0%SYu#b8{@UWx%g3ib zyuLL+d-T%X?`P&=aPQLUoTC>KL|SjiJ}F*S$5R$mdg6u=y|i(cX#MVn*jRRO+2aYVwQc1=u%fAn zBDresh~~r6dlR!c4x(~Wk%Ix0e9x7S4bNcwQa zfY3B8ZpmTa%Zv5sW&8GG{r5kY_A(ixyFd_j6{sF=+bzvOssbo)k8NEr9w6*My5Qr9 zxlIgrs~PF@1Tckz&zQR`We&3j%~;t%m&DNTEw()b`!pfv-8To+rBXdBmH^AIWu|7@8b~PHqWgr==Wgup> zpNyzhjw18QMDrRM}%H*UE*TxmwJA{IpSC^Im3MpFVu}^bb!jd7fV~ z-c$=cdIjG&6d6IIbH@nu#10}n&|<{+wF>DPLw)VF)96$Q@#w~7$j1WD8jD7Vsn1pb zg7K8l(X^K~L;)`C&y9c|RfJcQ=-sh1%E~0NNETVD}09&Ao5rssnCt zM0t!#WNu$d*W-%p*NDrz<+|kLjKrza(swR&;&Z08|PNEK+7@Nml z*Tig`>#h24>&HI7-W|`9fO-x-iyF{GudD7IIgiw$g>7^gF^_Q&NgLFf^fkuSox+@i zEU4F1P+qMJ9UBPN_?VYAK#x{eNY;!YnCFd;8*@*jZ+xdm;-i=C{z%j>g4d&GpB=y+ zESV#`wC}U9*+WXC2%VR4B~ENGJ0r>iA!FMFcwo`9eGC91cUU{Qi`KB}EDWRCTEaoI z`$R#nrxRe@J>q(^_(%FmCmMpp4sOy9_cIKE%&X-Yu^V!->HswkW%iPVUh}?)xao9g z0w7-7HrJ(3?E!7_%4miTHas=9!oyl!erZ8OpbCI`;c}L!+}7~by0^}NOcSooRj4|k z1c!nK2LYM35o6b$bHN0isx1d01HEDR#mKuSq{q;ftt74TSfZ22O86%YEcbZ@vQ{+BhFD|ca{_pHa&9EHk1m}6D>4a8bsC8Cea@aSz|G9Tr+HO*;a1d}0@0j3SJ~`s9q{YmDb?ek?J(8qqXLq3 z<^xR!AIJ=BLJ)D8$_itc)>XDGPXtdu84Cz|HE!VI&4X|8=$miXzyIaKuRlG1{Bx`8 zYwrtS;QvM4`|W6AB-wqJHU!BRmH=C}B^j1%%d&fr5gCz@`2v0n1Mx3sTH9n3-Obq< zzlUGJ*M3Cfd`)t8s*1DRtE#?P44T|xSAOy3pNMmQ=ezGde*fZ>=Cv308>l@DW^fiQ zY<=ZCWiA*D*Tq298htn5Kg){qT;_7OmwVcm%31a(5olS2?s7zK-~#}ev>ETWG40=mC^ zK^%=hZ$SK{$wBlqo98(VJ!nFmXkK{0>$QSlcJ1CT7TJIK zsek|e^OqOpAg{fCZ@9$f@9ZbwAj3psG<0o;L5fe)MId|AO(Q9uTjbF0jZBC>wRg!7 z^>Z1KgYKbyC;lCndl*7zUSnF7B~ob(gIfHMg$LEJN-$oLip5XG3^EF`XsAwPdKR}@ zG;YU;ZCioQWW%YHi@`m5KYw@`PxsoZ_f`w+ALKOH23m875Jct{#aEqZOe6H1M<+CW z(J>WG;0nB+3j~uGarY=Zg%g8c6})FbKswBu7n$}*Oi3LrMOduK^As-5$UV#$_Zj>U zc6{_(Rz|I_Ph|wIZunkp=DH8UXAiY(52!vX7DgB>Ok>6|%)>GVW|di7B<;f#F)2E; z!lKWaeGlU0=>ZjyTl&D5l|J=E{#0NeK6?F{pzT#x?|Db;Z4}t~MY&_c1X`!n22rWn zHQNJ5?=W7XxB(moDi2VB4T~csT&5R|szl_Rs=)T)As25o!jw5DxwNTi0X3Y!Tus^y zQp`qr&Cw0?)6ARtyGB@!gUcEo02_j3*+tp!11y0Z|xXeS+^Zd*<&y{rIqx;J|z-C+&3?@2!^C z{-xo1I5`9ora3WRCE57p;L99s=nA@b%<2izp&-Vw40zI|YhCh6g`M$Sp>2jJlvxkG zD7OOzv6FAj-dd2;Lg+Z)gS~-#z4L5XG#ON%yP#6K*5FFCNHNA^Tn+t{=)58mDFDcC z0oIhgPwZhr2xG(8O$qUJ<3MWe@b}6I7pt(MteGH>c2;`HJ&tnsjctXza3Cqh6fLeBio$9vq%PVNdv zhuH6ivsM&h_=&iW9Tx^j3g23I%}8l3083TIg25ad>tHQr;HC;}gQ&*+=`~SS~QE zfS%}`yHlkgr$XpRf zM;I6X7W0~W>lQ`ed!7p%aN1D9zMY{K`2NP-HKNzT01mMiArG&*TIA+hD*>{ zJ`*kPC3J0KD1qBlY-O*>B3=pJ|G90fIx^?^g# zWF&aRx^^h;(r&uv(VOt6*FfU{!Prj?@Bi$l0{c_H1dD&|wR@}E*I&RVj0f6Z~B*71vfU7*5Ah>m%IOk%v zG_4@m1X3&!vQ&2LV7FpXNHL+O9_s;7Q7aHKdiHrP1pDa{_ILj2JAbK5@yd($R?AC% zu@|qV$y0j>m-8mch0n)?8!wnnS$y3G0;f0Qi-=%ngoqEhcF(YRm@*e36Vdkr+Eo{w z9StOLvs@*EqA80na0dveM#%JBJ)c>|SB<)gS(xgW1#oNQMSc~607S2+`55zt2Lf0(lIIx_c?9U|U3})opEf~Z6SsJe)$_1^r6%NPuA<@Mdi z{DZ%H|M`o5A3wfy*?;X-e5-Y)ztow^tvW2hIuyS@^vD-H3|)$*|q9F_kMaHISzbBGcS*M_f(?Rp&MW>3cxI^C;Fl_`45gPzI4q??`v;My!Vi zL93w5kMLs(BM=3iDtP{3oqg%gFJ?-<@(RAyo7ngr&7V=oZX&=oEEPvf=F#J(GYCO{ z>W6e+f+%Qh*q@f9!+5B@5z8Q|2u$cZkQX{ww%}WOY91x6BxGSFGO}u{#Onx_cVQ!) z0g1uWB0B?tH5XUizHvbA8$5d;j7sC?Mc_TJJptG}4|VV|;D!B2Ow75D5#lG{ADj?^ zl|>n3Kh9YkeGQ|_j<_wZR;W4raAY<-JuCmk*CPA-jvrq3*uVDjz13Z8{c;(*Lt(sF zdLcWRc)bj^Gtrd9j@-S*rWDML=a?||0%&du1RecX2A(6re{5iGFbr{lH7*G%JfF#2@IW}0;OBR@X-CmdBWPy0p zNEL3ZD!+`2P)y&eu7Dy0a|<6dy5K6%NlOOxXaf;~oUpab@uBU*=sM~TP-mCr76bd7cozpSY?;O@tK&`9XMW6uU#aG^P*{?s+^q19=Hd7rC> zk3@qjrJ>WDwWs;Mkch=BUENv(BA@c;c_U8Oknz{V8ch!G<_qjj)@x{~fwb$^i zR+;_+eWrj>0=n?#H4)u0sU(^7M8RVKjn)|{e$N^wqp!oxhYKzZ;MfF7@glZmuidiU zGFuTOG~{Z8%Gq@gjS5^#P|8{$D_uS7*|mS;6kE2zY3K5u;{tolSR!+iLmf=pLmqc# z2pvdyB((aN66Wl999}%FIN(UW+e3MOy-Nph4vH!DHUkc)Cty!>t|J}tX_fsKzkW`> z_QJi@C#C-G{9IeL5S2|%Jnl}YN+(9pD-Z+2n86%i_W?fBA(m+A*uso@o-waQ^M=wc z2)7QuyYgxcvfFzhx@yf?@T)|q798_8eQgYV5A+64MLd!i4^1ej54q;91AOFI%_3v3 zNKT2~Xqm2!sMLn?b<4G?d7Ce(UO?<>%Qo@7MZ{_CUKunsH+CCX_JQ~52atWueX^hq zdQm4vKcAC7{{FuI)4TirQ{Rt&dY2#k^XGT(zlR+5habOm{q!e)*MEL#(Dcd+{k#^x zVx@N9NJI;bM3v!+I%OH(+(0@O&AlH=JztW5?{;l~*_oEKt_f3@-_$dFk3BZ@mbU;w zM+VrGjl_FUoz{l3{lN664r13o@PvP@#fGQqE=Il}xXePB?>=%QJNgs_vNszPzhNgQ z(@-Kp%V1tZTrx7XmhT+VJN%JKyg63zzGaIU?&(g}Zt0!Au0cVs(91jGbq2$! zjpQK$McqeqYmaMtdG8Y+`Q=Ao5#Qy<4Y`U({coT^ z-8}>0=I23#Jgy729p!|eLZGU8B#)haKpP?zB;Aj(FxX~DX^a8W>~j!#ADhB$POaPo zT@U)^iuu&B%5L=FfYsBjVwcv_u{_v)AwGf7xjyfK4J{m#_X|N=2lhOet}jLq+`_y& zkq>B&89b&`%avkr6*9MnwBKtvKo_WU7&IO}c$(C#9TKx+AsKu4^26LPzooX; zBZv|K-}A0$E!bUI7C=P;C%-EkanplWca%P)_Q!0&lgfJ!T^N$XIuEDoGzu`&myB$> z_$RyOV~N&M97mAF4xzZKHSa_;?Qr&G z1i8_gxb|PMy%o~xY%0#f5Cl0;?KTv%Tc+|^lU}UI^}Hg#_?P$j50CKAaJu(>|9!th zv3~si!%G*+*Iw;6T#!F+kuwJZWg++5%VVm=l$Nl^g#@(1%CWX1hl+vYj8O`2kW`sN1Qo2EmBVFU_0HGuWskBJoj`g&&qsXCX zU3YtWY}&E+qdbH1c;Vi8B>;I9n*)RjOav|xZfy;ykDqg8^XhqV@HY$D5a)K5i~jrXj!f-N@W6q=YcUD2q1o zB-W@ce8yRA1m`mDL}0UTM1Q6(KDM|6j+82>qAR;=jBW6b^8t`w*o|p2(%kNb4A$3S$f{R*p}o5ba1E3UD~_gfGM?TM z1F^_p5-nQ=ie9Exn8=DVBG9;2&76!Yl@iqJ(pWF52e&hf6Qsw=0O^gp8Uu<>1_PV~^+aSqLqJvWyLfFR1 z({~mP7U1X*p1g?)NL9*p2Ptwy+4|gBiHkAaL20-oU%9(*fQ8BFdE4n)D-FM}46BO* zm$v~YsD&stodKQaGd@0+WpFCVYR)Et%pB+xNQiL6FxbS>=B{#KK^@6d;}JWEOgpYx zWTUK2CSoj|K|ekMNIraCp~4j9>AorL@V=uR@zSkxyjXhw!(W$P{rP+U?tQ*{{~g3G zFWGZmc}?H)QTuhn8v~rdBg-(h93+LKp$8Dex9c!?>MltYnGgEn9Ao$vWEWl^uvg01 zr-8gWn1MBo0U#^LSo3aV_i3A-trH<)fE@s+#eiYyQ+<2DUS62as|QZag9bN%V+<7n zY&MJ34H#G3%TBDYi~IvXW+!cN+1sEoKjku^w48uRu|4cm7h22~q&d)8Sv#|5kr+}z zm0qs8fB)B2*MCB_y~98H{DWt|yPrOO_fqQID=+QaFFvyomrhU0xV+Gw8i z`3!{GcOynQ7Y8?$6YaKG#TJRib1#j;BNk)NW;zKQ;xYIUj9_0y(3s=B0W;6RMo{Zc zaEuYwGYGYM z2(lHfrO1anw$_|8h!5j}yYd$B9mNNo)Br?mq_e_B8garp5C>>A#yk&nSl7OW>lN{t zF_1$R_^KBef>jIm5wU$`r)J;rRDeZ|T@MM&D`2`f*uW6v5t4Y5PUJ0Vidp2rQvo_q z$%TNE<2);aXdSso1|EApzz;qd>^`JQk)zvt5luQ%WA&L+Z?Kjvz`y?~mG=dP*dM>V z{KRy^p>21Qm@zm`8;7 z#oV@rG-k6Jl3=w=aIohV-|Ol!ZpJT5{g~#ir++QZ& z{OcDh@4No;lF96~7xeAc9F3p)DLHe?eRSh##8IH*P1V;GoreOEpavl2W=q5d#@>@w zkD7y5(?DJ*$Spn}cQYjHjF`p~DBZ*?lVZTJ0`n_u3}X+*Ur#z{Kb^%*!gIp1H}BJW zx?#7D=2V$#ehq0xD|E7rxpyK!a0@lmHfoa>;-hP;8K$YWWHq=832ELgSc;q{&LgBC zYTY@!=3<&bH-6=5@!$P*&Hd-kAHV-8H}B;L+Sgstw|}<_=s02DkgQ+zEyz3y~zOpfYdWLd{?pya-!cxeg`^2LJ(vS?*9hD#pP$Ch*S z0W5u%pnyTG5)yBaFb_}P$j+RK8}|quxbeXC6UbdZ!fWRdV$)8qfuJ|gyki`@qrq&t zhY}!aXs5S8I3>t)x6N9Z7#w7I&N{>T<-6T~`s!_GGJWHTPYN*6F}URI?Xz5-sw zjF@-9OjXO^Dcf7dy+FlLAx}wQteNNoSE|I*7>`8YnAtL_(<%~5ssE*v0uLC z{cnF=gx~)NHOwF0F;5jyja? zM>AC=4_zE-q%@XhHmv(=tO)>2ETqcL2OU}`?$kbXA$?t053ujcOZyR&10f&5taawI zun%dTJ{MG}=L+l8&I595xHEI_5{Qo-++4IPRu7*ek=LZ$t$1Y|HCN8t@Zfh3$L9eO zIsz1z+MDCK%c_Ha_p}7R>re0V-RFi5=HBwTwQY8Ld`I;o1xXZ`D{3$}_Ek=^Y=D&lbqWl~*wP9h{x#Y;uMeiA&fTcZ6XLMx^rVZY zG5WIRhG(+TMamvzSGZnr?HX!KzR_^ruo_w{ItrW@{L)>m~o> zE3fO@-}4@ZeLSp2S)PV8v@b=`9oB1m*gb_L6T$?63|gNH#9%gWT*uU%*5n$i7cvnt zghBpLW4L4$i4-V?o->CL6v;KF!ia+&%G2)3xW+u;v!yljf{zJi#kN>87B1$u&Xfni z?Wo|iBwb7`ppuPs?AAIHDUKIwB{J%+<#Qm^8(y({VU-&uM^YEq{R`;yCU$+f^8Uk< z%KJs*=U?&<@8bRU^|H|Kwb%CTSKl3y+YykWa;Kb0Hy7gQ!v&6nKxPC(zRObWElV}mc>3BMfFzoSrDW#a zR=oSNXdK^2SDcfUT34hB&odg)q8tZ}5(!^!*W&nku&j|C4SDCn-+p?AA26c?2A#dn z*~Xf~d41pTo$qH6!8~)FdomGog>I-KLuxlm zH`1-}!h~2%B4=G%UB^Tt@-CckJ9|)3H~#iUBuE~|+Y2o z^&6-=8L^H4XA*dW>BaI(Y(fyRI%}*_#!q~_6JvC&yM}W^0XK{vc2Mj_w61kApmDVI zBA?+pX!hyle4vk9=);ebywel-e;{ZkUt##I-pwmV=J#87&0A*dL{Hphg0T%|pZ4q4;& z^r^>jH9{8yv_$3?^1|^+%$S`z(m9}$ zZ)oV|7&j{rFq5*+SVnn7$j%g7ktY4{Ibr||r*#gxlg?g%R3OnSnO6;Afi%I9#3#lC zMhb?gMhc|p^5jPh{ogFTzhve3r%xaM{uj5~i{WywysmGz^nRJ;4)!g@cY4R=%Im)G zrOS8Cfi(AEj$`15f&5xqdTz131`Tvh%k`0uw;dO!Inftb!X!X;PG9#D9-By#0i6Ge zAk0zg1ng?h^ea*#r|U{4rcALR5#2k`3TvLgq%^gaB4{1Yz};d4y4~T2W$RT+L?b~u z8hqyfH6O>*ya+Q#>})1HmxB-BdsYvB1q@1i&zDV@|LJ+@{k25?Zx-Qeukaf#!k=A4 zn40p27UJ~Er2BB)b6lHHR;GtHtwQX!0)bZsG08BW%juyDBDNcgVTUl|sbI9^tubXR zIQdT=KK`W+ zU-GcM^3uNH>ic;M)Gb-eo=%<2R9i1n7S~FgQDZpBC^I(KIrEUuHIM477@KLXErW-G z>@!GN@`%AcU_c;tK7vbi?VClD^LlL2(Nnbc9Mt?QMWFjc3k!|TC8k5mO6fofo~}?M z?|hsaIr;DD$GTt`yA+SZJ+jSDsX0DF&K+N~X*M zcKeyZ8|IDEB7e0Gn8i0UvyD$~K)<_zz?zOk zYT#mf#u`M1V{)ID?|=XHZ&cvR-M-ge)i+#tKOemJG@>8&>7Ec?pFtx;R_>Z(Hk#O4tkgvClwKJ6V^{KJkT{aCb66Y-K6)KH zdFb_3$Y@=A&0UsVN|dqJ=-IRd#1i24sljOVj0uZOoQJ2IhcpRWgmDj%M<41TGe#H^ z9Dhe#pB}pd?KcXNOlvxTR=LhIZpCQ?5fe{=(I+bD^16le`ZH^KWx1w5cx*wV8jeCf z20F*>8&e7F+#0IP`<(V6wV~h?y{%7=+{=CR0yBVVMvM!38CX!k<&<4(W1xYWG>U@&VEo?(1&}V(FOAc=6L&@( zk3rp*%fo$5-a0pO^LRcK1+en?!;G`XrRboSWmW&}%hmVdhWFa*`G!mG=figAVdyBW zYq>5(7Cq9N^f*SQa4$paK>(#=;=26ehJ5B8qN)tp4;ypoMDIcpqwvK03=V>0f&Vz> z+zi3z+PVpUH9xYb?|j-|M%xvQu-PtjH+SHrSKf9gc!p5JGF|%&T3V+TRq}*TdEPJx z;|Mps>Fk8Tl%Inp2by1DwcXt(X1L%Mj9ta2@B;8{WWRRU{)gu!_cQwMZ=ScWy|!<- z{C?^5UFDE)0|M`iKA^#7x{{577FnZ5zi0HhIO+Gg;An5FCphao&YA6HRPoWo&k!3%9WZX4@F%c!X;kF=6K3NA5WQoT`S{?^~>Tp&2 zVTj>mx41wA?bK@coiV@oDvMidU(u5ae$Hr>x#@~Xb+!rNate;kmI!)<(`G7*`>yg&dzWaij~hT9T68LtNW83!-Lby;dxS&V7+ zkdVj$9hNQvE%@w_0>BqvSn?H_>YGtJtM}F0yhAyjNvSv^ZaN~;1J}3BAcgmK>b@IK z!kMMTq#%WZa5`$1s>>v%!->coTD^l-pF748l9}8mr>)DDP9v7uGkg7S(l0p#DA)V}tzegl>Fcyl3Zp68C6?7oz1 zQ%zo1tI5JncyEN<%Rq0P=^`}|v}@>1R#J>{T^Zcal!A{UdDfsVSe zp?5biTtN|n&OZ-YGWS7NJCuF73*nv!)sCYtR-XNh%EP}<@6vzx32*xQPal8$;nx)g zuf5!FxFUZ+nc763_JTZ?$N(@#$nTkv_r!oycxM%Q^as{>-M01vvN^Zwjh;?Gr6Z02 zNQ==uFkKaMzlT35QnG*w7)59AyNM=Z3FPXYJMTnsWPqIp!-LZ+Rw?L!O$q#a~* za2Icx-qKKpXc$C(P(hDJ3oX+S&yp7y3MNfg!|dL^+Q2e-Q=FxY8C8#5AkZ=&`>lK7 zKL%%c?PYz#mG|>rxEkhcg#$&9audh#QiLC;MeN++-loU`0-WEVRFd2T3e+sxF(||f zGu1K~n_WHIHV-3AWFN@}EhcA`1!Cw@YPcdE0K(p<(=~@n7co2o=qWi)kNnYj@x~Mii)Z3&>?g10Lp;UOz492iCl!6jMz}` z@$xDBAD>ko04?A5_g~)ogXH`->}#*RzTZFz0y(&b#qKfGp&8zzrtJV;CocwzOAfqz zIMGU}9R!iYmlO0J!0y7*H-PR;XEgcgDF!i#Euk?Ol03!nNhdD!o>p;kIl83JUcMzQ zNZB5E<7LfF(7Ah_88vW!vqQBJOuVHI4MY{AgS>7tPexyPk3J^MNH$x5iH{8*+-xb( zng^Vfvf*mek&3KZOS(fYzszy|UtTQ1-@*ub?bZDT3ebHYNxEn33+F8Gu{6c}B5WEl z6t?MbCqzyx9v5F=Mg-4UK1$}^Qsg$yJotB3Gxs!r!4zr7@X5^1$w+ITqbqFaoJuE_ z>(f23E)(n*;AdaSrMeJkjie5$qXO_;=9E0PyCt`<;8A#{FTc>0pF`WYwaUv{83z_r zeCB`*L2iJbh>6|Vtuw%tbqI!uYQNn1`){5VAb74H?~9=D*ImwUpyKRI2>1Jd!C4d z%tc@Z42NN1@>3=n6~?PXBtGecG{V)PR59{hy#>rr4nVXq+pdYWr=01~Z2MwAk#_DKJE7{<={Yex zg%fpP++9wqdY2Q-Sm*MoV#|GN&8J)4gCMoGBJqw3u3b24g$eD6n2eZGV}s>&`L4+M(G}ys;z}!tl~+$i*l0`I4hs+Dx!Yh(;=9qKnp8u4 zT*`~I_lMBJ@y$ox4ox)sixWTNjt$9AuBXE_oRWJqLxy6wuH{AaiRP%fTke$;u%b?R zNGp+aiWKK#<8a!Dvb`kl+2lIV7<|m)o3X!OCSPQAD@mnx(oV-YfgVoq#u2d(s$zO>~YHvZ9O1%j%{@OVSpb#Y2d@8Q+Ilu zL4|0}X=iLktRLQ2xb(`o14iX7M3|x9Ek0B7tc4J}bxwhjX|fj5WS_SAj&(C3Z&`;M zL{OMVoDH9&KJbPYs&X{9)}S34)J=D9S>W`w@nRC)Kj=Kg7jpx0jHH(ZCmv{-ZwA4@K_`lgh)$h%&;ytUUwd{s>5 zm|b%Pf-v^7wh+ZH3Cr^h(lrs53_@mLiVoA6$+(Z3cAEejOqm#F72TSyd&=&9X4=Iz zg1Wl08geTgViRr_=SNt852Hf&{Xvvky2u^aL$*DxYRjy+my5vF%ozApcwn9c zPsUh!E>iErpSGCW6z^KtGQhmP6&GD&i$vT@p>irugA}$;a1QWXARfS6gy{N4)&!z4 z!SimKYb9C_n$F1fGvbSTpU&v^jjqitU?*qXb>wfuzyCoMeykrq^yhc}-AkO7*Iv_a zpzIKYy~UjGn6(Le*f6SzVO(3P0_ws4n z!?I0tX%3r1q_H=EkH!%3U z2puH2`kfxZFZ(urearjtP>rU!= z*kOF`^FX~;SJ`eGafy2GD}HC&4Qi9e?C4H`MgX921F@LJ9Ac{&erL!grM@foc1801 z<-A5cAwfz4{3XVuhRXRjzB>SIK$5@yiK2qnUgU3}4rjC(k60Y|xik%nu#8saW4OS| zDL0x{w4?{pj#u&`NbN=;rYD*!0~z*KaPLUiuz6b6u&L_^TnOSxd-$GJ5Bz8ybi|$> zy)h1r(G$m1Gx@x9U`-$~@kRji%)627XI-w25mg;VswfI}sE<&UBD%y7Vy=L_(8f74 z@aVvs&@YVt#<>++qbibmgr)tF`aocI{Qr1-P17H$co`^X!pzyM)5cPAsD)$IT9oIE;Kc|-RG|+u= zO$~VZD%a9-@@Jm4*sB369$6W#(1aRD1wCk;q`o(#)N!{SLVO0>!Q=@cQg>5gt^u=K z67oV_kMk`mS!04Ci_&`n#w3a%ClnrMEz>cE>~kNGFB6Lq z2hD=VYhVEh8(g!N5xo3QnFWHJp4io@TSHTGZAf+zg#zuH+_n24vhj>dvziE|NGMBp zUNVsh>(C~)jS!TxPOaNpSDV(6k`m+w9>P^=+L%%02*9{Z_hl&V|MWr`{^MNS*IwCg zp!meBjSdu#no&2-=+!jixU`YiUR-*`F3vrK&nsQ_ow0DA?=x=51kmyJu7M`$g|c%s z`UDSX_ln6!#Q^h~W=G(NsTei$Je_tlE@xwt#4X>@jmyT#H1dFku^|biWV;-d%55Ie8&4z z^?m;Fhkj|-d+kO22I{W2kOt#Agka!8YfR#Rf+h;yU)ovt_uF&5FlWn zt<2$`XG|Serr*;DX4Ekc7<+I?%rY1b$EH4_p~V6&EwYZCqsFN&+a%{y-v-hOG+Mus zcRy@mFSlEsgIazwmie`p_Zz6d3x({S*x#p55u0kHx;n`YeyaIC#R!_}dG5Wi?KxUf zAb>&!u(In;72EZ&)dB@iYsVb|#v_~xG7t=ueWqOYYz-edk6S*KRUNw-76TB)=#dv> zQ8yi&hf{H@BlvECfKrCS*_)vc0kL`2iQ9Q$e#p2;eC`o(nh&rNa}7RciHahynZ2S0`i^ae#KTKKFwoMo<~d_ce2?xC*&KUe z1vZ)(k2K(^x6u4 z;HWsXSEU^4<}Huii5Jx9I%Zd29GOg@gq^U&KQjX1J*&n%lMp{ezHe7f;PFHY^2@6f z=bj1MQbI%rB^|sSr1mlt{CT?t?~L#IOTQ>CcW;14j+Ci!>u9B5vS0 z5Loj@jd72hF~`(vveOp}$$=!qTA5E3fM}P~n6MosP$`o)QrH<_LieY$@OpG_K3p2oKC$=&_wjQ8<6`KL;I3~r$cqmWm#PLx`-@{nv;%VzJvYf(k+sBzDx?7>5QuzD z`#E>RHI1<=lLwd=dd=^Ku?$G>h^HIi9Lvu18eUdRYxX`1fkf6D{HbGp-4aQZAR7!i zQ}jYVP9Q%d?@I8HLQ+59c@LnER;oM#xJn25(d- zA4VX?n{q55#F%0yVjC0w>;?7wq^wMb!qjrd)XAa3_OHazr_qEsb8z{R)C%1U26L9Ucpex?Eejx5g&*4*dVV-^Wn299Ab2hI$oqi5RI6eJ> zi=(6PO~ni{(R{zUM0=kMqp=h8L%oP9=DT2thG*xgi{n5Owa4(QhYl@XC!p(7+2*LL z@W*x~zz9KziMZ!7-e(UJur}tkAybzirFYY@>RZe1wFfS?YZ%BJfR~N{dyHxZWA!ZV z%N@SwcJWXBxj+4}>)qdf{Pg0T@3oip8>l?h>qGiX3%+1d13boI&3Er*dau-wKr(m8 zFtPI0QGi0hu^oU@hh5st!eTT?K@Y{lAkNliI-u0eL`zrqI@8o7knwGReLpp>IU5zk zk!_0_EWSaOlmG}7%A3uHhgMa^zP|{v|ale83LyV8QjW`pE5IPsb zAK~o2i8Sv*Y`|E{9#8(Vc?R{sUuNwQRToBlzb3Klj=EW<$S_gw7@70#zGsiS)?u)k zHZIlPcllO&KHJE>)f!FYoMCYh0ZxE$VxkM2giuCf)aDGI%~s#Dq1XE=t{QT4NeLwo zYMTwoD}EMDBqHD^twQ3rTu79#q1s;1&Y08rmFMnrtM0E((_VWyzk!NFZlUfzX6M9R zzKUSnC${NBpMUq~Uk@F6JE80h+Vomq6_%rx@o$HH7$HbXZnMtz1G^p&TX{XaoZ;ZThvUTO;(Xl0?HWc$5wmZ zk~(fPoG;&NZj z)l8(Tq<}M(NQE8}(ucf8kCGgY$WuKWP?KUv<@0u2+h%F^UWAGEg=hOWzH7hqcRzeU zd*yGuYhQb1zk%Yre$B2-$s56aEsv%IZ2Tn%{qfYPzN{=Bijoe!xJ+EZ6btM&>!!+&wu_dK7M#`lbu->ktic&E8sv$6|8GA}TuW0+vzko>Gfo?TTup zZDRL|UJAje-@^y@20A5=(KV*L!<_d`{0(~{O0jrT4J*25UjP^dIZbQL!A~11x{smz zx?nDBxoZ$c6+;5ul$9_Do(m8as!AmF2vP#5PmV)t*77S-W0Ch{$|f4uxD)QOM< z1yZ%bHrDD5B$DldN2+n1&x4qzQ^cmlx47`d7Ie!5Qg@^(9%8u&qf?m7K-s2|HMr3x zMNXArDW5X{!LsTL3Fi`3lO3sOv+-@NYwYxgpS>bZR7=hFM7q5NxCzSmyfZ=eDXOB{gQ z?y<_{TQqM~WHv@lGCZo+LK4oL!xK)OvkyAEbIQcat#2h8Cn?;cmrsmU0jsu|3Nkc~ z?cBWA5dyR1LcqQhWAdjK-E~4swaMmjM6H?DT6gc^Qv%qWuD$Ibyf|2zF+)NIye=7z zAiSA9A8CFk5t^)FVWz%)#M)L*D5bb?(cX}CD2UF!)ZqhU6+!Ig z(KYt649y#S0KS>g3}t|t1A+bY)V-tcTHwO68+br-<)igs+CER^9dlmt0LdGYWVLf3 z@=HcU%JO@oYk~q0;c!=OlM;Ufy7=vhd;ztL2$1Y=O-Rep@3?IIazFXGUiml0>%R8V zegoA<)9>!_aLz+0t33VSl|G2hBX^8B08aAUvv?$j^0wZ-ctgnJwBsJ4(TEY-Q&^Bz zw__hZT$HpkPKu3>aJo3&YV6cRiY{oa5&Y8%pdj_wEOsqtT^ zc<48_Yu(bYUJdA|t?md0AUAQfm-$E(Z<~E@9;uXt2$&rA_8oSXj6o?c57GWBP%!$- z&*t2h;?!Pw6@MIz!R;zigMmB-Tx!2bf83w z)wU<>(DxY>Lu?4p10^$T!r0%GK6En@W7kC@Sf(P!jj;YwdgJG|-lGD4w(9=y@x!0*`wt)9<;PF` zpFi_UN9`*w=Ud(E#_!~J^p!~Z1#YD`_ zIYDt+eF03J3@in%UcftG!N~m|Ec?%oza#fO%DSEL9ieX>_JIm%bt>m zjL66z`7V418JQ7kcGnNVVs*Q(!#CnfG@iA|YUuEE*&dy(Nr5cxbN2eymn$WO3e zko_5bf25OaQ0x3&yT@QzSi=IW&VH?t{2RZ{pLfMI`F;P3 z4ZM3tMik;@vfDbHi>k!1s_~<-bSln1BHr7+2m3S-?%B>=v$wUDuFUZ^_WD6SLBQf> zP`^a?N%A&^7)@g49$RK7UuBs!{l$v=zx?`&`?n=3 zzx6Bq>#F;I{dB8t{Dm`0*aWE|yV=<{k>b>Po%(iNbf@DZ6gbQEb zeNIZ)yS45+&$l9%!$M$`98`>k$HlHKaILJ)2(twpor zVvk$e{XsAh0%t##BCqQ{Ye0bL2$%2E31qWb4jb%887RaZ_luJae8D3)H@~!^+=@L> zTA%*w(~JMxzstY>WB%!P_fN^h;;SJ3_`AyU=YRQA{_|g!%Bg! zc84L|+mKjm;JwnzEdUMSyc(U%YXtfg?@4RzjQ!s3T2i$2`|+csP_akV_o9~NYpq@FajxcNy0mRQpSnX!_OWOO zU{lbYu(XDtFK`;EZb=Jz(I&d7RszpZrCKZ8q_Tfk&21tF1Shy@mg^0eY5XMZ7}Ehnz(s39go92_aO_gL)@*j zYIE7DxVDlGaiY@&G=Vz)3=!Yvckl5!aO2H#qhY6CM^J-MfV<8W0^0J|2N?g?|Lw;2 zBQy8^`@Z*EzuLcDePcC35gWjo>!%YE7U&*zFeq7CmjEu5&2L0&F1L``ydCkx8{48e zfd4#XD$2e&-v4@Zc)S#M&DA|i zZciEA;U-EX_6LnD;|o4@H*v3#F0v{r!ZiJCs~#Q)S156ihi?Gv?5p_7(MwP5GnO9x zC3s+;QTJwY5Ws_Pa&8<+&L_KZOMSl(870$BKYYDnzH`lbYp~pcSiX1G;uiQL)oR_R zb21^YS8EE|H7u0+VS?sd!dU9&`E_~T-~H>p_s72{H{)}B|5``ow|<$wQd=}rUw#BF z4OQji|^#<@}kO#G6 zByc}7e~joq$#@5YpvrW z-+lG|UqLMY^_+cKfB47zFD1qw|MXA)@el7;VFSPQYyI2$VqLg@6B=`@@Me2W>WgAz zt-9nxS>5kd=F#qVuResIV#;9)UN-3F6K&`88m~LvtefjQf3G#a5aoL8t^U^cL9}Y` z%q#L=>Wd$2?}m#QS(oD5T1iAT2|Pj*-M7_?=;Ibp95T9SSxnU-qw{C(Zfl|1G#g!d z40iq-BSr6l(!P;qe4RCJ(H@sX*XFDGsNwd@W7e13`x^Y>EiaLyy$8hAt~znNv05tMP+bC4i6O}agmcwF*Lvro5C3C%>F?WL%GV}m-fDhw z8p3PWi?iwUD?DZQptG(s2Qs+#o|2(H9m4sW?n@6_P*l%&dQadC5O<}hAtSg=fr-6p z9%R96Lvt3mfUR@=a(QhzM2}3mpZAVf?IB4gV7POHZn$#?I8L0H95@%AWn+tMg`wyDpOpWPLtx*FPGQ&Lt@<0FAd=$U++xuD9 zm;b)~<=pfQ(*`5yvV{V_O|r$PyD2P?c^Dy?y%ScQds=^Q`Y{sGozl+TkglCe8g+6x zp}{5hzP*R6S9`?UH#*G0L-LcCPe7Kh{-!<^L`jp?vvk?uItDZENQYO}eD`dwcZI*b zAm;6&gTQTOWT;?Q%($CCrah5t&NAwNE^q2v5yaL-BMTX%wLg88L@uiVcm2is`tQ&E zr$7DU@BaNi|EiAUH-2@0ySR?aRDQs1+zpObQzPqT_uF6CIV`BdaMsgur&odiKM24& z{fud=61|GveK&HeT1zQ4 zQ9b89eoSnc?$j7S!4d|JoW#S|NQrV_{Ts0?*7w1{KLQe z;~)O~pZ~g>{pJ7vFMs~SugZmg>(}|W3l7>|Ha&K}9(hTlyHai3@m9T;aF#1-*xD!! z#)vi>Uvhmsb9Uh~&&tpPUIXw4MQ)Ca7}@gJlJzkaYB$e!w-2Y4bZoVV9}BMkUjMS2 zLFOWZvxv+lW?^>SkpwP8Cqk8-0Zg#q5Y`;qD(dY5lwrV&J(3MW)lLTfQ)0VxQU9G~2 zOPM*}WY{a|Cp9CSC@XClLspzoaa`Wn3&)Xd(q?;)YIG`S+ZU+iXo_wWAv=Rb1W z|9}4H-~GcM-uwIfPv=j+7GL&TzsA2^XtW+yjW$W5*71_{nQU=MRGc?y_N<>fXD*NR zkj3i}jqgAJ52$zLoy*39vcE0RC7dsnwHDo}?Nf)Irtgil2n8(bmwWBlf4!E;@9oF% z)NAx0XR1q|*LnWW3uLSo5yj#|2-jq~7c+`zRaTa+0&sD%ZW{AU#(@ zdEp(EnZ8@&Ah?LL<@I_;EK9R_@#p#|3GsW2U`9+6V{}jsK5t*u<}Vi7|M;IW{&?jkZg9NRg`Am*>F*E`j=_i?Yy_43SOW}zVtYS3O|PtJXA zWbda2Hkc2GU%dux2G3STtcgh>IIAw>ae3-BtfSvreXF|7{Y!>>x@){%4!Ehm5rO=d zoxr!xJwA3XlTjEF2e;=+(C+F}CP6==udtarvE!Y6tP9A_b52NJA)GGNOZ3zmtq$*A z-gGPz@BFd=_;3ExuN{=X^*j5Oxztaws@Ct@_{*|t6WQK5qme#2jV=IJSnjRywq|A` z*da9Qq^_`=zN8a7wBD65v+U|K?MP|yQRUMFh_D2Y+h}WR(_y-w_XjU`cc5_$+s`j& z@khZv_|CMkdl8q^nz*EYg%o{rupalU(8u45WP3Fzoo~+Pq%nF+h=PwHv)o4V&CuHW z-M3FCyg}Z}@m4=|R$n0An}oO9{}svpKM=6^@BisP|Nj2dKm4@@_%avS&VH@H{Ec7Z zuN0W>c|E2qQi>Ka@lCwOd|k)Yc1X4qYAndimo^Zi%jLIP$QQ>9KkvLwbv0iSu+d?N z#*^2_n#`-g>}~KXt(UEJcAq-Djr*6C*8cUR)V(Q@c;+kHby?Zanx0sAJHOX;p)p9; zHc=+1_#6-l^FU@%Igng>EPXDogn?q8@4ZD>Wt0RSs%a_iw1XW+cUYk6;*sS_@Nd6B0;7E0xkQZ|Pk{(h z1v9nv+ivwnZm`%|s<`1(@4vCo{#)+-zvdGBjo;wUyTFtrzpB{QzpI{Z>}=qzLSID+M}fGNXuKHI%o=zY1zHw*!=bbIn^+zy5>1R zKH5Z1-IzHN#5e@Y;GMk|^4ESfQaY36xqjKi`17AKfA{|7AO84jqs-s<)&0DSOa2;E z?9zsc^%VDDP!++&*w7x}4q0#BDiK*GxBJ!DNy@=^Ek-kudHQ?fp2rOXdFVVO#`P1& z(J$NSQfr*F=cRAw=4d08W0w8$sy}*;>~l(6+#HDR_zAGj7z$IS3^RP2H{3 zx+o=ir!~giEe11TDwPANR=u0zZ(C43|GLWBzsl5XCRrIXY#eg;-k|I@;PvHae0_km zPpf?!p8|%^f_Un_TYoJzv1$eky^GPijolul)EiKx7#HV7PS6*sCx6R&m+Y=9f5~jk zCVO!Vz$=()kFOdAQk87)pA&eM*LX$)QE!KQd1&(F1I1>s7}wrZ?SWj9c_Es>xrgu7 z=Q?Z#=llJ!hb@T1yPqtQgnzMx{U84P@BZ+Q|Ld=_YJTfC_bZqEpJZ*R{N;Qsy+)>6 zGCGz`U*L?^V&tipQzL=iD+%krN}nZNEs9x&nAwvhUTZ5rO8X%@cC1hs~Gg-DrJ2Vv3+>o4;}I)xT%()ymlF$yX#h^ik9O?{@ z?bVOz^AHmdxl)8!_P2V@ymSj3%*~qSr^7NFPAmfMJ$V8@;Z~lezudh3ryoP4Km5ZV z|LISE{@wZWpa1lS_?JKb>R$F+zsSE`YL1I+&qH`3-$8;|0vuI6M-C~KJ#Ue*ZL-J8 zp3))vytQDfD;??v86I$>>>3PCPK!FjxB(ZVhJD(bu}B8!PDWOJ0{asG>t42h??0~k zM~N$k#;j%GraIvE5tN{>0VNaCDH($5kjQy(F4m+{>X$~z<#)>ruC4i6N?f+rSlZtc z?@$E5w+%c*x9;+k`3&&F+`oh%A)t7$S=uvZFq&2Y46Mtt&GaDF0{L{-jxWS1sJ(>B&4Wfff(DQ@sff4S8D4t#n3>34tazy8-1 zjKA?~{M$qG=U8aWF7ZeGFaPhq`=9^M|NQ5F`cuCDNB;9a{r$fXOz_YD_YZ^&lJra0 z6~YG&VepQ+n42b)?Sp1N`)9JXb~kbx#RV|{8q9V%@2-p_3C@qD!O@le@ZKuVz1OvQ z`#WgqFBo~LCY`RH{2Y(qPJ>j(Y>9~Z-I%vYo9?z5SrX|-C&oT7AoB1?-Q5sw6yeeq zbmG8z8@`Fk+tt?ugVOYpEdH zDaua@{j&2?9$+c>6;<~vUfUd*`YPea&7?ewAWtqCS6jH@|n%pr0d9!r9h5H!y{Bmq(j7o$vY0_d!>`0Tb~B zMDz7+-|5QMxU)tsT|Uh)=!~}fo@{QicasDCc12mZ zk8MNA5ow#$Vo2u!!Qle6AYC-B`JVaEeGCH(f87-oX)l_`>aJHvC)jJ1`Jn=~oNe$H z9v~9b=3i$+@2TP&yQODy{gkkbgYt>NI^!J!I53qycPr6A2UG>1S`nZ zCng90209fj`-Qj>pz`KrUzn+Dw^sG#6|I`D-t&9r+QlLAc#vztEO{}1G;~d`UA`gz zp-|jD9)Pn%rbXy7NtwNUt}x9hr!Rn%r+Nwd-y)F%zxdod!j(4eeA!g#@~*h3ICj{> zP1<*5-})W_8-2FhHU_I@J~K8T6;0qB(JJLC2ipo2GC zQMKXco1ZU<-N7LcqJ!_RYqY2~@7eD*^H^v08?~TMGPt?2jdUlI_x3z11`jAojxmDS zjE(~_>ih8S@fo`EGDMfnaICj*z}e$D`@(_J)7-e%H zO6Pp{wdm2tq8r?7TbH(WTYSuBPw5!H4XV1Sk<&t#QsY4DnI~t+y4r7F%39crYwE%j zh)1aXCtULEltFwV#pIXDqKvo-U9A&mniwH0IbV>f49l7HIdAJZhlXFS1T9zxUYI}@ z)87KMMr3H?bBXhFJOV=o8JG+PBE8%(-n`@@fROXHw8hnRXSaFci~;#qZB6QnS^8yr zWF4$#d^L9S9AOd$)tRIZj)rwmeszc*jS$vu+Tz@_{2@bW?@Hl*xW*|dh4rvk1Gwem zRio?7wB1$vvp%-g{v?hy*XG_??NcBc`o}A7SY5oW?f1N0Nyd8i^>F>q)mAfUSqGY7 zeX`^#ST&eZ;zMaF8_&`NH20VmZ&$XRZRy>+1*rsh7Czzp^d0Uw^4R=h>WACe7Nh#} z!B%dqviT?co&IPU4D1<=fXeSMR(BL1Kn=pF?f=F8oX^py&EM5S|;dpWVJ+gvO?AgZ=e8REAEF zwMh7nx|0Z`WJnMG&|TSX?8FLx23WH@TFTkok2Q2Q91}}8#F{MCz3ysVXurR&k)RBI z3{TogfAJaT;6cW8v*{0nDMRQebCqjz-^sVqvxfB1q*Xt&uxOC4^`6oaKE2M^ty+rQ z+g6OO`3b;BE5m;0CN-Z~G^S?opWos~FHXvS`kg8_^Q||$Mh^A+nDBSQUfIV=YuIV7 zFQoh5;?=@cfJ%35AYnSTZ8@<>z7u5W(NUP0+`YWCnC;6flx=Hm$z?|P*+pkK*+@d)c2ysk3^0=uKi7sHE7`xV;re0h}(F9lxU)jly+WnmK@!6N3%Al9TAtGE*k(W%wl$uA=I+%3lxU0io* z>0%LA=K>eQt!q#muSFC2v@=67vmjHSbk47y+c?oXJ;oN%rsPJRrOxG(lLS*1=!mx5 zBk2$gy{)ae)|WWI$q#+KK*JR6ca_^Mp!pvvdYxMRvu8!P&Um1P5`^Vnk9nWv|+ z0^YrhmReTo9IfrmZDB;cIkkI!1RvSQ{iStxt}I5LYEJ5RR)})Wk`~<8gA7veRzpC6 z*vaT3;4cXVeR%A4U_TtbjTEfIpAMhe-_SjteIoRmLHeVNK1Pam*HJ9 zN9b3G1X_C2?x09*KJ~b#no;7DUS#Xh1>-MR(KbQzvj>S~;ZwAA)%KyHzmgjzQB+^? z{cU2pkW-}{h-%vT?llfg_@q3(n%6^i39H)H!TgCU3ueKG9?FUooGpx> z?rmeg)7xbo+$bxux#rg-?su>3zC)f8A~-+`#+}y_LECDx-_KyVoyLa2WEhEbB;9N{ zw%2@b>(>ru5V-LkOU_L?rdYKXt%MvD?xT5HZzVe~=NBlYXUlTbdn2I{iZhIevy4QD zwbxc!NzuRXl3XbmND0x-uB%qnC&>$W)l==OtgrhC8H}%``X0*!KUh}#{2!lWrvn!5 zSY*Z+@&K)QXZ>N=V=X>c@^PcIeg~ZD`(U#c{pmO#4vYKg0h?VEw#-=iKUGA1p zRNsuOVoXKXehswO>7RLlKi?UZx1Q|xf*i!S6rk$Ya$>L6*qg}Un|y<>RXc}f>;yXL z%x@02*A0>N>=Y$b;cnetHKq{)29tLx1$b#AA=YpEKFU~}Q;ttJ_LFvL9E`fz(Tu#& z*9+xz+{r9%TV?uoc}>r;JcsFB^i6;vpaosr5YFsBCTH)wy~a0G!P2~*zj^N(bilW% z`4@AM%J+|i57NhCmeFsyG@6a086MagMO@u%y_q0^$ae?lqvjZ6KFYC634kUV5#ZZ1 z_F3=Fl+B;%{b3>9YfOF%?ARjly#?3}4*gb9H9(m-jVStCOXI0S%46qEr7^N|z06zt5GpKN zF2QVl^woCsdXr`?w;zXDWE6aeL>vrp&Axl|F9~?`%|yS6z`mb}oVR6vb9N-R zZ6tBWd**q4K$FRP-?>?4ZH_yZSD(UuUKE$J8J(kkaF2ol{(_aPKjLYQ=)qE^i??9! zB5COFZEix^)MFXZ>D|P~?8-8drjP*l=xtP|`!2#T@wnh2KmxA`d=V!GU zR693@%2p_ua&;5;J3B^-%Z%?eve~_HgXXR|rN1MpF5l1i;!6SE9?x{qAaDat-1Y9D z8rU$O2HCV?Q+FNznwx_T=2<5eMen`T1(>xsb3GDI*@Wi=S?tJO-++x?6JK1s#$MJ@ zCkPg>$6>57aH)>5xO^pfhhwbZd={!0;SwOOh{v>pixe z23;9FFbe}UNwf(v%Y0orzQ}v7(nENYbRxYd%6iZ;g7{%aM!4?fjbblrtk23s1K1?# z#$DoJ7T09Br?<|bTx<9;$GkuXhUIxtTM78}nI=PS6IaH++#>p3U2DVqS;1k<-G~@V zWJ2zZBpM&uK&kfHkQ9tMLI*LxDs6d{DqHOJ9jqR?2L=M$=V%9k#8ajLA#c5I#YV#| zu5al=GYzltr>rSQ#&>QEgS|Mh`2iX;G!XMcci^gF@X8H(=AwLhKB8?Tp*au1IRx$G z5p$WDI|oAk2U__@10gSS=dkzv*F~-v*dP+|R^w!JhQ4Ek`TNqNqFd@Q*im@YQ#~dkpe4Srv%2-bqMRhFQZm*1b zgIl1#BKH@`*gl;h{p-$Mmv$_Nv7ccmW>xxz)P?hy_8QHrJG!KP^2@b`$m(gMjkyU= zZI^s>l5aeh(^V>rh;lJUn_9QqF`#5YO51QC>~U8ECwL`%S~-egDnqf|&ZhA(1BJ}; zA%pH*`mOJb7>#k5yz$U?8O>JOMp2{fuM1x}Uve~)Fw$Qd5m4(=?@a86r&AI3!A$hK zbM1TNt1?A+{r_cCx;S>P8;Ocy1aJ)PWU$ z&S3jOz`=-8`_SFU_O9L*-&iuy^)86ATix~b^_9Y;V@M&CBe*%n2Nmmvl2(3>N4Uc; zYE3jk)dx5r+DnekqjZ6dn*mA3)`$Db~WxEN@n1^3^QcD%|y|L zP9zN{H@iOf!ZU74Jl&iN(ioRH#v1zw9hqY6^wN_#AMr8t=Ilk4#U~Ga`up7D z_|jJs#N@sQ!qm9lr?;FYD2NGO8eAC9AWl%8ip*rxaA{|L*$x2{`jb$I6ZUaW^J#0Q z9N@i{gMHK|{H3A&&`!yk?e@D#jMMbKq@Aa@ep;c=(j6=6R9>L3!H-zuyD*N)h#<9d zIYbH8{&8Pu&mQZL%m!lR^2M^D$96A+PkrR69V(HyT$;3B_wMWH?J`h*@C_lB zHScYZLIS0>$@jPFAnThhd`peSZ&k)w-$AVBJ1O68dHg*+_t8Dc1d6~&Y`p6}=!Ud1 zJ(5LdA=PPm+x&p;m*BISB{oqQOskpoGcC3QnBNqW!x&k}2Jo@_xT(Mj;8|tDmcFM#mRpG;7H(M_sgg zUkBQ$dJ7s75x(R(02LXD8^58jnO7zV)+&1LC)+zcW9^urDy!e7rQg`ROJ{x3rx?+2 zO@s4~cx+IVcx?$l_^zI|kg7@y)qa6Ugal8&NrQ}8X=Dlj#?GZ_`ba+`ojDyl+r{+j z&9uwpI<>rgC*`cMXj-G8W{S+jB|ga4URlj*dn3qBkAL-%j*}CH)j5Z=%7+ zF~{G0n|IrX8TjN5bhBMz47Sa8#bptPH0;O?YdK{u=*B^5yk5`umL2KGtnNHP0~mBA z5xnQE0b14Q^ufn%O|xD1yYJ|X{kkB2ymanfE_i4i+LbXB_Iw} ze-mKvLwhM?8@ax-CUcZxUs%&m*;&zVeL;wCx=oHI56Eg4iHdMiqmrYlZ&z*R^V|0R z$cppq$tX=p49G?x&%M1S)c@+M6A-makMeep11{@wiTWJ-{v3~x-PzN(wt?uV%*QG} zmkgsc$NyyA5XY7-hzjA?;@G=o9uC2W>{2x1Y_Cia?w|EA3xZp`%iQ7REk?K5{@ z+_l=w-Y2uOm}HkTfZf)a!1h>^<{pGAAd+u$|GL{5Y$DR&C(%Yi(?v}2q&}q|nK_a< z`3YWz3h9>SbD5b z2NNAn>`EKXiHnq0I$s3ypV#h$SS_EyzJTk^*1@5qBqG4x*>2;hKC(r*sb4iT%q}En zsHK3kUh7m@;-1{^kk!&|ob}n**Az>RmO78nmQaKY{33p9ir8ne*mNcPW41*-&F1XT zq|;@Iv_vU_w*{p6oy}&hr@0N0_x2ZWu)~vdlm@ujgM520RC=FH>oUP!L$Bbz$y7NL z=z`Av>6(6mxA4*kcOp>{2|qJxA?>8Qp%Yu9?{8<1D!1`CbF3I}*zj?=Akn}$vK*7; zd*eg$BDf<7EG%NT7nQ?ip581M?Tzb~xQjLAvnTzwW+2uA`HMv?Tjgv0K1K`bc!OM!rIBe^FSnDrh&Nq<+%!`od&ifI0Tk57RQ6D=4|HC+_L}!P$eoM}w zrno=HBalu&w~F`<0QS36;OlGS*}*%wK4Fn=`zoT=Auuy|{{o0*S6mLCy~eq8`v7sG zuOD;eEEz8Tn3s5WP!T(16V6J1u20SVb36h>^>Pm2IQ|-%kHO*BnJ7%NZw|+>#OPml zqeFfhg}C*6M&47c?6^UUd$zsWj+zV-Fo{s;@-R7Nq%S1qlL5TjO;|?#=XiwTz#>Od zwuhg-MHq`}}g?V){XVSwJdXAkm z2X`k7XU8jX(ADSWVuM-zOUvA6)s90i9FyB*619Q~Oj{KkWadSSPBp5{`@qs!oLAqm$4npOE+S2--`8x{VXENU0>`P z)~?RkL?a{j8uY4gS_zfnbs>!KHr|5ld-g_uqcstzqL{pmUqj)9* zi~_O{ZTBAl%9V`CVJ0~L%u8Z+d)wL&KFC6$`ugqWYLX9mlDR>Pk z-P0G-9a+L7OgZnwR$_06)y%;=?!iK0J~CUAhm4sl*JhrS$a^VITe$36w&r^47S1OT z;*bu6P&K^%v*si(e6{>cOO1-P8iMBeFmJI_uS*7Me?|t5WjQf`MG1kfk00!QIYEVU zue|_F(dNZS9YiRt}uUpY)*Z==i{y2U#{8r2Kp_x2ik_uFhr+= z>v7!|xp&h&FvU##I?S%5&-p}+oFr>&y++jF`xKj!eICp$lmT z7U7If5pem5H&%abJ94K^hbNyR`)NX$Dd#+{nrj~%GLjtrF9^HX80dA6oIeihr2ERP zEU{G*Z|AlvMlP5vecS}Rkqz8RI9gI9X?@weV{eEkO;GpVBix%_NMIjc3%DR-Ae;f- zYHK0wnoG{4tUdc zCkR|8a0i6U)o}DYeYu@1uT#R=buj^-89|XeCJeGc0B}H$zrggkMq+|K>*#P2lsfyg zT@q%l@kQucW4tzT9A;~_0sB6mdp0DBIzXtGft}55{J~4pTni_DcG1_6@L(NQ%#L>Mjd#?Q9ujWm%Dss2V9{}7#k+GhMzN} zSKH=`njf0+KZ=S;iwz!5vZmmlr3&o``O8Pmq6Wf^;&hkT#$ z5R(Mv>t8JU_6aCqBA)QxmmZo=&GV#QUzn({`3zJ?Y%8k{@=F+`LR0(?YX# z;U_ddpA?Kw02mgBb&N#{RJC)7-sRXoWqWntLCGZi?#%mS_*=T}Ao8@wy~7LQ2_6{o z5*?ny-o2CNp=U##e%+Chl-DPwStRtJ5!YzO49i#i9BW}T@gP(OInupfAAH}r-5Is! z@H8%F-iVmq*4IK;fSDfQg~PZ9M6o7_)j*3OC?0*S5JS?A;A;t9M0;3=7TJSGAVsb9 z^`L)(x3Jz=+1%%-0;uWMC`Ri2H5pofCmB(75q19z9wz9k~K+sZVC-gY4^0I)N%4=OqVM&copR z+IosqkC}LlyS?%E@|pI=kw}u^m@{Wl2W^amtX#o3K?IQA*(ccVk~m+qw`!u?dN{~4Y>1{%?x0M^ueO{O^Rn8@yZ$2O=WC9^qkfWwMHtD=OR4m z$XRo=ErN26_yoFCg~(?dG`(#5^GBfY-aSv;*`JP-&q7!i-J$6ON)0bywf7B9R`fpW z)ja%fHeyP=w$TOD#+l%;OFzBPhv0wXesgLun--ffetg{Xp-8_!pEXf$3@*GopWAFi z12CuttE_wXwqW3(TAfSA!xqo=uJxELNb=lz#;GpXxh~jxI7mhuv1zDWkt<+M_bC|9 z@i&Cn9mt?Q5prU8=|{e?IMjuF8-e*d$bJzTXrc)|9og5~y&CwD5LIxaobrGanm5p* zry=)2;o%$PBYV#B<;FHCRKQpndncT=0o+ry_g~ z+HLoR>U5Aic2}4}k>n1<2hlGMd4(uh$zI(u zY|wKY%`qcNOnU=g{HioYW^j_uQTBo{4@wd<9olY6V{a+ISf7yOCwPPdtwUZlGEnqLY#^(Uz9=e$U0lZ+QKD`g>>lc{H>{>TJb@wMNj( zIk7AjxUO51EBnv!2&SvQ1gi4F89dbEHj{qSYxr&veqhVy>5 zVJSpA@jGE;RxK)nCN$!_bCJH!`#w@X%0A%Fw@pNRWAqsdSUMr_uOX=%=jLPRaqA`) zsGs8z^tE@qw@otedKbSk+V{QbqQWx$^9Z8|EKeENO;tn!a4Iyn#lh&a5T#3FY~ z60W~D+L2&H(4Dr#m{Xc$8;%zD{UnbN`(Y#ir4{Y0h{p6teLKziy`x;r5wC39E?w3D zCQsdp<0P3ml$pkky=RVlk*uk5!Tcl#AQC%euUiTD>1^m9Cd#TV0BGH2(b zta)#QMt6E#Q^p6SEhw@hE&C(per}lq=h(XaYeV5n9CodV^oK|vIL`$NMxGch5Bx~P z!WClWd4QNnd9|P85k_F>Mf9>F5B5i03*_VO4+-m>er4ufz7-x|t^;Tz3@-_FGNw5( zb5o<20T4Q0u*Z3wADJ&gWyECVYwbcL)YE@(==A4!1pf@EVCpfwl6^-8dGy!Cum-#D z!WWwlgND*N#m!M~h5-lp(EbnpFKX|j0UOJQ0geh4h#9Wgt7uxUFRPWwjEDN#_spN; z5u{Lf|7c4m!gOd7t(srtr<}Bmj1*0 zhtS2>#%DPQGG`Ay-zeb=@M=@8D)R8PB6JY0{M8xpLQ87 zGLli$7{gjoP!YC28|6rvKO2N5v?yZBmJT1L_yRsl=TGnmIcc3Jy4Uq`-}6dSG3qsj z;O@v^D?5kt-pj+$B7>-uwjt)x5%Gud8Pnm^W6)r--wnbA4bSdzqE>4J?S5B+B?~Ic z+3)-ukKmB^NcP#%^ETary^LTy;4yjOb>Tc#TPjmV!I^so;u*XEDrXBMLi;=MfdxK& zw#W%O26Aeu-Zr(>W^@7WZC=hi$KtSmjz?&|kp8`XfzS~odWal@YHLgSfB=2kYICIZ zJ3t87g%tod_1!jx0x zQ}@Gy1brvagga9fK)Otjz>th33$f{8-o6=Rt$BN;N-pF=&}&YAl@LK>t=7h&rWt^t z(4eAR+bY#@e)Ch*1a0+mJVK}M)wiQYawUe2fMfHR`C1Pjjn@(7P1b{?otz8(3v@X4;d?PH`bp)gl?ss%>d%s#> zR;cCnb}VNmknX%ZCfPBDSMS_mHGXjHwE!>v9FHK9A6rb2Xfd!jFt?8$FjGopgYvI`LXw~0 z5qx#eIK?-^zY(O$>lg?PJXE1gY3gm-hl?*%ckRNbQtz44V~XDiAzbUqE>EWRz}4s; z*Bp$^=^adO_d_%9P9}$0ojbTekIg*9$zQL{gagpej!rI5Q`^w69>f9I;qy94K+v*a z&W?VFY1@Z?+(-Dn)8>ZG;{wQIe8?fG3rl(25J$&J;<_A_fd+(j7aWt_VaOLjsk`xy zZErwdnGR)**_c#Ww`kc&Q+v3rL9?85-S-2zzxK9PXELwVeZB@SkX@K5GE4RKS|9c7 z*+!jrR*r8r^%J}WAto+t?MXsgw+iZ^+jbK|$@iX`{`&Bkq!-*P_RcDixVK8-@Esu# zY&E^BhgAXifj-uIpPYGEOKrnfKqzNg3wser_w}{Ge}bt@%gEd>M@Je9Bfr0k1`Gp{ zu4nD3Lg!YEne+DX!uA55!HITP`c;PKRp*0NFC)PN!G7qw?es4mmTs8^LkEXQfZ#;1 zOMX4*Mr4E>XNP-jMu6~qm7)+w6j2JsILVQ-5;S=BiY37l@-lh1-JJ#I1T zUA1m&*p$iKXp%q2Bisv}p;*zJ4EU`A81jenfSF2 zpNibZa6_|66@dWL>vb-mmB6)33{ytTJv+&Dt&8+8P#RTt`Q4ximQDVo$S5pf#BATc zDE)qlM_6WSo`<)3iZbrqrk9hC$j3m%bxDv=2Xy`r?-MG~-aIHVRzKR;4NC&EiGM^P z2=)s6EEc7ncv^awPnwC(t&K6rrpS-Q@e@1(`CLn};G8$s0nqoZ>I0LxY;9i`HBT1Otm6keo_@H_YQ`{~zYgFv*q_=8juJLK3hX5NQ8Pn8@n4hq;dM zAKRbjzV6#qAf1!BYm1z9@8f=|4!l0Pm#?A4X5sX{-QIeN9A;f<-IDsQoH$DQHskhEYnfBd#zbIeatCMUyboIa~5g{_#Ie2bS)(?q`d7PegYt|MpuLMFj z0uTa;u@6GX0;JjN6Wa5D)I3*bbJ})`?{fbGA3?dZo(CO#t5RXL0|QIv6Z&}2ei(#O zq_VJHnm4ZOuNbhM4}RnZPO;d!nDPI)Jx(;BIcvqfbZQ~*HEoA3H*=wmL4LmG#c_o@6*wKhd5c2Bp2yje>FMRm zPPyNXZ15vpo4tE5Z{*h=`-P9dl4f8?$ZgM74SYCRKrZMqLkk}^F|f2=5VXk(g6*A( zFuiY9pn_=$?bLnE2!@71=`#l2KyY6hX|up9EwU98tkvnO)^B_S*xyn*U$h1+`&~$K zA8UiCU(&~u_PTYM+>5p^CgvoOq*wcFzRwnq=MG0C-k1N>eF3ABehp;>*>PXWbJT4Q z6~?!98|ODZ0z31yClH)Fz7X_T6os(vA}u(RwWl2+5RwZP)d4{1$gS9JURX&AEC{0EomtYy?8o6E!I5rH2Zz;p@Nv_ z)&cNIT9}MA!SGM7vwO`V3=c^YW-XqD(s%-~^eP;HyH1DAeeT}l*t#&#Rt@Mvzwr?= zU@QlQuJ@!JQL(;dp&=t$_Dvc3;B*EM=!=}qk$V=Mxwg&KxQb#k3}7O2?rv+mubDsY zvXA|$eVvDv?y`Y5=>o5K`T32Hu&S(63XM)UMw(J@viV3BZi2Dy*{MSi1YXJ-YjGkwz*2~%=1=H1QHOnSCOpvHnuZv_T@TRKQ#0ZI+J@BT;aasqtooT z(&%jY*SKsx_l*_PXCoGP1yHWehQt*=$Nm%fSt9|lWYulp$7jYtVavd4~Uo`FEFK*4QTXj z{Rm;1q@)m>BW;5G7c+aC%a-)15jLUgEu^Ds?BN^c#bvr`9|`%HwRUCFm*v#UH*B2t zRT;-;9qHTMFlP8XT&#gu8~=ARjzt!QOmbafrzXma^;9kp$-0y-w72~j?@|+=g70d! z90|*ns|+|{0OOxZ@6Nm&IFW3h0#^w0E6CL8G=2QhGQ^hL{9HkwjvCc=Hp|omZ8FD) zuC@IVIz5H@)zfxIB#YW{cWiKX_P)Ov^atK+MWA)-Yx?f?5RK==dPW8{=V& z6VX-DH)qGo9&-qPOpGwDL%6aeS%2GtxS<=MSfqgi$74l3%PGxjlDqfkPT@G((Euh-}~8wTjOI~gf@>l*eEdNQ-m(+ z+5@)=ZpQl-vTxCM_<3w3!PU-R8TY-th;;hGFiuZ5BhNiFhQ?$~INpJ27R=-2?W)rr zpn`epE30!iULc#Tdsg01yNUk;F5^R$US(qq6pleojC|bQ{5c>Te({YNt|UU`wP>6% zy~yvUKy|k|6@@Scd)x208&(B?T9`Go%?>yvoO&mdaTfx(sYL{xCOs=>JbqkK_FhBPbqrlj0E^qH-kHV)y3}ZgKa9=>-*2R58pldbe zCwXZn0r$`0_{a3CeNsgiDsa>V63;oU%TU-82t^0ztE5&Isk14t_H&TZW_-`hK%<>Ry4|cD=rJ% zGNV|}o3FhO4f6vZ0fysoEjZP@S0$u@o)`nG=jp2cV06{(g}$ls02IDN@p(Hm+>CkN zA^h1qT6;2p3-Z>5EPZ#(u}q?0w84D25-PS(vaI_XA7S@-C9wPG=~?R#3=!t80`^3Cmk#M4h)JUaXSdzRj< z@x|`MM>~xR`u8TlpAp*@>T=I9V>T_K4KH^qk|OUet!J|WjW3<2YM&lUFGTr>$>Mq{ zGBNH!4~YM>-}osA$nh_?VmU}tL5**9o~0yLyC*Mv3LtEJ^c$MOZNuk#6UJy1t%gEy6l0Vx^(Uo3Q`+KfXAE>2VzlohTnV{3@`KqV4r4 z``BH&^nEDAoh6%T1G+t-6Q0iNx@&XLu$iT>%%%}7ZiTXzP9;h+`mB%2C9O| zQ@+c30D<^_a25ijodd?Mj_1eq>Z*%}u0yD6ovcOtp(HsTkIGJI=~W-Wv-wjy$|XDI z!U?(QcsF>i15pE8%WZs*a76(THS0a%9ag>jA)~`6F?bTKd3E3sS_sf9sFMk92VB+= zs@`0uo>%+$3w%$`J9prczhbjv*SnWp*o8wl7BfmH7QB_%j<*{RtH(?1ny?R>;-5cn z?8h{jW&-jhhB1%K0TjNd;%&(o=8jJ<-9~&5=pofJ````rKpD67=31YPvyP4{vNh43 z9k$I(We>(s@w4IB%l9k+o&3SVs78DnO#V(WU_I^vW88U=K6ITQa4Grqzx>JxZ*^&B z;*Gp?S(kA&)UnagBxTpH#MfIx>;AC4Pqc#bwzFjp^A7%Ku>A_VYUrj6B|SgTmB~_R zeBu|-5R2`S)Ef@L@k{z)0T27k)PeSw)8l!HPAFVYY%csw?;7Bu?adkdXS!=q7osy& zn(~=&L6CA04rpHCXK$Cip7PYtlWpv|5b)xVP=5wf{%Z`~M;WN8_?3^R5o2>qDu`Z0 zwxXL?IacfY0(LT7Y%rFZrzvN$QeKsdSpOo`<$G>6qn91XfG!C3|K`%~ zTB{s&fOqWjRkw1^)A@3ETF>sNR!8}cBelUCY-i~JG=}%V9nCAxe%f;%yr+TH9ZkR| zIFHuQX<<#HYj);xZnzCrH6HGdc-o)`6;mL-ghzLFTThmDFe4B?OI+UBAS3M>?1}6f z4gKk}^N07&>o6q8H&|4gLYCVG5Bxk5`FM{aV4a6}(OArC%uLqz5i-7*R`XGd)$Bal zgSlSkK5yiBSF87Nlpr%lfONd9(a7|- zGSKRoa}#x5SPULfHV9PtWDAABX3#lFRpiSstc`J}Vwn|Mfl1 zWevlqs>`xdQdx_$g??tnjS6d@+5Yq^XSB%E?|dfpcKa4dSU=@@J0%J{6IX;Sea4&W zHvKGQ`1tCBINbhbD$<6)F`67$istn(Dm4s_=#DU;_(;eE$OuZopl9p14r@S+Lc`dW z1QRr(jP|LZU(Owcx5swHp@MU~>9JfV2{_|p3U#0)hI5|73*T@SgyZ&p^L53Q#PwIc zhB3}{%qyRP($?Exi821Ii}q0;azEHf<22<>WSySyTMW$!WRanY2_BTV@{#nRraeRBP}VXg0^0tU>}P^{IMqB;||h;_ZH9^=qda zBh^=NKZ5m{G}w|oIZolvcZYOh*$ut|{NWDcqfKTWV=l9?&dmKI-vz2k*Qant#<@1^kEq@&!SHCsi&VW&;SJ~7vZeI2 zqvNbR#CSeN&kuYTj*U6)$yKA{Ikmgyby%_et^Pf{SFk$8KF_k#J`rQwO@!jvM=WBm zCNX&SWZPs2kGK0~1Bw9g^AvwBFf??(LJ1Y|jS)Uhe8<=fDGl44H*ARdto7-_w+pAk z#+Z(Wqd5bDiPvx}Bk>A^@5sWU+%B({@BRnTixE>_u%4Mp$2uMNjQMW1m;%qvf9#V< zd+aFWQTz=wua8>!zHjG56cdUhqoQrS0dEUDnr@fFSY`l2Y)1}ytSJLV{ekDE3>bN` zpaF-A>GMT447v{kZs!TIN`K?0&<2HlW>?vlC|XF51I>@Z0UK@~d$X3~WPM-voh0>7 zyW=%DFRe?Ry8R6sy$zYDBB8L~D0!%j8xHx7zq2=AO4E6+ICX2!-}ot9t+htoX!{`+ z8Zhf+)&z{&&)7h@YxXt9etx;CqM+fa*KOJ=l&lSIK8(YC(IH-Nm=ijEKUi|TA>)>T zszqDGsM&JS>Zu(#LUIzInvXo~hA>Gg#&K zJgt-sEEj5p?}E{Hv{M}1)N8~|nIs2^s$*3qmk5nf=6l}?PsR5)x}pAQrw7ASj;81E zCF6W4Se$!V{}}(S^VbsbH@`_$)+=L} znY=SSUE=J8kpt)8#q8}mhGM3e$2K^!KFNZz#CnH??a;H|d=Tcl?ijUUl1C{9DBRo4 z7V{mLi(t?`5XPMa&9Q?~UN^dIX|Kp$k=au7k0ty8Sa~h+kVcF&^^Rx*yVVAYMOo~NVQnR`DPda|#TeZ^RQ{kN3GQ1OY``lPJFwDoV+(4kLr zJVyS=e|ovLrkSTQQk2PY^K~@`Hh7)GFwLEvd&{GsJp1S$wF>MP9dDF-)8>`=L42vH z1{fOvSq$0p4)@je$?olmE2rmGZTmg-4X?Rb$9csob@u5{VPNg+WFx>4%xN;^=xg`A z2A8WZNV50BhuZRk2z4vI8n1Tu3vRN6VV{FOEy4|YMQ@~aZo*UowB1L#XnQFd8p;(d z&G`MT4(inAqhh~2?i(2&a5@G8 zdW8)l2twR~^2(Zgf+@icCSZ$YLr31^GsL$s0NJuTB^|XN&YGWaBM-ThHY!gXiqokx z^_jtjWUqVF<}`L!v)>Zbd=qTa;47vr%#lSB_ZwZ%)~OyvCkHthvec&em6unk3{Ra$eVgjZY9Jg6oUVxZ`ANXJgw#l=cyI!YV(0qIj zsXxX|FD!$vD_nc@#8^7fYQCC{2;GrH0#sFSuzM0l*CuQB$MF5m^--&!Uf&v8W9`va zLsG_YK=(DBFex_=r1L2MlS=6Bid$>7j+DcP_el$2&vB(FJLAMn4+B#19@|%WsL5oW z?$FGewWL+Obp62$~$;|upp`+C-wwGM_#Y`@}u@?L&Dm%~5NNS>Ip8 zT-l@{>AqXX7{v*(e-mshAv?9Uwb3N{UtEroo+l09da4wo7p3wwPWOGp2Pu-uHEn3} zer?U=2p@bhg)>3?L!Alw=%>h(A)Sisiv_y7g~(fqW&9BoH1QQmbO&)Ij%0_qQ@AM9 zy}UK@egVnOcp@u%HVOco`P~esR><=pall{xrtvQ?u;_i}1epinOJ~vWh*b4p0N49d z7Um?ibame1A-pc8_|)~8I=C#?>Lja%1^11)20gIFALN+y9yj*`>faa1#yWwE?elo{ zq4HPJnA0-G*zLo69+nsLw9~86p#*5BqOaY_%Zg164B#~$v`(_977qoLOhG;ZTVD+=~w&T7%tLe%z- z4xxv{*?+GIT}Xk}<;mV(vL9ZOeBtK(6bkb$|4hgWIuMd~;#>2PZ@1s@%IplAG1TDQ zaa*|IgiBFFfEQTha^65pON8R#gc+PM8A6RU__v8Y&aNL)*GOeX`|ycxmJ;NNV{ex} z%AIqI(RjjhwQA>YcxB=cE?9K2MHsw~zFF6DqHH;4H`RUc<6Jb?vfk~Z8@L2wk9tc| z@P*xV>G}|6y3TLj4{SlWhO<+mz8S;Q`H|0f?;uVXe1w|*&g?1goAXRQS%+_u zxn#B4^ejaR21*6M`??*7tHJXJ!6TD=rE?FvJ**ZNod#3plGIx05&-B|MsH7-9)X1S z(P>s`#%X?T?X)ex-k(ri*M?y*aJKzRh3wuA(H`<8eaZ5+&+cbU5RYoNlf_9L`$gW9 z^1l0iA9+-KM$~urI-kLCTH5?;7_(rIoA3LDBI*%b84p$yZU$n`kDi7;zW8iizc=di zn5dId-rjFRmig`e35g;Xvdl!V5LV1a`Bt)fBpY;t0s7Abb%89Z8uk$ zoQm4#9{Yix!kTq#CrKWJqSjpkBVw$}C64WSkG0ev&cPRlDQ}!l-XPJ1x6(ntF0wI~VFzuUAY^N%_E>`e zD}`y7L;Mlr8ZZFA(DvQ)O}A~muy7a=f=iST(GxP`NNb^+bhY&{uiNgTD)PSP0s?B& z;!W8}rE@4))Anr+Q}DfuUX74mpHF>qRe$MEMFlHz=TDx4Pg}DM;n#X0bJqqxOxJ;z zyZ{)zhkGi{($@XfTRG%6rYs@~LI*0!<)QnU$YKlQYew)Nlv;jaO(m!kBDs^?W}HE` zYDsTz+lRi`y=-J{jm7^zJS*3iys8wYeb~WCw}G&9Q7mWQ3_6f`369ilJq9I=d{hZK z8N&2;&SgYWZ3jn=<3qSjQPkfpc_(Mv9lq88hR8516`9U{vBR|nQJx{ioyd^f^^pZ@ zwyA!yCkRmxU>>y9^X(`3H?Oypo5^>eKVOZ6B+N8tBfCER3~5+mD_}}v=@`Tb+-DB{ zR&tKzAPMO~%hjEr5HK{3a*4Y;u*FYj0!&2h=-a2TJnb{ISe2uk&pz^HyN5}ltk#`Z zNPb(>uTRXP_Jj9?l@ivOqd22AaQMab_{lm-nz)C#@uIA^&h+AF_Q&)S%|R^l4u&F0 znQ1gx1GU%Lx>sV+sScgVImK$Bu4Ot~@1Ej_g|9)zCviIpyubIBC}Q~SmM-!eBAcrM z`J6`-3=Go8Yg&}B?i#iEgjSs-cEHKtV!j%~PX3m%D)y}82zx#GDIdmh{h8HSOxQZ+ zqsEbQ5HeP#dhAocgMCkf_tk4`~ia6p0RQa^L<<~nSQ z%3HBzpB56ZipifN7m`n&$~3xlhLOCS^W!l^mWp0(HhsAwX1upI#Wmz+~f8t82JCuIy)E0iWc->_b; zJI3|ZykbV|T*AM6{7qli9B_6Qwkk{K7~fz4aqNr^onG?t*TC!yicBBFIRbcD?e!_T zW}}7jf-mGp@V3r7^OJR!eNvzdPTA|rs$b8#NqMIK#!taHco6{_yIZxsMn_^~e|H_G zOgr{mHm1WRKeVe@=fPYyd%Z(eWEb<$l4(1&W**-fukR%~{ppKiMxk{AtGDH}=Hnam z>u>xN&O!)&NST;S!ka+a7f&1-V)!?C+ueop=4sxSJIBgNi=Rc$Ug8Oiuyyv* zrgDY=+%aI+BGvA6X)6#p!*rLD{-?b9f#_guTe3zgbiqw*Zv%FgJnQ`AmRXGg8|8DxI(1(-_DM zmj*`%wq?EKxRWdM+s3V!pAvxEv({dG4*6aVqfTQP@Vy-3^{b>q&f+r3fDf1b=xcV{ zNsX_I;2OCvNKmv^pJbly2DGbA9GRP1lU{Kv)4Dv$&}AMf-n}cnztZX0?De#x2?}S`#18igDwS34MylKFKfW9HU)|$XdPMm}eBjgWlbua`l+h z)wVDem6a;0$edmFY~%Hib6Pc32g*o0(@`=5M0`z7_SeW1GyItMC>Q4A<@xpsq(vWq z_km11t)aVyiKI9;*-|s{J49y}6PJT+XPm^H{rpOq9GKAf{Qnz3EEsQ3D2M13AN7eeXn z4zH?7wjZ(ip`Lw+3Y&m28gkd}<`=4q&QDtq9TI3hzD(8f%mU-6jlyy6+viZ@LgaUP z8ge84W7emi-7l03PNci_x0|)Y-n~VB+-cD4D3jto!V0?;iMYvOaPLF-R^Mk-;Xrk1 z)xP__!S`Z6=4;R0*EUL_G=fs~l<&TYTzH%XFu!GEeR6#uZO$7wXPsO>D#aLGBaiXA z;_>hbn6y9dX3}WFeRP`pe3DyGB7bKow=gXflk|XB;jZcq7wB?L>stIs4$ECA8Rgjd z_9Ex$cYPt*bsfASTLT@!CbN}LP!$A;Y+jzwi=L}KJUJHH`V>$rv(~k@gSXn$Em1?z z2Rx7Az4OrBV4hWY&xM?LCEY#Sw@x$4#AGHO`x-Qa6a_?TN%C|&Yf?llmKZu-x3RvD zK$C?n90ASjyhS$(8Po?~&~m4AYtKjOUw0BctTgp5_w*X7{G-y)O(GI$RW@YDHO zu3V8xmV!RPgdiNoj*sR$GTn~9q4grV_Nd|5yJh4SL_RyTOvc?Ifo&G^lK=Tx)&0YJG z48G*MZqGZ1yS7D)18s|U&KZ|d`(u!;oBV zpQ8T3wcyp6{vq20 z(9dNyk=X8PJXQ9b?rVe1>K=<$O=u?Ym7wiuf|0jS&m8Kg_je zG66+!^{Ot5_6-OAy_pDp2d^iQ3Kyq0X^#!fD;<08M@M_?{v{G<*O5cW)&J@`to-1U zx|0PRbBzrR!|3K<-^#bXd;!;`<*J)mNHK=DQL@R^p8U`RL~*^{HqG^0r7_)ygm%92 zvUBg`Mi2!`(>MtITaP^|$s|PLG{r^C!!935P4Fj_LT=3^Oi`iFu*2(<)-UcS{+QV3(8CIVJN(Eh)W! z`GxZj&xo6@0w zXWbG*n)V)d)b(u~4b;ZD?POaJe!)_)v(A4ZCAyrVqdHqX775YixV$zv46%c6&n07o zeA$xl{KhqJLylhqh73@|bH=bo@B|=WPWX7J#ltQipX}we)|eEX`*GrH-x`Sh|RA2rtsgb${n{F ztkIT(DrJEh_>Ei>BNILLSo`j7(l)7Xbm@5QD|=>KF4!JlY-26Pa{W?SXJNpi>IR!l zJ#3BnYd-A&Atf5lDH=ywbYcgOZ1W{mDUDszxbn41w{>uhs45<(QMp{oSr@?PB2?Um zP#fJz?V!F{SY+IHd6S{7hCcFoF59gKI?th`Ro`(>wp-w~DJiV8U(v0PjBHn3zpjkE z6;4*8`s!!rjYtLG9%kl!?4MJ=j26&?fon;+C#b))569aI)tbTBE zv%TYOa-ouW8}v(-PiB%i?{9nrkcF-Dc%>WBsXuL&kOWHXaama3xo+pCE3sdv|6o3^ zzP_-&m)~g}^G%=`Jq%Hch8jn(E7`9e$V@q5R^7oaf0E8}9FT12CLClo$-}Ld2AqY- zB6QTEAF%c8%|GKZlKh*I#~g2uE>~E=*>{nUv|=^CZJS)l3aa^+Ee3A@-5kBP&IuwSuf**(()(F z>n1hL`zQfgnA&aq0xBMatYe??IbXU5lX$szmo~>EHCKy?zoa<3kBu~?qg>?y0M%y6 zWb>fEOb)p*g&WsT?=C(l{C4t+V{p)B#t>B{v=Vd6WoHOK6aCHna3IAy$i|^l z+`gjyploP;$m^IUx-Qb{k>8n7Hxn+>q;e|s+a!C106eVSCwPIpdwt*!2{0x_j=D56 zmwk^k7aPkNid-+DqBikgk$0 zfZHGt9!m8sJ158!w>%^i46Qs8NTWD4^YiRSHsA5ydCR= zqMjC+!DBK@U4jWp;cFN3V79jG6EQjr$5G0CP~{{Kpjolo!B#&R~qXbY7*34sA13GILA>lL$kg#INdHH%k~(yBg~QOr?IWV)_(SRA_@m+ z9z;)Sba3+Hp&V=h6++k}`yA)P8S3XeYfe*%p-46kO`uSTy;5ynD>2(8e1s1Zgo0RT z*xIbR`M8qD_v7O--CKkI1s!9iea@DmmbvG?d6JCW z<;nCVDeR$JXWH&EzpKnLE+h1N`m?&g{8PmvQ;T-vM7=N+9yD7O@%qhXBTUopIHSTlk z6v+9@-7d>eN_U2gW=nUzj2~HYcnRz zloRXo(1Cl2*eI*2A6at{G(E%*gclwmI$hOjQa0Gk*IZy0?)}mF$2iPq?gnPg*{VS% zoA{zCV>i|&_Y#bXI(w{bvE9<(5@h}b%>MtU;~Jf36%jw;TLLPsM<02kx2wFx7Iro0E#q9>1JJ%haHl$On$JW$8V7e ze|5+V-pJ|q<=(#`BMWeL;QfFrJt~+u!{H&z@yig0om-o?gXhTPCf!l zQcoS3hwJ5^nVo3D8=qq+V7Q`py@$M<9JrAh@>C`R^!AB+xHLS~K?amu$X&X801{97 ztt{!N=6Z%`?XAtPj5Z;&ktkMXVLsx>7YYp(H~xXXJ~LwjhmvH%5zsxRL-KUMlH#k# zm&gu(C9$|}f&hu_v>+(LqEpOqTf5d7Xgq7=^(PgY59jx!d6Ro(zjjNkx3AHX^i3W!gZwS;XqQwtBa7w~EUVLC442JD09W zOQHpowQ?(uPk8E0nVqOgQpVvW7O$}iBYvJ z<)X7%EZxrC;l#PDsfE88PJ-!5MJ{9ceoILsWATCKblO=Mp>Ap2#W~p%fy3b_MbDZ) zzIll=-?e|^r|_~S%E`CZaUQ{}5qjIRg(dls=Cj>ryiVWG=?NMu6x!>B4{H8v1jTX$#p$>w`0U9Ii(;|)) z>+3=8M=xOAx_idQ^xSrV4i`e{iOzGMpzR!<9?}o%VV{Vk?aZSe{_`LS8nL%Gp?BTS zM}B(qdxwhTerP}-`>?_#!;k1S=_wA;f@fMHe^>kK|gBKpDrc$L{Um*3E>sQZXKalgnSlCHF9u&JV)s!$R%l=areqXE!W_BqUZH z&b4(+4pCCrl#k--dXIY|DT(Vbv zcfZ38hB(c~g0D^0;=#OQocB3Y$)EepGi=`^LGkliC@S#p_%o#{4u%KIU0iZB_aq z)gR;3v_6ddo62b4Jx#xR1X^~YnfH7@GGM)K=ZRZ9f`mZd_Y7xcnH>EN1%(?hz^sLT z)~-uU2CCnrCEQPs;}{WQ*@Pm4cZU^at+!w6le$IRKWD&adg2_;6gNN%9TqHiL*W}Z zdv(`0(5E%9A&@AeGy+s@={&mcbl@in__+NMYK6AveP?kefy+Jxm3$e!Q-KeD7TrZ;2p1HsA5n$KAy6udqlocSpX@1lz!KsEMO@$aM|>VQsi{*tW*hdy4Cm9AO9`7EKm3Fqq@5%0 z8tJedTcDmkiSwL_=Lg&q7wzVx5n_{} zjj*p9`u%cPV|}9RzH|@)x0pz1SlVqSxEJk7_YB~S4OCB6^Yx`o=XkaECgXRb z%qGaJ-La+$6Cpb@hEE$X5;+p)fftSr=3qS6vA*&l5q>)wXWMUlgh>tJuj{#+-FD&d zQikhK2qm)^G}Bdq>!#*+c%8`~!3jcvlac*7hY6B`3=(7wL{O=btiq-2d>ql@^uyQk zFdw@w`p4*@&(8XGkL4rAovRbv(giqL-iLiFZys3Wwi#|Bt{&&6Z@wD=UUt|_LcWwy zoNn@CsVp-V1Rze@_ssE;Q64HC=D<&=wlHzy&)Z4p%&Waph%J^#&$HPpe+e@JOeeGS zz*-nxZ=ZAw`We~|g(6U9?z+(9X`_KO<`GtR)hNFn6rqnm&ZpMm`3-C3wcq$D2=&5m zoY31M4nzv=w5C0x?;1I8G4JU|o4_>qdXu?(ND^3S*?RV{v-5$IX?qd)V3ebMNbl(w z-2M5d_rN-dX})iYbkhHVBp)c#K~d-gC2I3Ngp+gf9EN)nl+DOW+xqg=;j1^CGZ14mKioz1MB4a#p10S~bU)6h&n_D>;8&&3aF3;l& zT*>WDe}uqmtOLyEBk4co-k;ys0JI%hu9|(E`K;zkj44m^(CJ-Ap8`|)rb3`}9}}qf z*j=4O7su9Tl>L=9>$0a#kXBC)u97POiF}Goshm|t10Kv8?%uRN zYw@u{5|hQqL*FF6i`N!9{MJtnY3xRI>)52?vVdOy>GK{bp!K?Nn?E0+KqHuUN=;S516ezA!<%h9nIi-w(RW_(_SRc?y6hX*^mqH* zpd9eCRG(c9NoPY@FKP^V9$M?~-nS;7Qt5cbm^5!DUH9F<+!c;4(D6Q&m|~=xTeOQG zlO;f6z6Ufd%F(>By|kNB8-)z#G#b1&z34@sCh>Sc(kk2Y5*B${>om8!?{53{;q9DD zN^tZ(L!O^`yMa(hP^9Y6zZXkuluJ8a9f&f);6S>GB<~&qrOl$+1mRqND7ioR0f~1o zP2JxcHl38kh{_|x9XnZi@5AbEU$5!978As2FX4W9*@2FNB;U|JEx zSitryZ?_NJ0{(d|tYDUJb-<3RU96(cfJf2DH;`GI+{|q+hUVj*31J{p;0qOF+mye~L9Q`#NfXZwsDa)i!QFV_5OiM53Y>O((|ibJnum3ByjpBOS; zmIZc({8l2ibToEwbFD@dgi%LJihOfDJS04T);m)epMvvwbC1}( zeWTUB{N=uz>@w*MhZGZ9DzN$Tk{p(q_j^aYm)?$`1(lq%`)K970Hq`2w$9l_N9qhR z3Yz>6@6cLIojDKEpv+!4!-r)5piFN*(y0Bd%NV|`>YKEV$e{+s8gPfK`Q;tqa2Vm8 zY<+1-UqWk(K3^3p%w;1fx_}UELxqYQx$3{~JB##P&j+5D$8YjR4Qi)kZszj&E-k%o z;^}7KfvY8e$XaT9|1sZ#Tw@v;45h*6)NQ zBn`&eJmbsbWA+-)8SQt#lntP*`Xma}j)LlMuuWd^iu* zPbxMvx%vt-9Sqw(nVB%+R0dE4#|YeA0?TzX&&@*-ouS7>$;vha-nftYk&h6x#gzkl z|4^Uu$$Dha3HF#|SSN#btgBEOZ`U?~qc7;Tk^%h$i?Up%zjuI7K|TNxwCUV;3-zhd z0wpHAFOoaV3c0m@bH^22aoXs?f=cF?uDy8=AO<+1Y=B1u(*r9>@cDhOoNpUKmpa1F zLPj?)OZ%JN%=YAEYYx-171lY}6008uI+yJwKYYb`7h`$o<=@9@u)~3@rs1BJoWK!G$IiDs#_3sSS-?`uM z_4L&iM|9uhg&^iYRe~~^GS*|mQb*aj8F^?)T&}=qzP(1j!v;SDn(rh_ut))l!&mki zupMatJ89l>fZ18S%+wXd`v=+tb~8)wJ`dF&#_D3wYT%jIM0v-HE?>DP05_oB_cnZW5MgP_)IoL&UWx+2=V34p0?n#gISN*mwo z{j&A;4gG*S?mMUnz17KG3q5Az+)LuK+l56vbJLhCUrW;X9TeZats;OSc^1>DIPh`x zBiupHCMhX)*Tb3)T@cU+o1i$y2#A9Bdjn>0HhcRyIQGW@0C?Y8Q4h3#{#GOvvY*P2l zeSsWsBY`sT8YEjlVmNzdHfwg=%x2pW)+u9ceri0a(A?rgYimx@{nQEawTEknQ&WE- zDA52Bk~=>nj!)OXpa_bX`$Q7K@WkM9$aj`CP^0ezqa_9VQv-1gtQ0@=d$XUYLzQd0 zr?q`YlH#bN8Y0`*>-VEjtn)Er8^o`<-c>zk0)g6|py-ODqEc};!eGX+{p>D!o%pDC|wNo7W zLhfD(M7s@mFK6-zQlDlA@J0b#9X+1RiA#GJJSH@g?*ra2IXUMqpg@vA$ZI-dmLt{DY`pYlDLDkjm-&`ob@M=`YvlRM`4ve}0W-x*});cT7>boo*ZfR76}YW9bUknrw? zI;Ds`l-2F&)OBtx5Kr^j?nlT=?r>AJPZWB#Qm5Rz7z9Kq=+aLO^toOYS07*NXKi8j^HD<`Nd#(0;p%gmT7r5K4*=duso=hL@o4$tY@@u5W zO|G2XF#c%oe~_7UD$uQ~t=mW39uf27Nt2m=FssYr`p%?Cx<;3gmrHpqUz}{#j<)lQ zf^@m$j5KfqKGON0=bqqd|K6_(a z8=X+-AughOowIgV6Tuc7aDqNpyG$|6*+iRow*O7sAP?zoZ3wjD@0I?VUB(CeV9D&n z_doKC;J(busgl>4Fb=_4yx&?VSDbPMyJ!4ZXn=jX5Dve|{S4`H=44>u7TOL4Y5pi{ znt8p+w_zepj^I1)K{Oy_LM+umY%KcA+c#Xg`7Ye(87M)Z3YqTbpJPbf2jIW!YbYZ} zojz1MZVs3*@N8Z;2vz(xK1=7kF5)!h6BP9v7%fEiCA`0|*&d! z)iI<0#!mr(;Az>05g!J%5}e=KV?4(9{E)7eGe)Z!g(097%@UNtId&foEx;}Zh%p9i~{`$0-?{qjB55KbB+$KhoyGHW$mlV;z4J6S0^(5C6R-95 z9n#;HHTxx&e)#tqjGgJC?e`J(Wt{KG!VzE}NCyw2YqXV*gnvF89ok`2BKmpIB6DcZ z1OJOa3XEWl7U%2r1I#1(W~~!$J0D1h9=xS^;tT9z*VX@tB*1FQoCKzyfZgqTV$M?h@Ijb>%pY82t9cs9O_-Z6Can5$x)R!$-wo_cX9l9N{d#VEs%vFH)@ehgldZVD z{$G&meJgNiASfU<1>RLlf8$*ch$-?O=900%_tE(8cU_;{zoO<69o2Pl{*Qs@+&@t6 zYYU0j>Rxuc=wWYvoeMFeUpZn0#HL05(|X@Bfe_m8{__kINN12cmO<4(uz zQ8TY(VmG$23xD&Y(a=Ci=k2F$W$GrAc|h=e@m$m1qK+B#yjs!aZcKnl==c7yCkMMV z+9ufq?AedJ3p)(F<~>Do3VQtQ?CQ_UkAG?3;}+|mjN(vS{t=bbAH?mUvg=V=IEtrQ zzb51aLjvX@I@K;Koa3FUlD~5fx!$F8#=itG6I_KTE~9%Cph)#zk<{&X@j`ZkU$X8V zT>)Uyp)}bHoi{KN<9kQbpJo*tYK{rc|H5QITzcbhw~EpvLZ5xS)Kyv8zdwW|5zF@; z7ekYT>l*LINGE_uM+et3^QL1-{EkRNus|%yT&#~I3S{eIPHn9ZoR}wLhQ^}j3giDG+b5c z^ypG;w%5%zTK0FrpH7TB-SX>WZ1pW zS=y0sltwTO1X5z-PX5_zEwlU9)M=B1tCHZM_%>At-JI=lXn2M`oBekE%5uN)5)3&C z@lv(Dzg%nKP8;_c04(9>ryHmV7+l5v92||xQH5f+ z=Hg*A7aTfFhm0W$ncVCEQv8sac(H-K;m}!UMX+ym&E^yo_Q#LN_iek19Ramu|1$AE z@Dj$d5`pqG_Wj6b+E+o92A@p!eAt^HHV3#Tg6B-uVIM&eXBsa1zLQV6T0=R|HOmgN z%+G925_U@>b*>&dXbaInTJMVX-*^d|eOCv)vg>RtOK@u5h@eUKzGwCv2raPP58&gZ zAsVIK7mTZYp$v(Bc8@jA!4drh+GiM@;Q}W2zGpZ|4l=ebjP}SM-rsl$Q%6HALvP({ z7NcB))?wqD(}_&rrq?qT0B|NfZ75kHjLseP&^(icA3NM``&1iPjQw$LrQqXSl7;|1 z_ZthUMFEoJcknk}LYo5Y(cHqhg{oeM-aF?-@xJpk>PW=GWhrA5DOw_%im|gWi)&pqumox|}!%9f99?34lN?-%bUM z#7%|12Tj0yn~lp;PO-4+Y>ZVpqDOwW)3Ne+BeP%cYK~M~akamc1nYcsT`@Z{i^I9M z+IA2pxthjy*+c6$UIM+kQ|zJ{-=S`fiLvQSJSwQydG8pkRmGj~=7+9OVf{+wfD7UA zcyEt=kXo~6dvL)=-MMKb0PQfD3l___AY@@tY)-z#&=0(X(Be$-?!E7{agS&Nniglh z37M4>ioKBsI2fR!cVlj-{Y}VU{RcusRcFI)1Y97cj z@>%*LFM+OR_`5Y|V%T-}6YP^Y>_Ad$%O0sDAZy!W%DoHi&qLE4(9C&&F90y^_8Tu@cT|+;Hdg3!{Xe=?~{((KQwSTl%gg_ zguycKq&E=830N~qq5U^rLZeM%klsS+?gAhr9!w6Y?h({Mn?ROKuP?vZ*7bYXx<3Vt zv!E;xK+sDG88(E<`M7VnMm?v6H1z(@Yt;pd>^2aAw)%~iK=}I9`{MWQDNIK#Au1Sn z$|eR2UDrtxMCUgQB6kg%_Qa&`W!b^{{Iu=k3ya4DkI?&UcP{{&x!HBDdiJ#&->ylh z15@sAyoCEmnD`NhkJR;gPt-3h+i2+HN00k<`La(IyK$|(o8xyS;N{&ezvtJ;k`!w;kyotN9{mlM#wKyhDc$fo zAMIzz=jmP$Ozq1%{y?iVjo;x#h?ew$@)!GPlCRt529CQYwo||4FN8`6y=JkGp4eOt z2^_$tynzo)nU2Or_Fk7bW1PsnRs(UZ=wRj{DLL+DdHI)X0z(aM7L+Lsn&cgVvT!##D1zr5pvy7>o_8l}{sc{|wF z<|izw4Pbb4e<87sa;u>PZJ$eo?9vA%oH`t0$iq zfhx>hfd57M*%ip%md0YtFd#=@CFY=6knkEIvNo%2$jS;E>T3qH8552&{53Jt8^^;} zI}cTW^L}IlKXeU)3-(f?N`GH4uA!2mt<^S$RsHr!}6QkE&BtCB(1cQAcuH~PSnb~1|VeU}g{ z>XeK#cJ`AAT-i$f07OR!-rwfvI)UQr7cR!`9P`sT5}BLbUsI6);yAw4=d4OFvZS^5 zjOp`4Xz+F|`n))#I)~^DHFx#iN(N2(g_A(iKoznXKKc@*+tM< zd1Hq?BAnL5dLM=ufbxv@l0U&k@PfPhF}YdIC+qMeE_pxf`V=Rk*YDVUr+b9WQaj_y z!x4n6?(GL|vrFx9a+4KGK+Gav)w?@r4<`DFW%cY#Y6=v0~!up-Ahs27hql*`tr1I*p_E4oFWQDCzT0vqlt zufdjbI{!wE2@4Vj45N_G|4}0dH<+PS;OpaGRM#SLIM|bbl-Kk@Z<2op$ zc16G(xNIi*cxKs+>Mrrw0~!ld5O5T9&j@a^VbDDRWayADJskNVx4rk>W#*X;53LE8 zKZIh?qkiLEV4Pt@0_Hj}rfF>z`EQ)3xM9dR8$b4B+P>1pP26QjiTW&li79P9^PcbQ zv-GScET4O}SxYw$KNbi1!BXwstddJhbDWQUOO)kkeW>}ai8Q#>_no6_|IS#u-ISK? zlGG=1?ShM8AYlUsbro$g&oCg5b1eg%hn{-Q-otaYNjdouC&pkSdy<#Ph zy|!ok0gto`uAk?H7%I0Ip1U(oD7u|FaiO$R&);nyHDK&vd!?Li>ijr&`k9(a(tXd? zgNB>RL!N@2vY|wqy?@5mw?Ym7_F>Fs8^-`>Y59(X44x|=SiaVU!SeZpRZu!}Jif%! z2X$wNs!o_?XX4J$ny7xK0n|jP!~aY#1dBji@Z;PjzIv}dAtF04J@*5bzA`K2+@KHH zo~lO$?0IPXa{7obbNBQM-O&1E*D)z!x`fwV2J;FK2&12M`l(1>aeFOfVa#p)KnA!! z@)8~ba;`P=IZ<8$Q|lAaDH&@tCZf~>)_Xb*q5I+(u1|@dk492h=AMTu2ETv(okmy~ zr#bqU+g%9Z1C8cBlx7wO$@KL0XHJ0Z>}wVd-5p@ViR14!_e-MPixis=&BIw`Zyk9Y z#Yqn1oU$~Ky%}Ao);jV1z6ZBwQZ2c+eAtaef1|_mSTk@aOl$u2BOv%VC}kK|Xz1Ew zn_J1zZL_)a4Sx?ls>Eq9u2-%YSq{EMsZ^!X0vW{J! zE)eCZ?o64mCq>x0b{5!g@hXAnw;NKKSj!dQHt8C6*A83H4(Z z9~v{Dp1-%x*tQls)sz@^JF1a0B7;8|T(FX=k0Svwm53_%qiX;i2dY0B4Cj-MLtM74 z=Yui-z`LMRDe)!>&~L0V!qXNbirn?_H73kD;h|H{9S%Dms>!yX_kKEryr;LKPY~>p z?J*<40;i+OLzX{7?y$|Sr^|KjkVq6*bC|}zkLIy7FdoJ95qTk-W z9VokFNcUHZ+tpIzDAsBDYr}%Yte64K;av!z<|HrXnQ0fA0EXr(JmbbGP)_Vtpo27- z;~_d{PRG(X1cuJ zU~!zgaT@h@2u>`x{Oda?I?}u>V)PEua5CeVA8zwf2#xpDk`@C>fIA1hsVRL^zF|Ei zI5fKmiy-AV890zH*{lJlWYPKiMjTB)+JbR^xkhkf;yro&(9_QiFo)SOZlBQ`N9MAt zcBV!$9o7K>luVCUcx{tw$tQ-amp0fRCE;(YH}Uf+l|Swb%+pVQb~|v!rUTxl4{QXu z4G=xW;Ai}5eAJkaNMgg2AX#WGe(Z48-znRkJe8s+7W}qX3EI|t$|vD5q|xIKEKIY% zp)exoPxjQnHE5%q!Y>yE`TKn?HqE(ohMp(xdIe%W}&YSbet+3pVsc5+GZ})&{x_xHhb3Ba5p5_uXEax^(a}N@Wn(7 z3vU3|=GtwpJ*o6UXz8{iZgPa;LNEH$zbR2jzj<#@jVs*HKSTz4^tv~ z&SQPb1&@e=qZ4KOug(o>yrFI4YPZ%sqvuTJ(NL!b?!$B)H63VSJBO$BipOgdwaFI_ zB{A6zYtEgF8-i(f8Z-0&Wqd&o9h2xQKp9n3;r=-Z+2uXI6-}MTQ1%mJT_g>)7`isZ zi#r6yAu3^$;-o)(^u7>trHQR)Z!T=_1atk8wdp?L)wbx2?0L?6`;0Rg7K~c@5)Tz5PN#F&yJ2L?KTLa

*pM{Tc())F)%gj&FXP zGZ-7;5Id~ZzCBHT7DkL0ZQaGEb#j%E7(^IvjaUp}@0@e0{l>enqYgcjb9$pCH*~Jk zo<8Woq-@v4v(qknC6QLKK$h7feTGyAedltB5^-$i*tKtAG(Z7schRB?6fW>yDag(7 z(P%h;`gfK2flR!PCJZ&C*xlg%1cX9#xDJH*Pf-e$Cc(R9hXh(-;pJ>RO~1iF)ly}rsBm!SHw#W;e4=l zfGBo8C0nRW2nZ(0!)j@shCEd-I}JVvh5LQW(8bliFG;CopbojQ&6;i0eK8sO9aYY% zbBtxFcTC8d+?hp*AC{9NDwW}}{eyTZF}a?D0@68;H->vuFmT95nE7FK(z%- z4>wm&`!KiI#r*Y~IC$c$4tM{98FowX81R<2YjgBC_OebA1Pmmb{Hvk2WIaW2GF&=z zrTx`)PR5G6u{^$(@{BkjyGyeA27HVM6KV$v2{=d|R9c(jgB$mn6;Y`?x8h)JMgM|h zld0bTA2eoM;TpJSlB@t_Gu+XEeP7DJI$u3&h3IUx*Lap|0}Ja6oGx4&pVxY_x`Gph zn6N*A4YEW#Reud5=@{H!a_3thhP-pTm(Vk3gYjSqOB&=Q6Pyztm&INT8?Xg~S?(tL z_Ta4Pu-g0M8urECevf9&ovi{IUzm`EyH4la?eQT*W0m=qUTXdu9LX#h%yE>{Plq@O zF|C}X<<5`q_yaEiz_u%V=Eov*?l72IW+?@F2;$0v!ndkVJBa0s?Z3^ZjymPOge8XH zSm+kVscCwXk^_wdu3Z?mIhbt6=eRB(k-c*spTF@E`gkBTWHz;8?}X^R6`fW32=}|Ar|YAYJ9zz+?BnsASrhT`^}S1K1zHTNp8tN1m?9tpu-RhZ`=6ZmSt zGzLi2<&*aMWaX_vzGr?SI=)3=_W`UCC- zW?^XRr$tQF&lu0$JQVxLQ4xz#(*PuNzrMVaC?F{Z%IdVcm7ThJ$-NCeLB@9;F(UElUx{l3L+={Memi90CS6&VBN?{Gij zOC5pZId#9#3=i)JG`1k}q7QoyH!6iSeMB_Je8@L*uSS3crKdo^UEAgOCWjandoY>> zFiJdb`1|sX1AcLhC7%g=tad9iqk$WAOcXIEUdSepAn}5~wb%}A09$^~xpU>@IYQKq z5m~TuCZ(e_&nE24b*)hEUUT=}&ta4@KPq-J0GE8Yo39v|&WMQaUg-D!kwFLW`gVg7 zN$%hQm}{wLXY0UxUIVoS7G^OFQWD55^p1cBQ@I z=Z7RAq&mu8`7Iy)#!JFQ-D`j;X-0~{0$e4q>SmKBIZp^X+Apq2V6UF(57S!A+u^@j z$OEl1XlkL$q?gA_z+bnzsu9RiUl3&Cym`oYd2g!@_bKabiOk7GeW&f=9gk9@n$+k! zUn-uE4hJf61c-U&=+IGTa$Qc%wZON$c(a~-X^HV0??QWW1R~oG>?tsoLO95$_{u@c zXgw`49UmBG&~d}b@SS60y_HO$kMC(nO;=%?WoaYnjH32qt_zm)1RF#h3p(dEc)VXM z|9c)i#oEb;4T0$32SfLYtkP(p0%=V9xo9@dN2S1eP-J$+pvKL?SNs(Sz%mtYjQg7S6EF_@R|UM4*VcYjrfU@6vVQv zz1t$sr5HQ6ugi%Stqt!!t8X+|-jwnqgq*YArxGJZthKVynf#4+0Vn-7Ar=_&)=U3Z z$QTQ+FTiu!xI7vee3-OIrth7ID-5#~GQrm_iroZ3_bGA;J$rclbeSLFSR9TaiBT(Z@dfR6eM4nWA~YRT4ztbhV1dN+8A8g+J<9Q2%Qn;&MwsKZ{9J-E2IeN9CBRmAR zJ(!q~uGl{OZ|HZ)rD26He8H~d%4WjLvYsGkRf5c2-7%^pvQdmV^JDH#WbiB6@Z8** zQ}e7>qn*{^tis)0wLL2Rfm*Uwuja_ahIw_Os`n!@xlMh+(ek3Se^fNARJF z01Y?Iu!$COqT%dQ(L*hx0ZDD?#ftGY1C*U5k1Gay{uEO~aRXcV6n6$zhQ|UC+dUJN z4i+2+7di@7g2hn`qLV$>sYfdP7{DnjJrY7b2H&L;c*i31-=)L5gp8A z;^3SAWfQ$JD9Sxm*0Kn9h$w6#BWDg+C|T`egr^!;6c+W2WYW$Xc>$@c zN2f%rRsrFEaIKx4`v_`Q?6n;aVs^u%w?Wg@!Ry%1`N|1D@Gj(T=5zFy1PB|fR7E@d zq_%hRk@TM87_mOhfk@%Q{9gRvg+gdYKl*jrsUpe>y*+($O+7I-j9hJJ-NUn*V=Sp6 zm2cu2AE`*l4l@nV08oz=j9dHZ8K;4oMTi>|57?3V>9J7*NyqNq#0RX?sRPV7;w@6Xs8`6vg=AHMbE zmI!#c);;28NEfMdWtc1n=kCcbispD`_-L%oT@#g^k}YmB$kWTEs{B>);5p~7_ika+^Ks-^-k0eP7G3r8{{IZO2cL`w|=ch!4S|5%x&m>Lg zhQ{dOU~Ub=&8@7~#7ks$ROot=dtqyzhvGxS7{krgMbxtd0LS+>jS^S2t zGl+7pQ^>XGUAw`Ud9EZvfq7u&em4B(pb=iz7UyDTu|)l#a}#JZ`o0+El`n+cK4);Z zZO5675(g1r z3j{<*6a9eLXC80g=Kcp#pGNKa=5zjx1R9ls)SCWM_imDw>o^N^L<-uvDt4PJM&>o|*Z@LjQV|!iBMY>59(pVVaa@k~Ae3!GGxGT5)?U z>5yu`l%JSKx5(fjF0G~P_3HL1?cHmiz=Z=-3ze%jR%cisVXUG!bIH9i-H8&FuH8@0lPI6L6TjUvFBx&Au(0Yb zKTf2jaDMD)wz)1g@jI5_lB=6r7gKW`qFZ7U0`?QDe&b!>(?4#%8&TS!I@|9!4v)fD zJ~l3}P!OEXS6~J=+jzG0V5;StL^v=tmOy$EiYT9>&)>%rS2wK*8DHH0E8Vtn2*CDR z`xAwtUT!?F^%1!$HmWZ zkvlG&P^RNF+Kq!@|x+t-!Wbj;7*^ZecrTm^K5HeO2YHLueO#+TGKzdrYC7~}b7 zpRnvOYDzv>j#?%dO7CO=N*!#d>z_|qob+Dxx7wN%SjUM10V3M?E}z@5)o|AYP^@bJ zsJ%FRixBB)1>?3RqmYjcem8!<5ZL8sLhb-0)1G}a&d|J!Nxae;-C&m_pUg5$*1hBO z?gK2#l^ZkwX#Q|T7u`;jeNgvlmbQD`$*w|4xggwfH*3R323J0jyC)n+R_}RASg|$_&8D zA*$JGTidgS_b*{H>HoW8@568Qjk^w8cIhTbnoeI2=FMTk-wk)*ZT3Ohn^Zk-kA)sBa*Wiw z&9+&6`fy+mtj=g9RTVe|2~M=V`62Kdk;DzppTQj@Mwz< zh~%Ap5lrVQbNa2fK<-jVIrIVg_}bc0?%&|oB>9OrR<`d_xb%A%IMQ-mEyHd1-q#?m zU3y56!RH8=9Gy8ykK#$k4gS7GY(47r7GHsFS=_ty?oA*b=zGz~I=H@@`suM>H=Xmg zin^|eg=9N0y8#oM7TO4@5jFuR`50HfY(9tcPqNH`4RkW2OyU#y0O(-8wJ)36+mpl$ zCQog+mU?s_eW&>MONj;Q1U^urb(3fHTd34#vH0o{hhj!s7JKFe4>9&!Z%XwPl6ia% zHa*|8Q^8M?>s{01I&(${HK4cqfCjaWtOJauVDA1ERh+`}<*U$zcuU`mKL?Vw+YUDl zVyN0+V2G&pnKN2d1*}FCy|) zxB3E5)27kGd%;}b$_5O!+9a^$ovmh&2)O=TdvRQbE4ZLp+N%lU#GP*%i%WdPR|+5S z`fw@q?!gw3iP%$tS=cRaZB_eA^n9ipO2GJMILw4w-Z5Zib@4`pW9&N`l&bqp0N)&A zGkT(4+8z&PWzE_ZAJX->zknve&*jYUSaaTqx0Ta`=?BD`6j(eUBCnB0Zu zLi0T2JHar{dU-ac|h|!vb6Qdww=Ce-XyszP-rpJCZ%D@{)_l#ub78cuZQ!Qq zexDHWUF~ZJu11>l=KCz9*j>R~-~>)TEJ zz{G7)(CXFRTKQouIMD!DK&QXeq5>SUsaN#TPf?^^vO5%znVtDf+eCUX0IJqVX?lQ6 z6hBd?!z{uceD2-aX6Vzo>|kuo#yF$~KPP{1#f=yMRtwCzgEXaggQ9oek{D=DIKKDY z4)jt5De{3DSxO1srp8mesCJ4edUDDX?Z2* z-A1>anH^HF3;S?X=K+GsQBm(@F7~;f#iu%hUjFeoIwA=dJNIe6$xgzLc6{H_xp`lj z>^Wi#fH~~Hl2g&2+6Ji@&6@@r=z$$D;O{Vgs(<*g!^GqBMBm#_ZI08UEwJ&8PfEKZ zV>0gRvInu2aDE|&oj4%Ug+q&%TO_V)uL>g<^5S^vt1?XCc9h4^$=2@LwpW zwN($p8p?9?uagiEQ+l+_zQ}xtGWBancDY=u15bg;2a|R{`#yDEbl^KC;=?xdyl(*9 zf~@WBQTM!afF1O$T|Cf=P19HB?33E*lVW+hSa$f@AR5wpJ~>E}@kDtB!&ILfkP&kt zU?s)+tpuVmN$RaZJ79(D<4g1iKQLoQ?I7_YajqV>zW4{IeBG?S;)CdlNiwiUAf)r} z2Z>S^hIL!~fRM)qbBL653fV{x5=I^u41B|hdec5PthFxOtU=wKyI&3E=ab+3OYFGF z#B@Oz?MgD$dtC_(xCxw!+}JW>eD$|BqZUmjRgW;`jgZN|sfJxrn8g1(HWj+=h&3+{ z>~Gw4*tXU;6VUH@YBiuO$71;j-_QhutoO&m3>wO3SU>j*A>iI#ugwGv1vKfl!sOZ) z8oqZ4fDJ2K+>eid9g1&*hzWVk7QgWlYOV9m;?@Qx@tn8VrUf&E!4Qqa374F16i8lq zmz~z|9bW#kTn}y9M+oB}en8Z!VLp zrbXCs5l;bWM1+8|YZHFBTfGmX*k|KFxh|8b{3`HyfLE@g>t2C2TNme+epEiNAXopW zIqe)KK(Q525zht2qGY^h--45D)ZE%ue)HxRn^z)>23Nl4LjiD6EAEZ1kTL_#M}n<5Ay}`@oyjDAzL17W1aI;2r7WYhC_66=Y;qv zYzb)-1l3==zYUD3L1RyfV;0T6)W4{Z$!t- zL7{$36qw|Ed)1(#e}}fM#0%L~&=Y}H8N2k$Q*r;h495?0mB^H-%c?X&aU^)4AVvRnDNw70(vs0dy4|PJfGv(&+@nHpj;AiRwUIJxY3L$5nH*LZ7 zdUw(XpHd%F3l`L=w|1PS{4S97ZxQ##hIVsSwHb!Yn_>3bc<%e7^wyf>+2dm|XA_}# zgDrXTgS!PF{`Yije0TU0&cie(m6adgoMyWhUYI(2d`4E~%m3aIHd1@Dkcz`RRIXD2 z>U=0U9DPu%J?G1u`*Pf&Y`bdC$;s~Xj!%*+-_Mlpx8qxA9)3Wg5;jwv$N2#0ER$}2 zAV;*QSwQP+TU7^hDQi2>Syt5miN@8JpdOJO^NV%`!yx?T4hiJTNT#vRXoqsjUrR)> zeVn#--!Ow`)--rgMXtXOxoVHY|;`YE=eH~foU-y^^AF7$RFZ(p7shhy|g9*_p+ zx`5_JJD>8-oU-(TC1>1MnmS7apZ4WL;!f?eQ)PU`!M#6X@VE7_iysQh?B>^`Pqrp3 zX2v<|H{ONkSD8(DDSVkXJ`voCJ8d(x&*V!Yo#^uAUIQiT);KPxl8X%{F{xr0c`1|k z(pwUbNRv{R^GU?7caKZY65f+`=(y*vJ;osTqB#JR<1GNa+lD-fO7PBJLg1~4b{hj! zff@=-%MREY-L+)5)$~09jt!~xbiIQ~a9e%DtD1bkb-pq8Tsce^jDvCf>sb@~W3msH z;w68M?5=0e*Y6}>X$vOc**SePgunqqzx zl$Z_-zU^hTeYnJ}Qhls(WD!XIiW=Y9ZORZIB{%*WL(G&)$7@$vuui^gE6sC)LkkouFw0DpP8q;^3#@4500Th@nWz0IcGV( z=3Vayt8#{k>v2%>m7YT9&p17r2Y5SviFS<^Bg$fKPA)vDX)qWuDUOX?8)!xfBv;lNz^mr>4&&tc599N`liHz$dxcN^mhVg5G;QLCLd(9 zQwj5zcUN9v<=%;&2N4oJT}CiVG#nfGy7Wq@^srlm&9pbTp^u8~5tH?C|cA zc9s87>W$rMKA*g)eZhKV);~Z?^Ej{K_;$QqcgSvx6?KtTi|M2M&UqfI z@=@)}vcR}J6@7?8xnybiRLcoqMfymt04K&QD92KCbwQ>eRMMv@>7fcKnAi@(;+@9DV5d=q}+Xcq{I z3)@(|W~eYZL9+>&efN5EYYl}E#=Z zs(`QWxuye1S9qXpWv%woDge-vSrSUE_U@z4+c@MiaXJ+zsN!=3U8nJ16L+1Dik%FY zO%0T?85?&FqcrM`;5Xk%pa-=`;>M)h2ZEH%{#oI3p3&3k*HePt%wtBbZyNdtOP9OO z2fTaG%WaFHHV-p;?|HtJ2v6UwtHG-#HKhRrjl`zOq4M82{v8sd=KfYrVXSdstNAXY zSMB5Y8+Y&fO2!uq?m~;~B+A)t3&7a|GpkkfdzprQ~K7m}Mz*P#ou=Lie!_Vw+8RaTVbDNk8 zTHE)Ea6>aL8Dzh0`Jj;7)_Zck#WP2iJKES_ubjYHNq>8DN}6_za3RGvaZ|ip*EC@FU1W7+Xu3?y)nyu9y>Jv zwgFzGlALe=T4y)qS2~6cheo%~xhUEYOt={+vZe6pMz!<(Ixzp3#k7e`;=_fPhpK$y zID|3gi(i3pd7Jz#`Y4M_9fGTn_>}GIc@35`{w)Lgf{($>7lf%A?dTUhi&VyOZqD%_ z$Q#2Te>=Xbn2$#|6}sYlJ`Bil3cF>fdG~fYAAB1dtN+(l=XV;KlT0~ZM*Axcem!g5 zC#BAE{mwgQ)Z2d1zOoS+_ymT&F&R`YnDqT+(>pgyq2zb6jSge7i=7WQZM9a?qUqB}Uj=bT(lkV)o%3@262V#^%nmnb0(uo{)WX z{qNOkRBLY!JKNtRakWVgF@@7;gZN0B?q9~{z`3)9>R9ZYT~PXxb`!^PwKuf2*IuIy z;z*mmGGo(83INCVSN4BgjDq`?m(*aII{Ogxs52=3?9ZlDoNO~d3Z-@E4;J8C;+l|J z_);IR0>;}X6Z|ne#A@GMc$8x4;cmw_0yZYkAnY1p;7lQFvhiUJY!Kj55uJq6nqj<* zY%H8#<5>!ZaSG`c%UrnbrMF))@I$UAF~q_DSN^fMSwV<4^>;dA9niLd+xmiz!4ig7>QyXPN+1e z;27-q@@kzgV77Aeqi1~dE6Vz;jWt4u))0PMqTw#~cK==&Yr8ychHD-y7$hGQux9{C*~9CRA9&+;*F6(6OtK)SKlwD@ifUC78$R~0w2)=9<;G~hEgni6fF+VHFbP7Jf_r2;{Vj2tJbKTLTEf5nLyvDC@qi7(f;#(M)D~}$ zSA4JL4Q@l0ha#C#G)o_Iu!m)H!nM=ZTbDHhCftU3<_dg0+C}@ji3zbaDaa~eOE~UQ zHvmYb^N)TD6djG^n&gjdn6}oik3Nz|i(jq{SYR>|NPN^epT4K0Q7aa2_4>Z(>_j-h zRDNR?t(`MCj-lThK;}3zZP?GI3wphNUrIky@WSrnn?V^7I(tRkW^3QzOxbI}eCTJ{ z%V{NVO(!@y`04b{EK6azC>sgTzmDOQ8x|2z!E9TK25jXC@xE^_e$M)B zAEi?d5@Sj?(sSKEhw&=R4z=U%VM0B5pGo)RFmsx_6HCezopaRptjrk%-<2E4W_9qy zppgwV{y3)(B2;||^fR$AEc5{!D`2r{k;}x$)9wAnOE7TxPLt*dqgpT*PyqOOyWId7 zQUXDr1QiPE`Sk&iRPWmxw&0w2)$fV+KmkY<^`4B&p_a3Sz36tm-}$B3o;4yP*O9{f z#!CRemlM;)?xZIS(0R+Qs2JvLQ_fgL=AP0qpy1jE2;&!SsMW7J`aRGgvWc5+Y&s1r z9lwMNvdCrD!^NFs#=VluVC7f7uVFl&PE@>olr{J!UI?6=lm!zE8tAt*Fvh-P9G)J1 zq$weWbxDEtR^2eQHYwpj!WS>WL_8>2_bt`|^+W9XJW#_F8Ny|)&{>+F z&nP3pjco;84KgFc>Y}K5eY|l%VKNr1zdhxBQIr3QZnuMJ8WREVcTU@zq?y~^1ml{p zkVL7)9B{~N^n6D_>u5yemCz`(ugqPRm*^ogf`TmQrXYLS#IBA^mgo9k=l+G?wv*)6 z#|j-^%W9cYupp{s#Nr{tiNQ7Lh)r|@JH7!`kAehM1Kl?FSUMhY=6)}C_-kWx?oA+V z-?a`=vMXT1ef|^{UB~kfHPmU}Msx~s=PG*-(ipCyI7g}E|Z0B44 z&w0+&FAoktXW_vyLhmz}_FSI($c{*!dT;bxZEOgecc;hq@pX7HjDMJ2AhNal<)90~ zfWA3|5;0Q@b6Q_ZRvz=+2}*=xIPN|~9EFhU2BA$i|E+!($GSM_Uyj5%FMSJ{0UKFu zu5aAM?WDc2P=C%E6YllLar=RH0hHr6IOF8E)*UK;AJ+@TTqdK)n(eSFiR$FghMb9z zkUA=E#w$wsUI~3ZbUx9Sp2o+g-N4Mf7CJA8`vr)Wh|r14srVz3oOcH3Kr8*k)vudO z%!h+Yjv+_Hw9BN0OIyccs-LWRGy*6n&VhkV4hZpP_`spiv+rw}>l6e}-4sUY&8g$v z>;|`gd<)|htgCkJih1Y}I2zbXtZ`hFd7kb>T<{msF031S1D3-^PObEx0z<1Y-B&hYg( zfWc1xsOuObTBB`Fk*>;2@Z2$Le-|oGuKw2yFZ1szFZ(F{n z;}b3M&<{%JycKMU$6H3-FsNw2I()Z1?x6+^_~Gyd-c$NW2IT`zfB2+$;Jm4sV@w6% zJje)B`kpb~@@>!Yrdkto7=MTYH?wmC-ac~|4%}Q2qHZs)XqXtpfgXpX&k0{3A8+M?!W!G+6)8aSXv7tIBYBO=^k_I0mI1JXLb3XyM4w zSWeX=2=Cx6Fv?JU8S^eggkaEpy?M@ysd(E^h*sQZcm&*cd7ShYFa!OI;p3JTr#2uY z1s!=wx_qs_P#Ig~&5++FPi?9UwO@+pQTI5zbkkazM2+jES7>i_*~zt9qrO0Z08Sm- z9E3o$GQ`gV@Me96jv!Hg#vX7Jok$v##ZmAtrr6lM7oE_VOAa5F%;_0ao_oz=+(sm_ zflI>y-(xgTX+s|7Hft`RP57u+!)iXGXdkb@HtoouthwGXk%~_XjP`=9(Q&?Um_GH^ zI(SaCdY^GVoj-|g=nHJwZ~E%ON}xl!ER3}8>wQUsB5V7?*_}2QNf-sDaJT=)({TvY zBw`rBe_H|DPqiNR1A;mB!^}6pR|1`w&6kq%PxYl6G~3NuYlWs2gyCW`neZgCQt4~( z2`Lu*c~@`mUOgna9>^;>_hj>UguKkDm`XSczutHZx?l@_T`Mt*0Hi+%G`6(m)27)& zE)v5A*EE<>V?wfk#W;d9XOxl^)XictOL>pYdPE3N$A_L>v|wQN7K&FFC&QuYUi`ty zF-idEJMW&7Vc6#zPf54b%YmkCx#e;mzBzkcb5TLGO%2&Q4~N@X$)IC|E%ufMrR>t< zeJMdobR|(M6Yw-Z3kl$u??BFurEe-^gLkpsB6C{dJBsE~PgTc?FrF4h%L;%~Bx2d< zw59MPl|-7iJD8~N!VsHh4*#&10G^W}G!-x^GBPu`igX6rQ^j^SodT6l9A7FXcM7vq z)<{SJP>a=JLSpZOJwat@SLIBOEd=82eP?p-2yn^{9va&hOs7|P2N6(#>6JT{dLAZI zJGLigG_4A6nR3ser!j72z`ZV`R8EhbzK5@UA&)dUtpJrG{aighz`= zVJC!{>z_-cO`jWO^S*U;a+JGKH7R5qC@pRA_6_FL<4vi0%LnPE=>;3BQosII+gAy5 zl(R2j>Q-&PIuP+ToAma(j;r33T2$TjH+~Cc;B+XMsfn|k6pnqRtV2BC$99}fy>4z* zhi)U}-f?z7Vm|X!0|J92vJQwtK1r-XH*n6G8B)N41v?v3BYHxV18-xEMcKf*e5sSibKW(jdy8zu8 z(!I{n8Gi6M-@R_Bd0)Cqt?e3%?#nFFL&Up>7lm|V{bhg2%PS2@qGF99Mad%;P@oxe zrOt-N9C^dwnc9o<5rOnpS;@!j#jDb+uBL=l8Qq>ZFX@tm ze#*eZNTi|FLUtR+$k~+Rx8T9>b{cwF*T|8xtN@=F&@Pkh@t9uY#lYn%}3D# z_Z^p|Igq*RRTpr0WT)dcGWl~4TkXn9bq+!ILqPohA7Lm63C*NDip_Fk%1FiVzLz!( z!dFKYq#m^^?-EG!F2jw3D`(6N&EuHgotTt95-+H?BG?vgyQohwcU58Ms9WL!TZ_A(9!QGBgPfb zM<^<65B&4ofS5pDXcc5b`q+Tpy3Zf^5jdtlJ;Q3COM3v}*ptjB(t{ot5{{fbw2d_z zcU2Vk_3S!#?TrXt9Te?r1DvgVu`L6c5*!51QS$7e^`e<(rFLhWadv&g(;xT|ZpV$a zF){*~n7*-LUUBdTm-o!66So!dk?{gZr=s1s0wJcYL~8`Tb8=W2bEFqNl}(SU+)3dFw`QpUmV$I32a!)*eh0=7TvXfZFCd>O%-7bYUF^r!%Yld$C$25)-Ifq-p%aHLLjQbmiAFF?BytfI*VnCZM2XY@EIwS{i8~%61;14O7Q05 zts_n%xkNyHbLrmUL}3$V+US}u(IZa%L@yRot=+*+?+ZAn*A4+G2Dfp3<40Jnold8I>77kC zhtAHOsjt-RTtiG23*)W&8p?4M|kQnJ7{*7 z3wG+M+Od20w-~zp#)1dM@sVD`iT!3J6F*_g+n@o}vd?Nlf;QICg(0EWQ7dCT_)5|H z_WEL-4C{ySXG!z3B+W=-JP4>#YsV;1&<#NJhPPofWi?rUXR z*C&t%Wwv~JaAv(L_q!7XkbbU^W_S3xPQQs|J4JKdAj&!OP2e8S{=Gd)IV^ZzMdRMX zADV;*7B?(U0*xw}W7K%?>RF$dtR-!VJt3*kUpu~o*XB_?Ef`Ian?z`xD1K^2J+tk@ zD5ok$=dxU^_a4FJRh4V)3hZcHTGg+hW1Wk;7cLdKXY3bG6GbDD@P_(h`4>YN?5Cn0 zm{WZ-IR0BPvCcTQ25iz@S2Zjiq6Y+KyYS^eB|;W^x>VcDJ57DD4%a^5eSiq}d8@KA zz06eUx4;-$K{7hZ4%Z6_G z{1Jx55#9%lnbFtm`?18C$k52N)Ccsc~aPu zLg7lg{a{f@^RQ$5Je;XU$;qsVfG+!F7-i<<&}7C(ZINup1bLwk{rD#CUa7j$IBko=Sq-h%k#N~S&)%I?08+unhWB>t1K{C=cCx+j)k-` zFPBR~pa-@^!%6mj1*h!y!p(G)^ZRk)p#yOT@7i=RVdF24ZEK7 zLUy9u@<0TQcCgGnZ5x+*+aS}rqvRwzdlF1aO~UzCHylM4I|eMMkNdz`G8}NR>~shA zJ)qXI!S@PrXb1AGTE-ox4zFciR+4cSe2kVs=#8>Q1KHb!mR_#S(C`K(Y|Jg~`shTs zxUNks$D?RAQo6rUc>jSPfjW#((a~Y$6t~y$rU#~w-%jJR1U7O!(tGQSFLG$$+-TF` zbjkr3x9Y|AJuBX6#Omr>dM7GFqJ$O~H=ivXP+(h0l;!-!kHBn7vc`U&TOs3jSAoC* z@5kuM^pzB<#Fj=`;1yYNYuUV*h#qu@@;mOlWv@53ZEZHgE2{G>E3xM}JT#1){!T!S z)hH~=Z~O?i2vV@!6$26sqPg#S8)=zl0Ch#~)TMl6jc4!z@5eqmywOT*wU&fR`dg1}i{?j+|v zKtZpV!_hLSqhU9UEQp12B*v&;hEyY>sz~-U1OLEGN`*X znOc)IWko0zxPdX~lyh#$d&^EQm)h{PufOXP>L{9rf}?Wh@e7D%&5v;w670z@rT4MYR%{QY+82^v>2zZe#xPa9zNF zM#d_6C&Zb95bk8ux1+PxB->~x#mCUHh(tFc0;d(+1{;YpZ(l(+I{|+=8W?-Q>0`5i z9OzXhCYc9muasO-_CzK<2in}e`7DJkBJ$k_ixCj-W+V5ZpkEec0q?~hY0Hwuzh(yo zLqv9zJ3%=ROKr=J;IPB=K&qDZ``}90-iFRi$AHh~3!3}ADNs(XmY4}bjpk4Vx-(IM z)dR5%HH(vsPh%%FnjDzNfHp^+jaDzmBgVRg`jPgdGBPc7(F#@T3W zxmw)WnFXVuD73QPs&s&6rFE-fAQ*CCvhR{zdFCx(Q~a9{R0sl(2Xlrvm967XZUeY< z2Iuq?rG>atTQl3UwzaPTX{Mt_$cO;4ioM5JNO{-V*~z%x-LQ}8!KbwgQArStonHql zoi!emgL;)+oZs=rLC|WH-qIA8aT}yeI#KiLaX)t9;tITkWD;`gn)0NAgZskr@)*EB z@LO1m6l$?GlHLx)XNoYl^|SAxS<=rE;Hf?^+Ok%?gqFFFY%=F9CSkSg-05xg3YVv^ zQDFP8+e<|VY_RVSCX__h{iVzI^|WEz3LI@C%Ezx| zA~?g9+pAB4O3{I^Fm%~8ov@#oL*E2hni4Fq@j5J;_tmOZ)<60+33ny^-@Is}++_{4 zP5|p|gf-u%CoP4`4ix) z*u)#u5|%b;2ir|!X35hobS8y9Erq}A`z%~%mjibb%zY%YF$1fPw)cjWmu#%`x;YuJ zwZ%19wq$?G9rOqI`B3aFC&p}pU`f_CEg-r<+7`}M zD8=~|9yqddBJo=8?AC6HUVr4b5W?*XTEdx)ZEmuw>Q~nTJlx6(xlm#PjSht-QpdCO zfu!RM1Oksh;=qZ*3P~K1-DP03IZerYYQjoAcJuy(zYkP-yt$*E<5VopiROqR|4n(x`z`)IdSI-ue@Vnr_bhAPE6I;wIAf1JtpoY2dW zQP-@iJ-DJiJhE$xICos{6qS+>LER?gYY)80)WZQA6F|dy%tr`x>ct2tXEA{%sKQ}; z;|Tqx=mt65trl_iWCiwRo(S5!6-CN#{0QQ#L;YSUHO;pN(5JX_!~Tzh(f~aG1?TA5 zQOS5=?zgKdZ}$#g<;6i;&9)KW1S66aTeOoeZ2I6sSs*jF(uNnv&baRM9bdGAJ!KP6Uj0LjbVNS%qUK8eWB5~a_P3>S!U5pQ5fHElop{Q%5J$z9&!bk zTPz_+2ZL=W-6wQ$fN@6;RJN$B;5h{_s0>`+H=?%F$2xjOXusH*NaX~=5R&4l=5tLRG?%#% z&zY8>cZ=0@RJ3wu+$dS5*shZ}Cr8sGQ1=sQ8PUYSxTYT7roCHq$#R~J?;Vi#WYfui z$K`+yFKMFQ#_EgEUW@Jrm_GbV(co{>ZW$D6myNscT)i*HXS!e4eofRUPkBwhaWkY@ zen7v-slCSXG5Vk3z1}K#a8dM})8|PUIasYIeaG7d6E2=y6!p1iHyW77@4EAGNZ|!V z&G|%n?Y5$J=+KxWDnJ$GHKO#>oNVbOoZrwZQ%ZUhH$6HH<`WWfwwfR0j|U~J?p^Te z?Mk$k6bt1WScgq%h7p&_h2Hlj8_k*kMB&3mr|P*#LB?^jehkJ}=sf0g)B#=gZl2T@ z{oYs0p3GCJkF;=YHa+5&y4FSuG9a5tJZ22f!-x5mD$)RG12kanhA3uc*Ltr&zg!#g z>N~h4Enf0KI|`;>FgIfo;pbH*WemXAN!tcHg0Z>=*{$H4JG7{hW!D#F*i$=kti9oa zQvpq7ctc;6Y{VN6LObD!HwN^`w+sMVpd9PjC-yKVCe>WzBk){b+lcN~M!V1Zzs>}jS>1nHFof6LgrmQKYvkDmQqZfvo;7kT zX3`JN604uH%yMtoJg=0@HHfB&dIE!Epgdjr`xof*V3#zZ#k0`UqVjkTXui~Qj2Q+= z$Vw|AdThl>gLVWIj=|97BCt1iKCASR;@!wP-(K5vd=x5L&T-bL)^-vu01KogWUakG zR`+QTFxAI%EXad?B^GCQc4&UW1)Z(=bF&V{?c*NaC$42lVdu5{=+r@eYiv z;)>SYlK1n%)V82qzF%l6gY)-l<4N6!8(rRxJfM}*FZq*R*Grw?%G3*71&sxw%p()a z*@@~dVgRAw;@@qH?pWjE$rr#MegolA$!vRaWW!32F+O(k`obP-$HraKLeKjwFn-uO zQ%9i_l)X@K-GIf(((T^Zk3KX5m|hxHP3P9a+Jnys4jJxYJ z^Xa*dByYaRmHwuNplg}g(59n*-Z$FCaU!6#)+APPKG5bCT)*p8Rgu*U8gJ)GO%R}V z+#w4XF-$=!$Q**iN#k2b0tDY~E&y8dV13*`Un2m@c3p9s>5bS0*@8^WqQo=_B%gS@ zsohNK<*1E`U|5^lw$yMxF+9=rY#nU02M51XbUSv4I}x!iKlvO9wE7#ND`s^foGk(~ z)=`_afDyiJVp_|DD_D|&%6c)oRg68rxmu9Y@}(nzS7EOmktm718W9E6&EmJ$Ru7zV`HC-gFCnqp& z`@XcTc3d4PkR99ks^0BPba+Ia%Djb)tH=|Fy?YufWG?=YFk2;Ygkudof@K5l*Os(d zaPRG{c`g|OuE4m4@siOwT<5L)#u~>dwkRLt*zuxO{A9G%_RTkWkj)ETRMAarF9ma^ zli-sTSSuGU?O+j)dZ6*u*?>-1?RH_MuZ z7q~ECtu#G{+p}brt_IFYSR!8}4T<#WA|;^$zSsL>pK0&WB*|Yk@4%V2C|oj|*V=o* zKZgsIXWHoA+xF4NYB&#ir&Ntw~7gEx$ zW7((Fo>_cKl%*2$+V>X-e<#9n%GER4%*r*&e=!Q8||_S_HLJe2ItCVZ^6L2b9O!*HF8kL z3KF4(DE>|O2}cE#^xo-PLZ?Ra6SQ8N(b#F}nMVf^w9A6mINr}!@8x<4V0u*#Kta4> zj#Q>C427&Bi-b9L{Suw$$3$%Y9(Ls#1oy&@>tj2V2z4aVi=azCMC>$xj>o{6S z2Jh3XkdW0w?^>~C5}&!hqFpn2R$zSbhQpIY0TB`Z}- zX>%HKnaal10mR0m2P~#T$+i~)hR(cu+I>fsAMi&&DI*t$+AJ_x6DwK`>IX5Bd7h9n z4*aiu(OTMDuXM!eOiciIKq|W+LQd!Z0_^q@Hy-g_88*Vy8PF*KzlgZT8nbJLGVbLB^ zc48%PCaHz8O7yHbdfztZ_m1#{mkW{gST(+kxAC4LJ|hnfJ|iK?aHL{o1OXnUEeM{S zm`{4Uv(nrX^&_|YiTT+Hb|>8%`?4y^V(fX@JFrn+@j#nEZM$l$0nO)y;R^tM)9e-4 z0mB6E;H!{V=w*OS4rK5J*}ZV};6ILJcwv@b^#O7qf|!jvTgd}viG-YD5d+2l+=ycG z3h!@3)RCHlvm}UCSMW2;F)#YZ6C>w@BLqtg@GGthrojxQNJQO!h$wG?ITEy=;qX@8 zYbbqicp^b&j5dWcPDDRW@>E}tq?SiCI;*l=QwCzK8^kDQOIkP6!X2Btl#M{SY2u7p zLO8XwJ;sh`jlz1tn95wX6a9uz>=g9a36_2M^wL9thd9jH=<8QzWSqt^q!h}f(es$a z<+lYe^`+m!q;6;Qc5-Y&BMh|Lz=w%Ugh@93UCK~{-@LwyZ!D|*(9!H58K%sf@>{G4mB1omnHWT&J>Pm^F6qXTvnH=J)7s6}+`Qkrif1Vt!K( zFcSgrIytM9%H$I<4w;h-L~_%Zr;m8*+~(C_T7OMiOmp{8RGzrbg%GAAC2l z)S-EO#d!g56w2zr^5R6fw?VtOZwpenxUK|q{&s*~O!bmy1T4lUAfFGt$rHb#YTkf4 zimMjeJdL-$$mJq|NprAv{&g|2SBIdggoV{~c92>Qy1T27RnO#p#H4NF>jHK_1$5jG z*EHL9|B7UnzW`}iAsE^gb=^h;d95>%+TOPq`hn*{<3w(+Fm0QDLF4bc;2hzL=6gQh zk|Uwdfe|jYM^eq4&<@VJOl}vC?81M)RPLZuDj^d$S&hrDP7;ca=jgF>>p_HS^|?fr z#XL~Gx}G|%&GvMtq<3?8m4@$*Lt_Va&9S)7cW!N%VJ6=JCLEpU@Ld{tYNtFgrk&eY zo8oo&f$-bdWmRnOh3Pe0hInFe@?JNG*0;el3GXs<)<-A0qSLU6$A>|uMT%!$OX zuTDm&ZgMwlP^vkX?p6Ro*a5@c)ifF}SfVuyBe&wCDstyq^EaLg-Pyw3dP!KZg7+%q zzr zc>UZ8xsB(7%1dqXhPp%K64)qbD%rSGpZku|5UyuyD&qiQrHv_54p_sk(%1C>-h6Fl zrF{=T9yp2I4X0~gvL!+QQeZ+&Hkf0m8lz7yjL(aZ*d?spd$E!w8APD}mP6h%Y0p9?6CqV>y#5v$wKiaC zvlBpuTE@PB+H?8Gi6=xwwwz3Fyk$IB%sNa*HxPs8;<4z`Ml_l8L z=A1bj$EJ&ent+@0ww!Y$K^HiE<9&fT#+eN=>AV~?t#BO!k6LAOf-7AWhRh4EKb0B5 z;s+p^>LuH_W@~sN07(mC@gw)Tfw-c~G8sw7y%^ZQHy~T>49g!-sc>|{4Z zVi~ynjki_qfmO#AQaGi5&&Ri)goeW3hI|CBdPzTxW&8oPxB1nSx~OoMYH>CODS^|O ztzbE1TEMPP3Gwa@Kew6Y8-41Wqr8@PM|8NI7wQ&Fa$~P{lL0wL7Kw`QV#ug&J?8Bs zQet51DXlROR_upsI`=b$^M+1Kr|Ct~@}cm%6l zx)EOI8y8GgaKvS7&x8J9YH4 z#%*=P%vNabg26DPRU0tcTzOaRPaVa)0|ja)gBWB?#u*!f9j)PMEaskA{0DvuERGQd z@$7ce%K-eAHmO7B_aE84-ePi|HlkU-qp`ZpaHJFyTH`)LN_*4uN8XA#``(R>o^bJf zhdfSh@`$=`Kj3qnAlF0+uOvR)`Iv#Gd~m4BVJ&qaoyW?^NpcolU8-cEg;S0%Vm{!A zDvCoknw!(wF_LKslchZ$9(=1#fR4~xT^JVn(Q)DFQ5``xUH$3aRI{4Xw)Jp_<*sqU9OQ?5Hk!vGbg9JHaj9c}TCXelfcr zI4>BMQCaim*~hDr0_fl>Z#kp}{O~~Kzg=7%_QJlZt7Ff)9eNFr3XX}-cp0mY_cqw% z$*B72E;ue>OmErQAEPR9!WDY(FN)n3Y5Wj!H~{E7V27Tu2V?Md7FL;ecR+||V4F{# zF=^}(&t&y=dNq#L0v)ikvd4!MFU7@6(;mz2ppJo?+tZD9OU8Nmg`VvK{g*^nl%s+3 zyO2{Sd335}^SbT&HkeJoO|-)&eSul%1<>VOs*D+we{Uf(M0q1Y5|Jn?6(J%RXlaCO zPg>>MQTZ%H*eK-RyBToXq$5ibaBmos4!vuHxx9 z799gaTepW9;erBpN#$VsJ;mBw)5H$5fa%p)=(BR#W*fMZ_J{IZtHhdhzqWZJ@tl?H zl=8OkYa7nlSd7VPu^F5$eN=@I+@ZXpmLc(=9fgQ)bFfwg7$RJp+J*fXu%&&7SQ!`$ zRKwNEGL-I7IUBr5d@Xc})-@LDgsszo90ln@Qihww7^9z+j&k#u@wphej5Ycm zy4Yt{mIGN0D8%qG-zx?_O{KfCl^$0=n?ofv2z@HNDBQTT5bVX>u$V{~;k`zG@Mf-o zM;QplQ+Be@;W#Phw3i-V3xajUb;J||W69cN%0{2JAiSG6cf35<>Rkm}mq?+vr2VZ# zDl5spV6)V|JEQCquq{gvsg&L3&3P+L6fG`$BnF=vv-*_G5T?-wqlaLunlaPRhtWBFG zo>VoJG3EO+0UW}0!o-?6mjz<-wKjkTcFukAr9iJi$%KXz-w5VLjep%$`R)$_{sbD= z5Do=(l^Ccohw%YgY{#qh;d68uRr{El0w%FC_*FJlxt0_ReI?48%uWQohnJTvuEZkl z)4BO4Z#eh>OF*>05s|$~J7x4G93JndDK#5UH9~K`U|AYkyv{&@btmp8pR>RfZY`|b z@)f<6knMa^jgSOh*Hw7@2zOhZ8IS>;xtnr1*V)d#< zbrIDsf}X`Hx>Zi-y&)-c`TlnmUA-RVyZg+XP;wC-;jPZrEd}Mpti6bDx9P~+;sm$M z^+L#dktcw~gbuOKIN<~zttfj_lc?23zl>s(U3clo4!4F>I#}@cIdb4Q&n~$D8B|6n z0kIV>LaDPZlsp63D6SJ?9kI2)GcUIHz5+{$^UvU8fji;c0@57;Tbu#ditxnYSWWwGavm~{ z^;bH|bL?6##nA_wahf6BeARKib%OE~R+7y|6iF=Q6cY#3|=Roq1Jj zFA_y)m)93p2JTO43Y#o1%5_ic2Stce9(=LY|$)Uemt4y*k~es}?<&7m7QKShCsN~dqEaxV%Aj=g%I2drU8MeD6Y^!DF4K|@J^ ztzRZf42V=y_U1D=0h=`}DO|MxWCIk17!zmkhb1kyk!Iv(IE5?lc|?(=8EQ>TmaUey z3gwk`B6TfN8C(edHN5%GglhCfiejB8|WL5YcW6&-i z4ySuA%&Q2csfhzNDCA^H6bF0GjdKp^tG~_gtthBHX!+Q1942C;HB3pns@xY$wyI>` z9))5_kMV-=y01zbcY3eclw-bzv(i)~Ds=UiW9{K~kH#Cnd5B4JzvHaVe+~x5jM*;> z&#uDiT1F*n;(HT|5Pj1z3Tuh(X? z2G+9xU1@=owi*5xZ&%?xN|~kO2_-G-!!WAcNzj-+u0K27srSX~(ii&OM%n5XmOR6) z=6g@5c6v;!fb4@6NC&H92;G80yMZh3?0=}_-^YXO?C;4*F3=H!zzDvaMSFU{y_+M^ z=T%&*@&>>-SQxWjq!A>g_NC-Kg^?@sp+e3x+uMK0xB1x1j1t#*8xar<6x*YB0xF}= z4Wga~-pHoPUS$p%+l+V>1dOxvr3{{Lb6?&Wo+9w!PE_awwo`8*E?uUd!u1WE4968n zHc2>{gleQUVpOBdsjbp+L6BAhYM>t`r=*pbywr7#W+|83xyICzAg$g?WC00VhfKQm zM@8%94C4FkQ8Tj-=Kc44PUSbAjvX!}jW~sm3q%1EQgeO}qx+5?tF6phczHlHu%4U{4{*-)&Jh?xJNFV}<%-aRF++($?rooQY!#X^fHUllnT@H;BQ^(f29qm6k}_6HM8GFN&yxF{ok7 z3B(TYX2Ubh6;YGzs)jlKq{hIPx89_Sa;!DS&dE38r2_~5U@Bny>RoV@IGz)pe`>3Le5?p?^TGb`;WzO35{N&0JmVs2Gg;znb|eQ0%ZzjUtkzWUG;N&)E8BKtb-btFUnbX+`HfTh z;a|3$NvEN`o;B*Vs?$%q)7bW$I7D-?(4f?G7{{WtrF~6m>0-N#Zp$T1SeexE$SVSd zWwWN90s==nmr5KggKd4;Kw10lwO;8<2IT?%5Dc0bh~i2r;|yO3`m5Jn4l7KO__gl< z#XMC7m=2iOF)tvj9<%Jrr=H5fG%dSRE|t|A7@t)rVrkseJkD?U6nf&lPL?IwT zRo}=IUHMu^($&&;b$crjcb6V~4Cg^vH&8!|+TPqw0lD$eO6HpGy^OG<<+kW}=W2%* zcdF+dE!tw0(azSZ_i|6Pmz{PpL!`yo=1w&v(|H&Y=GU7V)Y`|=38qGMa)a4l}Qqs1H$Zo z>@F2UI?Jv6z{ZS;5t$5}RQChsJE(;2M;r#Ca?0kz=B$F7Pa`Mih`T!F3g*Uq|K|l< zHL{EeS5awLbee0J#M`Bpb>5PYKP&Ht_4pCJ*j(K&6nNxC3C_8|&=A}A! z2;!pMh3lvw5UCKy)Fp%Kx7A#P@QZ;m@R~!8#_ZA8dd4z&n4k)-0-0AnjQFLfde^|E zjH08`L%D=`@MvSWKXT`6-Qf=qXG}sLE{+830Rf;>VMnd9`491X!iFw;uWF2o!TPiT zcCG9e#SSuL*Il%B%*{3D9Q-OM%(BmF)bR$VQOYdk$V7pyjPx3}Q$3M{EztDQHo^MX zJGb*_+D)#XH`Z_2F8Z>N8fJY|ybA9Rp&?wz3(8$Sxr<1ES*tXzs^3$p-+`WRuerP} zetyQ(OJd zlU^DC(PBZM_SOD7ZIYFzQAdliGdBeNYLM|=Nmq@zWL+fc@9Py6YZn%R*_-3&s%RPK z6?PkZmcTs44n@c}+vzdkb_%nBoYbsth8bh7^!(;~f|!rJRY-F{>1^fE$RmlNTP7ujqr++p6WF(v1j4lWb*P ztXBZ|_E9E??zOGqET4_-Ni0W|RtZShq_%!xhT zVT4G`IWX>9K369Iv?TXltN*+m8!Y)<5_xi)mK z^7QIdnApj!xRU{^QA8jP-i6mYjcRg<1+yG9HIR3WjE*zC0CoyCDbG^Sqh}~ASRZ^z z16#DyD{gR5h|3{*Qo|V~wLlO!Pa3O-m3_R_cY^HS;CniC`bqZ77i)poQ3u0;K<&Fm z;H8*=fJN}vSt(Fz2e7NkXMIkTfq8G>OO!~MW4AH>R4na&yxaQ`Xwj;Hfu)R$*^QE_ z?KKX89)}zflY%}s46NU_`BU(h8B2z4-6+5PF3_uf-->_Yv!csr()l`TKXQ1;2Xk~v zrC9A|eXY{`$_lSv)GVewB1@TXN11h;l5GC~^K9i2dc3dsM8L}CN;;?IaVzu>ZMzHz zG&YcylUh*38fa;lW+iwrZd3WnjQhQv*wlh0bZw^}D`{`HcyFo=UsbZ6!C<#_ zE96BI4Up6r%9b7Citkk@MK+PbQ`#f1Q}+Yt-4%yCA6jK$7S7DQ*YO5D)bh16FJ@)i z*;@}9S%mbDpIoSCabDie3W8N=nJDftFkahiS&p(kWlz{@4FNrc){mo5-+R&5TMEhr zz?NdKij)|AVPUdqnRFF8kP{O)QP19+oi$0B!~)7*XEmqV+IC_WKma<* zsa0&ZK}M{pi7(a!rkxj%kpR}k2E(`lPC8SNG1=O3wz1Lpt{VZbT~?#`3|xUJ2k(d@ zn|SMt$-7X%)&M>TuG!E~5rqukDmz1C=2PO~{Km3=2~nfryuD^$aXgQdnUerg^)a|{ z_-TX}9IAQjX4~g$u`x1upiM191jbB*3AQz>G$pFsu@v*r&3<5bcD|7-6#FLm(NZY3 zWk9Y%un~a9*4%KjD;9DdUy}MT)lPEc4O`Z}%?9LA;rRK~Hqi8}fi79uxRvHWx5IDz z1Xx%O1HeMo+}!)>gk3;2i5;DeUhjUFzT=cSr8ggI7>pPf{v`bWkfT&0QI~pt+?zmA z<%I_tH*C|h7nJkWNfYC@8E|IcCVCLqFAeQzt!i-+aDg+}O(w$QaGb(ULOhQ`G0=`V z5tV|;se831+HL^M%&w_Sy(UGq`*u?^eIb|R`jP#rL&=ua>F;*lQiPi|(gl9t+h}W_ z-l8|#7=_6PvoU(InZpNf`5uvsTNmJ3TtRYpX-UzkbtP_{NX)yhqQR+2IxS&15Y!z7 z4(nXyaFHB+#sUs)dh$&N&!v=5XlC?5A`!@Jqa%!u3Q`QAWJSMvD;r=bZ5osNVIx?~ z-vV8Am(cg7?5T!(pfQ)m4>R$I!}fx|1dJI{AACjcy!Kn2&j}I-T`>w-#(mmbKD{$3 zRdi~&RN4vxe3yfh9cQi6u9ChW6i`Z8J70>U>K=l@bw5K8&DwqDrB-?U?ts!YtXNgr z!$wejACNqpy*nKkDL{2M`3OdEvNqOw_MqfpW06hH!m(#^yY9pMb=xn}hNn4dv}ugV zHW4R1eDM@70R)CoSb$cFKQ6~S(@TSNaF1)v(h3hYR80(H0TtytYws+bwW$;c`D8#)6(v1b646C8 z0IMw-?P8}^eBWe>z}yPT;5#5{!8q(bthnH&>Fa$XDpLA+3W|ntCrM)x${P~f;17J` zQPkq)gw88z>&(}HWX!^=fN121>IH^6NlSb4Axxst7>-7Q^7DCnDA=SGWJowB{YW#w z;mw5+*#>bLrUTt0p-o4yMe+oCmja^m=)2qvSpE+U8_Mz<%|Tk3uFGw9EVJxhPqBj+t}5-TNDQ#r zHvT%Ks6gvBEa;nQRcU>8A^oYH{ti!fwSaN9wC3L34l2l3Y=w)!?@pNFT<2Nf5zlZB zwL;tGvPOXikm6b?+O{2_+4ot;51*YIAWBAaL?<`0;ES58onX-(AW9TKi0xVrH0osF zmd~OwfoZn2S#@xJUtC1^triZoEaZq+U}fgG??kQ6n7I{Hgs?zd!Z%h=12EANi?|(! z!_eti0{zeDND& zlS2BpUUum(LV@*x(eHvcHwvdmQ@g+d&qZ6wm55qD&*OgD%es(?6jYShWEU;fd+n@s z%B;bJatIaH&IYD4s@iSsd7|7{{kbrKPTceE5f3bT-0hITv~9_A8YzKS4y8be1@+s7 z%6&i`n4UONtqCP+rVSOI__A=tSn67?73|`5v8a{P1k$aa)={X7k~AdavmPu-PHmT9 zTy3vv(KtP`K53-^AW8s&ylL)GX*OnfW&LP%vv2EbD+}sXx$c(z3UaNl;#@Axwkjdo zD?w-uF`}-Zw#vg#)_S2Lh#8zB=qx0l47o1t-ijk?_M-&~8DIEib3xk4YSU+wI>pbF z?yDf&m_ZuX;wreD*ylw%)mSauM*oa11E&yVlh#}-vNoCP?i?IryO;bOyO~s9x z(U~Nmj?_cGF)9_hC_n^S@k}U(Mbm3eULP$Qp2xAIXn*;H@ohOcve22r*v#zdzB2*A z(zOL=O-jsE8AU%2vPI`(-T$R*^nvKRl3xuP&a zZOQL!vbrnaPkHg}9abM&x4vi?2uEngWAru_hl)d{3$@SF?CIj{MWp6E7g%rI(Ylf` z=zPI>q`&X)K_CqQhBf|Rdv!Vuk~?G_Gr*+D=sB>tQBoa^Y*-xv`?awJhD(N{uVGS^ zrsVlIOT#e>z^nI-VBpT99ctVKg1{1}j|m)`sP7wGF&FJoq3C@TlCdFq9Yk9ChB7^n zfD_|g9aI2!KG+nz5_qqi&M}$8#Yhqt??~YFd26{#j^5vK0HUm*l~KA5*0_3>)-IR< zhSxB3+X?mUuMb<`Y(YDz(}{(e6ygm!E<({Q$7fx|P!ca*PWT80CpjR+eaT9Hx2d9I zK@3FMG8lsRwN7GzdYmjGI!L(qJRnhSES49q!xq42TP{C2r+4`enJ zba#zuEGF9mL_ee*Kf}-CFWdt`KD}Q-0oR(=B-@@O>@CI!D^&|pqp-T@c(Z8489{W+ zY{aVlmKv$zZ)zXIhVMAN3{T!AI<)(r%X6;P+b!$SKcATqFgH;#fQjefMNemun-sS! zmJxmhKr#pRypDL_a$cHf>P5+X+8!ZtxA(-7BqK<+qL+-z2mdWEcSCqohB55CTgj@k5oFIfSY>bkyM72y z#TcbLM4)y+OEV93+uM8YA~?BgER7jOxfBr+aeFDg;`S!1(@!2&fw=(cQb}OxL^Z{FBh)VosCl_QA-lRKd9n*<^`hmQg{;Sbe}`;smKm;uzoHOyr%4&-VytdTDYaCFdN{RT)U%%iHg*K!w$XsfyZjj zHi>Ah?tV%Yi^DeMmUh~N3^jFEc)u6J;&!_NtpH_N;f54Sor@;QJH+$EqjMZ|1qJ?u z4S0d_49RaGSO(PFvp5N+dVz6eFXVfy<{6!mL?Nw$`Ic96gKc!d74e>XzZ<}F8=RUG z1%+{Br@vei=hlJEg+&0r;mOH3*eDk+WbMj+?QuSIGw#6J5U1^t^)fBNVexcVN3R^~ zb42!H98f3uEcV$)+T8q}h{vujtRD}M=lY(Gz+Nep5mkX(MZ6MrS0r?W1$34Xe z-f0RCw4SdMS@x=gn5_gFMRP<-^xuR= zD2?bE4CVoI-#usV?y5|QTq`1cfob1wK`g-|0T{N`OIn{AvR5t4B|BD&0@=$}tE6az z2cQ=)^=K;P-nc6`A8ZWB1Dfq-;4&=n{9i=4^rdV>v>j>7kv=Ek0swt4d& zu2ORsYqD9{-!~q&Ik#Vmj-avnA~hE$CQaB1n2?Tsw9UDA+=rwl=w9DG)~Ge{p=Oqi zrn9*vdt?lZ*p29CxbJbIVM?iTYC%Cjd>)_&RVv~mw8Qzyl|gEq(-^b<%h$2>*F%{d z4Y(sIdpm2;Vw>G(9XSfY?YL_uh~8ISRP}W>F^N-NXC*4lUOB<9lharo%O6xGFqd7f z-Q &6G?M5euyBca(ao_Pu%ETRrET7bJ;9%r+Wlg`vw7>zlG&zc~)LVc`ZgXS?Q` z!yp-}%GP{bh4t;3JQMCtxuHGVdy;aoIVlfT0}H`WGTi4lZy4Z(qE4Y zxkEUe1!gtACWVaEWxm2Ysib!5;nF_1axnS!C6uwcV9?=QRp;(C#Y$m?GntJurktlc z?g}A;*Geg(SVV?pluoj`1r(f;GXU`?6~0LqtkCnD^@E}?>f)uhq+@J$#wmIPT^R_s zCxNYHk5P!APrl(YDy?x$x})+tX|n*!G;$UKoz1ogjn1KP*Z^Ph$~%t0%oJt#M!Yrp zw=iZjXVLC4ZF{xC#X}@He{!?ewQ&JHd-nF%lfHct=mjrL^m0@1oCj3$g%49q313Wz zLttrl(W$+HucIzh5C`G$l`;2zIumcaaYg~KzY5!>#r&{`*A&-k$_5zZd;xbrKMh_7 z23n`l%V$l9B@7Tn2u+g6v3N&uxpuE-v3%33o9T6$PcbsHrXa9A5i^Cl6vj;pliDQuv)1}>cHYh3(pEVfPSt|Ky64%M}}T9j&# z;AiXO1%aO?(ls{Ej+O}Z-ILIKzmy6 z3&d}P+LFa#e|5s|ThAuGP;Gk!X3mDDAhIk&>edOJ96ZjPm!`0bcMQ9}y*2c|^p$&k zR|**oaDP_`eGv+tdGT^$hgv8KCg2VW4y|g699khd!H5&$woh^ z9sPsh@=9hc!AnjcewSJ|yJ$>4#VY@>!7lMYL$}l^DUGrnWoW?kWImaHXRWGo-f^1A zA0v&)ki)Vb%?l*)eJSCLH{!wh;Lxye8!b5OgQu=c7O$Q=0B_PgZD8l?vngTFw!#XWdQ%<2fCZaC1=U5WZAP7PTwG<4}65FthFk4-p9mu=Lgq zfA!+(hre(?`3BhltiS6L463ma>aw5^wge|&22??nLeDaP&8JPd#kY%HRXxMd95%}DSO;oMG$i+ zByVr`P|YR?YG;*EN%&XI!5ij?TNl?m0Mkg8{a#Z)u%|2!YNn{yIk=vIcOlQEo%U@F>#71NE+HhaxEa5?alh0B+;$BN|Tl|Ij- z<+FU$rnETG!?$kAk-yv`Ac;L;k5du>UsBM?ZHMTD!$5p|koTFr=}ZD9ENJbST^y4jI&l!R-3%6rLib?(}+ zd62LgEK;8?wU0JRFA6QCGheBzn|Eoo(9+n+t2%L>BnO%8Herh`=qLv5Bs0o|&sWb& zbj~^FNraVjMRbu2WwJO{X{Zz%cmR3K;P+E#v5wTr`mR7c>`ReVqLn!2VR8q)m&uNd zHiCRC9P?63I1(o!t+X0={P12Gy|IgmXET%2bmAb5Icmw-xD$?pdymiQx2;v0k*q#6 zzTjSS(vllNaGiMXgXHI3)6xbxoT-2YJDwKVJ{nS3dF+vKjUpKp%MIw3H;qnGbRtY_ z+9q#}Sg}G5<>K>JrNxqB15mg@DuAGwVxKb_dW!)gJp&*8h#XP_ei9(lxeK6>wx*L# ztw`dyW;U`cwvJQ%^r4hIpAP!~jWQf%kQe8fW4t@%)Ma3okhDYl>-~Y>aV-rb_N$Z^ zblsEZVZYql++C+wBk0{C$0A^T`B{_F$oCwpyRx&bgS%q6G4Xm7vkGlk)-mn_??T6F ziV@Qy)ujD2N~?m;p8PMLjERBiA?R{Kq2^`1Y^E2vu_~QYByi(IAV{c2;R35yB31(zZ zMap%~ZJc?U)jp&EAGzFMkh~Tv=C@X@>&pQ>)Y zh4JjNk)iI~7lL08Hr$K_Gxi#rhd|!Za5dkF+OozR^uP{qmdy;xR$GO(mG}xw)^qY5 z0by8A89CP-kvCY~Y?G7uH1K`h;c#STU`@ z28+Zgf?k&AYo0;p!bYx?&5MPI>ByOhk)sMD10tIE$8hxFIR93qK;#Iec%P*{0CLMl z38ry30z9tpE@E3MJEa(daV9SI+VR6CH8v*_)rIGL}3@~T#TpK)tz zfMAd$t-+O)2usv)?*S$QUpbRJ!WbRT-6IQB#r|B=*N>VWdd`20gKGXqcS zbgPI5FxMQlE^ds@^nMhNOUGd91mJ3CIi=lTo$AyAr8_rcu2hhoFlD^(fQOO(DCa_` z*t#%yHmCI@RQt!#YW%JB?s65wv3NTabI5n@`^1gGU66qx;-P7q@aRBch6RZ^1rA4g zoHICSb&f1jq3b*_H}jM}7V|4g%zN}|Ao}4D#G*^DrV?`#*PAXJzLc{)qA}u&028@K zzum!H=^a4sJu+a{oJD!$MPzC%JXK)y(G;n;JeWIjHF;fMuqgvB0mmPP+bf$_>2=d- z>Fgr3$#4;`f^Uvfq@By}2WTbawQ@v~&R|>{AiGW>X%2Fi^G2WVrc(=fL4+31##h_0 zi+Jp`iD#~7zs_Q|Fyuy_a0wu>$-MM$R_n`^)=UsE2?Sf@jIA(@$u3uf#d}R$Ot6MI~W?%HiLJOoDgcoVP?*Omix*Z zKbMK7Em=q<$)i_XI()=o@KM}9whQ+e#y6_1rHwj*U-0=@pJi{7d5o_tY9^u5Xd_vM z9f~dIGA$M%a8(_88r{E zRk7Q^m^jw<0%;0b(yCPTALqHqTJ+NZ;p(2U`g@*oD!FTDyVueCG>o;zqo+Z6BmcMq z!0WxrYU#bKiTmKh9+Mv<)Eqdc{X)@R{F%UG;)-9jt0>Qwh|-d(^SjEdt-TJR8OK{l z51`U{qC6`q5VXB87L<|;iX&fyQAS0}-QFQSeKRODbD4cT6>WwcPXE_z%pH9G4NjKv zETSQIObRby+W&)K2pV)&`J+iyoqVwn3n^-K)-em=OrFveFoe;5<2(Tl_&2^0qmGL3 zK`n519xS2w$CX7Ia)dkJ-5Nw1Ztnd>b#<4HXGekyTnV`>3h1k0vZJ3-O`x9W>fqBx z*$F35P>s-(8LQ#73SLvrILY%}N}!$ROtPvJ9f})K!8)YVPJmm133N1g(JE)llS(8m zf>x!k!@F-k317}e(ZTLOyGaJpI#N3N6Fz610VL%(AIH(h=$#1FgHCer&@FB6WxY}V zcx+1BIwr)CA-R}mkwTXRSHhA=(BK=0eiTI&6V|e54Zu6?ceb0+q8Fd`_;J&HW?wOL9{Z?LLzKVho|kfFOkwvO!(o9&ix zOarTo7nGf&57w5OvXA$X3@SA^vTy}16(@(b4eWL~kFNw>-SDVZ7PvbiW|q!1rXpwB zkn0nd*P=O0!GRu%Hv)9QUuVzbmqi6OpM$}&#UiTPHzrPGsl@nS=YD$fb>7;L5X%nF zWTDnT=lUJ1ES?8WnJ#Ku$Dt>@NS70rnF^l$up;*v4Y1DU0yau3a|IFIQN8xN4i5Fs z06ovcKDBr^YiGkS;188*lHAW1reW!@4erTQI6b9ac^NHTSN|voq9S2@+KHz6Rcm{^Vocm~qzrW{ zEZG+8bgy&ch+xD}p(p8tf(Q2o+L&)0Dg{Hg9{4StgG>th>meKd=33g~DJ*Q(gt;Zi z;K}EdiS^(tc%rA5Hj4CBxnECZIoD`b>cS#mcUKs(N)r^qS%4)uKGB?}ft(>;)}@bS zJVIp?&5R)KOH=Lva$Z2bpfVq`z}yQ!PaR2_slX@qg1hZdH($HJps&?=BVF&gcFsk5 zX1l`5b=>GMG<`Wv08>r09S2zYSWdg~O7(5bR_@0J$KcFr0i(Nhc2qeB=9miB5~@V- zRbitmu+W|JDtNd$sIf7k(}4VJpD)JXa~{ z@VPO3U^sfq&dRiayTsk2aujJpAFh_4H>0Y(`pnKyk%XnxOH*A+8XHmGu!BAd)U<_s zX_q}(8N|a)Z{-PbuJwss^m%3akR%Ft*y`_9P4;1a)$!f0#Rikoy7egn>hZQ$>}kBg zV%AHZ1QF;PR(2@vS%khPGkIIkMrw2f7JD>AQ0U+3@0^l{P*D;V!@c4TqtP}&+nbDm zNWU8Un>hxw$d)H-={%a-9yo(-J0@@@fMn?Tm$Q7CLy7@6LJ+|zM9Y4w(M8u^`ZPuM z;(N6>?izE;p#Qq@)e^L-_|YD2dV&?DZo=2#fzYsbZ{ap{O0L!^e1`!HG>&}a(|dub zMZ0y@tM!7tP(r}4F>8gq6#=kqfji_j#nT`5O4oUn^!?QbU=wC)ld$;ErOB0MUJ>5m zoPy96K``WQdf;_HLjsuGP$(&B@@^Z%0$;~ygos>UVu*9e8K8~6V(WT#JfiJ~X@ya* zd(Z$9UdUozm-#?fEuF9PU1LG{tN~iJqnPak4o?gUvD{r%CgD z8XF0=Nv&IIJLX9Sp6|$^0xF9cRSSZRTffogi6+p)cYTYw^->(b(%|2|n6qtKu}>Ow zP#~I3_yh?e7Oy!vX`+v#-DbA5=Z5$hvI#eoZ9reY(MHFed>-#iCacOROq;bhj$%g9Lt#!>-QOB~)SE6t#P#$D&VBi3Y! zP$G9>`VP9$3-kyu*4e0sRk|~sU~zWVCMjz;V<;j_qnALt*=&R!DoazU&G?>h)DebD z@ho1=P!Yc^1R%bZU@f-t zL3tUkp<8vH2F$`{C9+Fnb~LQ^rf_LxjT;f?a1igw$1w)pz_poG&(Ubk*V@+BU@^+4 zmP&itasJsLSsH(u02wa~o0!7~`MtU|u5I>Zm<`1sTt_1X4JRDN8hzUN9u$;F9mEY^ z$_^2t9K8;gfoYQ^Uut5{eT}kV-Y`6i?q{_VyC(|`8krYy7V6kbaRVpfhMz$eM&VVD zW8Tlvl4R|U-;!H(1qY0?Ca9G6n!+D`n(1LX4&(|`T(Gi0#?iV91AM>18V}jz+7*4$ znH$H_Qw|XPV%`^N_%>Q(%RCX|D)56&VGf+2_kIV~^f~YDR@!+jk;;P`1eXdW51$f> z-^N+|6aV01A)H19HO`_$FI$w^tmP%+T<4i>K-xJK547CV-O-X4s%dZZY}4eT<-JSF zU8a+H`eOi>_JI9878A9CgP zhIsW^EoPdm3KI{5<4`}1>*pxs>(LSly5loxm0rJOz5o@;D<+20@ zamnJLqylF`%)y%9xqnfKT=i}Q&0CFJz8Sszz|f38{H(-9Rf8%n?X ztnJ~LNhg4ygGpdCPwr-8kx0;6w$Z4&WLytu4;!6K-^`+gyw7dD?;$;Hn8XBITnJSc zeh>pP`HSy2nMODEn+X0%P|ko)acEow(^uOmP%bxF$WIo-*ndAQev0z6{EChlLWwoB2ip zb&Jw@BC^s4Jfn9aT>(Lk)82OVw4sS!suYHk8zN|<5&s_0 za|g^HHXd5r=65t1QWY=GjnWREc1Ge&e^8i$fP^OjpPxa=(jO?g_{P!R)d{5 z>jh%|1#pcsqQHd+QzZcK7t&3eJPpw9pciyz$-Y)OH1?p-U>>;(TF#T7bN6k{1}hIl zYU^|gSR7yFkn60mar*2!z~*6!uBMqq-RbENCNM%)x0gz-`gN&&T(;%y7#2LGpi7lF z#6bNwdeCJ97~Qc7yY5T*1Mtwuvu&b%VGMrRPAfb!pqR~+eTPHc(Y@O`ka;>|^nKvO zF{M}Hv6R6WFFaHX5gcS9nQ)E~h0#BH$YttWn|j6MaoI^B!xfF3Snl3drX;a3_;?ge zqtIn0kDDR#x_{(az%KQ@>W2< zvf(o10(cJr^mh0>7@dbfKATKidm zicf_zY40i1!1gln1l;5X($v|@;^{k;;55v-cI2%`Xcs8$EEy(1u%smKo_5Ns_rkrR z8Mx?r3@|d0ng}{GqzOp0(3>$HBXW1H?m|0YE7PVD z58?%2CV{7L|2KNGZ~CfGs)87_nYiKZ+J0%_1r|;jUA+({DsrkYtw8Z523C6Xdm+K} zj_hjy#a!nJH$*Siu(9p|8wF4n0~L7LAXR1QdvBloBIK~Z;KD1w^zrLq_oFG!)n~Fg zsKTZnTJTL8G&0KQ06q#__C^TvJQ%Jjr_QKmeL_tq%{g+S-|aZJPpKBSV5yJh^~P(D zwS6wAYo;r{Vs%=7WZldkR+p^B5}b~-XAd`dNy0v>mouFKP8GL2{9zzJgF}r%%6AEgkVzix@q_BuBV1p=E7n)$-VuT|T0nQjixy0phUNF$vYNxx0_ zQQpPvr5>)8tHRx-B-O_ZQA|Fgm!fQuz(T=@(LNfC-?}ExhPo9b^SA(Okx5mD88) zo!&?9YX{_p>`9IIX?5_1R<@gbH}<}AQOf7Y1k~bCz)0xv4e5QVrauC&j{5VQyL3cgO;yl{wJjTBjfKH~%Vu=*yPR%5Hh2A}K% ztC4!~{vWMxvfx?gyUMI`*QS?7o}r22#M!SD@sJ_FZQvo?#VkCWDcra=^~Iy}MIl%e zpD~jXMeY&@$LtJc>`__XF{a=ihU7~{t`EI70H{K$3VyF{9!B6n~@YfY4aD)4y%Uk>Jb`}dmq z|DQtZWgzNOlU6`R2nUsIb_gB=I46e#D0Ri5Qn*eG(#+0d6EY^5XCg*rkza$&ju$5I?m(4qZ`3|({TT0jKOa<(K)y*rtc4m-NpT@pjnn8hiu9l*Jbzize1jXzqL88G?J~<>E*o;-5aoGXDm`c*!0;tTSXXRtI8R^wojkk&{1O6fTtfnR3Y~f^H%SbBp#r=?B&eLy z50(@o=|)%8IQXy<{EeSNU!XwCZEe)X!lN5ks>us^clH!zQxRm#K-m+kIG!aPtx-O# z^K!+mE6Ct&hA^6duUV#-sUxH0hDZ)|Rys@ABgn(grtVGb0%^?j5EP7PP#D%zwr8kPo4bEkpyv@|>^mKJnCn^M=-bUMqV9 zNd*|wy|vX_&?LAQkQyBw6__xy5hFyDpl{$zvzl1cQXJ`A&g$Mc=}9|aNQy=ly)q%? zzKf;&^`_u%KS}C!dw?&TF_R<$1ep-jWxjRMR}@ItGPG58TTtUSRn@^IxDwPMinn35 zRKFAxt?*Nm?*MhD6HkBvA0Ro5Fpa7qvSUPEYBm(c!?A@#nGz7c&oS9Qs z{^8)`vLH#OXM4u%FX+VgjAnlaXmSzny=pnNwzk;h0cr~d;)hJ+W;)3}tgqGu)Qc?G z7kYM?Y+ATnwlBYM#_lw)HqR!kO2@}o&LeN3fUxDz@1|;w`vubPTq}V#UpzzM zt}yUs$Yuh3iEZ&<=peG2vQdJ})2(Bl+-;hEd`D?@M6V!AZ6DzZIpM};J3Clr)mIs* z0}Q%Z70GtaTsCD1xh6U|lbDlI(E`$#?juB^&_B&{wcFSSC{*KG5?~U&|X z8wEey3&GSKMFC>Z9<^nu)@JFld=PjgmCaX!Wu4N+*fa&|E>Oxg zz^)$RUoZ}?cDt9xk9wA1c$_qAGQm?<`vs$LFJ z!Pg3OK&RkoGr5O1yJZr z84);)Q1x187>(uKgSu5!@DY90=>hmRW0vkKr}6_jHE2JXcC?lNUqGP0@A%46D|Z7G zO$w4QLQ}enaY^izvaTb0Y;muRB>-1u9RA|%OnnYJPQ@`krS6Nnb5gWzF38U$`5IE; zIT?o~-)%}{qrD|z7pm;FA2ykaNyl|u3>qNxm=Yy->NTNhv;+Brs6CjBIhURbl$N4x zlnNuIL*b|ZMwRwtxbS}57mNiM{DWSoGTDK7^TGqxFx6ydmEGjlQ;*@NIYmrpQf zt@&laF`9Qq^UP7HVdGDG$JgFSo8w+3-8ae1FGkrUb=qKSw*{P!J32<;! zd(MC#_$iduQg?a=It{)lrHw|DRThS*%?vi3xU1GT@<^&s9$|^>Wntu`IA^`!uq*p^ zHrLRw+k(Z(;w0K*Qt+f@(cTipnLX-Y|DNpTKz^wHU zQumUzUO1j(0&+XX^~xE+ip4W1u+T%o+%KNcO!JM~rOngc8ad zCkJk|q%1~jcbHdJoA4;F(uUMY!v#txK?Vlsz0Qvf?rgA)4sm{f5jrhGjtQU-3M@>#Bf#2uNqP2DaW^>s5MZ>lrm%+kyWF>!-0)J^89eMq(_0tzErveE z&*6#TPH`H|?1Ab1lwN`zV6BzFGUl7Xs1Mr{+@R4|&);6hS|MI_)cg3*bJcVBqw_}N z1g+4rvnR}6#(x^b+9_D|mdL94E%XyPHD}t(eM+IjO})q<06qOUH!7iH%2jRw9pctW zk)$4hiFPU2n!nupcqR*7{-NrdR)rc|HEKI)j7NvejBO~pRILWikPY*OO{-$?L?;t= z{YBIzaYMiY#`_k-9Ek~ws@{9ql*lKG@HP6JrHoyz)LHpId>lPbC;3#TyAh{|UQh=B zY4A2XB|ac3QhM|7(*cxWz$*KB?gukokUagOBW&D3>Uu6GULmB4k=&BzLzhij`}U9n zcgAP^jn4wExB^-cT;d_sPdv=~`&7#j!>;<^h|yDXXg-D8A}B#zYWovdrq#|}%TFOn zk(VJKv)n2pZrk0moi_?3TU1Z)YdDMe-*_&7pV+;+RNR9)G4^b()4>On1+SEt0dwhs z3^Zt5yL8GC?|gTFyiP?5YIsLjHyBqPRPnLy8`t2#0?+;)HI(Lw47WC42pL4CJ2>;I z%%g|d$^(1WHF$LMo6a$tQHI}7*sDRajL!h=S~}Lb2IBf-&H58K_S5C{tjf-{2y2E} z#q@P`F|#H08RdnLOM*!BA+^+&=MLK-2uR_&vaaG41(en{S1FFM9C>Q*&287d=>K$n zuBmrOMuEl)Q+1E)p3X9cf#xMqZ9h~z@ zOTviGCuK{u3&3I!ZL50`zhFOv$J_(}T1s$h7?_B7)UoryS<-QPq15FJcj0NrEfpu{ zWy5qgumfwQP%lXeyJP4!lNZH)6O`%*ohRjry#PiND^=wmKdG!hjlJY9kwjI}i@Mil z#<_tmULbX8Vq?>bakq0jXW3QY#Yf32#({M0O%ww@$$Ev3@?KLcL3QD1f#ENZaq2T} z<$Os{5yqNxK#U>HT6I%{9S!_Z_c}>K_Dz4X17JhZQ|U}=dGNHB=rYS>C@{TF%skDB zlz|%HW(}3BQDlFRnr7<~iL!eW_$}$;2~d{x3_0xVr705?)=teCdGQV)=+ojGJFUR;)2rpbZhuZraL^yL$fE1V-n%kUw{I$t=T+mVuYF~;aYTkm|5%%hM!|uzGVK%vOa68cld+32XZ?)1i$DE&Gr_!`9 zsLN|Z1q&}h7u@tlxSePfDahA;%hP!}0PA$P0UU8>RBpFsilEa)SuI>982?J!ExPib z1$9iV(qY=*onxuO6O5=x-dZnH+9P)#3lyC#fabO-J4RavjWLkiXCrTQExWz!&Xy?3 z_~43C{nlQ6;1))jt8-V25cLhP*8z<1@i7MDedK@&ykd%Nx0pmW#q-?rxe}HXCEHhCPh!Iq<9FLdC=BG~9j`e2KMQro5m_ zB&N+G+UCo+;j?n=x+CQ>H(z{&+92NKeC`BzRqdN1DsbgFmOOFyg=Mv^NC%@H41D6; z*<^;bEf}q#VA7!}%i3dwBlL?H5NoNu*AGL?AtRukDiZB}YJ06h0N`yV@~}>si+st6 zrA0S9dx(~dTTr^bc_g=aq@%@h4I}Vy72l%lk?&Ait0WOL95i{m+{sz(355Bq847Vl zsIsosQ-%LVeUII?qSg~x$4Y7shZ|OQk2`Ax?gz8Mn+{YnRvT7Ou& zgf-ZWEpnudx5L7uWULE!zTC!YH)a`n31rPI58~a3Q6^LWH~L(ct|s(k(o0q3vS3M) z!~0}Ohip9hNm`}oUrM9YcWS!6Z6P)OpeDjgOKzk0Ifk-04UVBq(KxDB1&!0FQSW+t zT>$DH-?43Ao^V;tCcrOw?gc{&T48RMfX4o*l`Xy>JEt*mm)unPaT#eM*4`7l1!U;~ zupIzD$8)EhJ;&e(%8!tpyLv&W{)UuCFOmt%lW9yfrY%o&%zDutN>eU%$T?Jn~!m*6aH6R9=glU#)K??D#ku)OF+-hr0k%hB}CmjJ3z+Rj=-W{q#kvI9pIPBPHZ`2rhMcKJCa9 z79&AtjxTe$j54994X#rvR_h>Hab6ocS-_XJS@U}9IL8?&)bxHA41!jQxrPV-v?u>k=UnPc29NB~driPVEUooC@k@l14cfj}naX~49&l&g zypGBb&PFU&HF&tWt}G5#O>38U-CA9M=BY*tbB%0tDcg>*1s?@7JHFZc-qG!yfu{zY zcE63g$6|XfbC2ge8vHHy$w@GHEoa6m^b2e4V~pUDwzro;=Y3H~3rcb4s@h<8C-4Bt(-vajfvzKzN+q#a{y(Q^=|Pc^`%8i! zrx+#Ha&R7qZ#Tu6v0TolP4DKJL%wsH7*Hg~w>OyK?%?UJ_emN_!QXj2+LT@k75}V5 zB^X#AV)KMR^C62Wt&r0gq={^P7rvM@VB_ErkLql4t)=D3!3jr56&X8RhcG3pyg}Eg z<@Iuq#?(jI^2_F68%s^#5o6a{l%?JC>4sd8irubj4EBW&)CQIYK2E9Ip2Ffh)u4`+ z$~nK;Dr2rrF!jh~UYe^;*#&u8!r34Ge)6$g zmREru@|SIno0+3te+rA_Z&seIxyWL@$YOtt#8@=2Dsq^k%wSO&uQTuF!O1oX;rPpN zH>?16$sTBiT7#=;41EFhpQa19CmN4lmlM=9wx;zy5;6dd@OM4yyo=)AL9hQH9EBc| z3_H-K^vBFtT)3w{bOqITKE<`M&|m-skiSQY)U)b)-SB{(0b9;D6Epr?KHusr{rRlr zt~?XuK=ulwSeZQ?cz%M1NRf2d0bW!ev<%Z2hC;V@o83=K&S-QD(bnhX5Y1iJ_RvSA zWrU9o1rMufD+AQmWYkd}*>J4`DMMjrh$xvuI4~`?@h4rkw3$IzeGaG0595oD5V0`7 z$fbKy073BmIt-etB1t=po*y!swjxiX?p)*zg&r)?;g3{wDb;c6$_@aw6F=`Q#`}Rk zbQ$S*!$fwmHrLf`KeF1mwgN6M7_V3{O>=TN#Tm8Sitd6@SsB4AXLmbHLTVGbaj=8$ zLq^?^$;OL}8Ty3q?f6;F&31JaQrbdcW0u)?y8t`1@g%F%P5WV6Qyahfh-yVwn`JIh zlT|7u-~C!M5SiOk<+QW3?ua+Tc_uLip`z!h_QoU#kuuDwiOht3p6Z>@viEd1Z&&B?9uu1TM5 zS<4+f{gRg;usTztu)9cWgW8^0H1*)zVD=KEk!Ce1)3?3F(E2*U>{~2n7c;|&SnV(oEx7mWETnA|OLwewWh51M zj0zhx#NC-R5R1z^Pz&dT!ga`l^Yz_46&ImpiTwl+6cbwAwfobV+)^o;uSS~xj<{vl z#}l!qT4(5WaB4Y2br$c?`u(>NyMjp;ZS(2L=8*bo~VU6al(qi z_Iolr?+E0)N^pV|ZZ+zc%+4Fj7Rx;c%MZYHvzAb#mS8(bW>Lc%+rg~Cavpi9pi7@z zT&8S!dg_`8LOq(v^CT89dZh4CS`M2}sm+$O9fc6LU`oa<3abD#G$w-0oeHl9&uWsZ zV8>5yAbR+J7USSuPyBQY}EMdM;PP;>eh65HC@(cYT7x-S(xRjIvX@xw!eTORzm>xL$ zsOMoR?&F(Pc7L+_acF&M8ya;~le)$}G$`2ofOe`rAX7*?wDrf~6nZ~(*17fZno?^l zBL&$oM4Qhscjt}IjP(FYMIE*0V(51a0H`amyE&&_%Cgii=b|+XW#|eX7n?zW3_*Yp z#^<{{8rgE36omh+%6wUt8sG{8XSeJ`Erjjv06sfvw|i`)rM*DaYtJK(a0G}7+{<1& zU7E3oKZ?gYuD=!cAifw7G&{l!AJajRY(o;6Z7=pN?55zX5R#ge4O;~+Q77_}Mdh5| zA~mDI))U7F-_1{!nUN$oqpjPFND_7x&!&@zNaPFF?^uum9J2kMOdxaxzxuVx^*ej~ z#!um`9S+SkmP!qX>$|{?dU+_G3i%-H%nk&lGfy0C!q3%R1(Vd>6cOwYaK2ggzD+9E zzD1^D^ETk+>xu7}?R*;ozOgU_`i`&qs0^jHmfUA(nsvx7SugtuDhWzgu>A6s6XvL$Hn}F~(w*5H zCzR|BYj~lwo!a*_pXdgWH7sq(dG{ExSSJjoBDLZ?#MKmZpWga%$a!w@hBe-O9KPR_ zJn*}izL#~em0gVs+|&k!GA_zpEifMW;l_=TIKOWi(MryZktG1?HDutFQb>R`wLwBA z27jek_{Pg^%l6X|vlGzcJQP_(AwmCGpKC-%?8Hj9xd*xO$ruvIduF#~b(|R|zJ7JyfwrFcZ*U>|kO#nF&p=dIq4ZKNK zP(c-)pr<>)FasM*6M!ib`7}60wOA4>(j|p~L{M(T5BUyJYaqz7j z`kW2~4qPU$G9X>KVDRx(<2bsd+@j@zK#j%NVe#dZ#-U~GBg=?=kK}{Jz(^^$?U!-m zP0s~^zne!LI#D!SIrsU*y$XeS_< z348MnXECtNOYP9yv3IaPgXF`)Y>|Y+#(V&G9MWA*4I2c*#6&892@W=r^{NgCx%=fr_=GL6JdsM>kZ5Jp@mPjKSFrC9cUA5RL__S_s18e)61@ho&-_jq>Sk3 zV6H@O>`>t=@>v*o)E~B{ks8nv>x_CZe1R`PDAT2WHskb*SxuL*7&@gPe?HzqfnNAG z&aXJG8E4#yYxF4eYWR9M@cKM*C^*CZroYMDF-q;1wAq-IU%|==EfE@IQGoRuXk=z3 z)(5QHiD;~+3htORC%NKS>DMMfoz=4(884;^&WQ+w)`jgl=L-ty1|C7qyuR$~4-ijD zh>d6TMyDi6)S7R|eYw4f&&~>Ra%~F|)9|vn*R~bH6Pe9b3aFGI>lLTgYsLW};>_c{ z#$9Ry*B7(%s^%U#NsY>QD-jHg@ziBRW=xoL*Ivr|QI~p&aHq~~5IAiv?ZoCKEA3TfR(FhgHPQs{!F9Sw(3K>a9s zmzCiQ=E&}`gi8iWHj$`zqJO9{Hm`2S4cRZ1FxV5ytN!xg#uNyV=Z-~cHF!%SDx{0P z8iHJ&3xs~#vDM2W4okJ2yghHJ43MX!KyRDxx^V2#JJVl_M>4evx9Q`ps|dZ)I|g(d zu-EOh;N#@^SR&x%p-+^P)G*HGvi)9DZMl=*5n}swI@RSlN)e^!6q<(2Ee1hHCk?SW}pUP5#XUm`H#GAIqD4qT_0%@45En zhgKx^DR$0%_Xq$u;+|4xTZI|k)ao=%ZYo=E{uf%=*3C)Lt=jmf!jE)N@`EER1$%?1 z-q{CqiwEN7q~Q~P0?otOMVHTTyP^|L5q??D3%+4CZ(qdhX$xyXv3=GZ5c}c16FOr= z4^p|}5Ct%5!yqNn<|!>$@hyJU4Xe!QG~;V$Oo#f*uP8{+OIE3+sOn(^e(y{A)xw6< z=hG$KRn{}n(eLz4s2fXW>t4n#8Pp7YZGvV6XmKQH;{&t0pNSq0;|DZxxQ4eX#%RfxH)|sdyM^9dP&Dq2%!zH;9?T0;DkD>6K$|O4P75C>cl{t<+0M zoAwtmv=)4!mG?0kRXL?h1S(cptK3DEa*-dI%3w<|`0!{ty6UjT6^men4TwHl%V_mh zPC+mXKg=EDr2q;iqwX?kVM5 zc%cj)Vh;!YgcFnqw^N z$d~bv*yx`a^Our)rIp<|U)tK*#JatZEQRo_Ic81@e~eSg?SsqD!Gd=3$s1t!U08;= zl2CSy1sHq)z@~R0ST@Yf7B+#SmCHyY_R$#sv-}3^E5;LNR&Nwh%6O|t20;OC7$xwt zrf?|$uu;hTlYrz)DMS=vij36)K~YK)*Q9@lsXIp6JbuC$r_XT#YbYe|vEpsU=$6C6 z>U~YSjm9^lxKeF6+Z=SU$#Ko^>k1(?uCp9I)(^Ca3UZNWQj%AfPD5?!Dt`Uk99M(| z9Q)(7&z$LTVnR+PxKEp=T%NrIxmRyUCr&BgGq7zokpF@aIM8-YAZJnt6LZ5q&mU2q zN)Cfi9;?OkUh;OP$540_%T<1n*DJZpCP3Bry(T#E*?4P87@zchLxF&24aFmY+eWi@ku`v<_#pk?vXJr7m6<&>m_IFMp)LM=WmyQRAt4igH z%85}Pc(ym`{&|N4O|Py$VX;-q)A2d>6X+2A@!04zew}M^8tWHAN%Z zdsxvDge}RiP~mz_2y?sN3p?SSvyl?0;lGlx%aPUhJqtOJ)94-aU=G&^(*sP3RD1_x z{qB_eb~3680E{P+VgM*N5aF6$+*DHD#N~#U9xG5opPnmt>nzZU)oidqJnhsXK14B= zLI;`s3dU7n*24}j@4G+TZNK+51Kw&H2K}D>g3g$Z&uwj17zDYI>mdHRz*>4!XUNNF z8Td1we+Gz*MqArZ?*;^`Ml_f0UAC@CWh`cg;qd4rM0Gc$hVx8I*YRmPQtQjb)9*YM zMQkm`1>G9mn>^<{=6eHP`8rjkeJ{#*w79k8jU7GTgQyvs#La)VrSIy*na>VscUBh& zTBWP=Ns+=Jj;nuF8yXm&kL>X0u2U zHhUWK+wa{`Hb1Qb^N;}8sS|c)xxV>XU0kf~@^jQ&2CTuLb&`yH<4URT(d+Mo%^K&6 z(-Go~hq7a2KDA_1qFuxdvPQ;sb|xCmtuPy`y*NFViLq_!>F?r=9Ky$P9M5iJyq2M& zbxK1|3?|YwPaU*AZw%_ai?CB~{2oAoUIzT((DH~0akinbSKi(@R|awMWPSkPL^j+L zazR}l4MNO)kg>mRt06PJX;f)WSsBnfwe+Hj^NYV4dlDJSqhJs2gtlu8g5`iAhTLRS zmlw#c>DShU0lr?XbQ`K)Y|fOIJ98qSEGVl0oZeNg47E2Q^xRQ*4 zh(EoB+*xOz13d`Es8R^w;0I&}u(ZeP951Cldf6S$E=T{yXnwXubxn-(^m@yQh7hql zj^ZL|cGSC_;H}>A)~Ow@$8Cwdqv!^i$Yh!Vl?CT?-M3eab?KT%EHySnCbvBmJCDm(FP-&S-E)@aLj2~Q z_0E303_-QXeZdUc+m>?I3SLaaBJs$abgR%1-!^6#tHALp6)j`N%tVAQ7TE)w-33{A)_6VkB*k=}*-Z#m$ zC84%$rlx%q8L$nVE85F!Y*Um0i<9PC{G%YisLPcD+>yWjVCOF+_j_L{bSrCQZwfk{ zulukkwB250w8@-ENK6{rATKFmA?KX!;6sMB#5{g>hj)#>HruZG3(zSi= zV@7Tl>OP5-;O1dmfKm}c`3pYV%=W5coZ;~8wO!vU9mcB<#k?tRGn7nQO}7du+s1wy zmMnwla*@Z#>cW?I;@MnsyLZHbRPUc0@io0UmW0GH4D{Hw@h9W|#OBgXb#<7HvX7SJ zLI1!{;b4+}BWL{84S1xIJyD3gjk5dnLl3(QL{Z0hh2pz>SVL;yKOj?z78kP*PXR|B z4u7UT-SX{;XWRHqZyCj!oSi4X|BET>3ega8#W7=*s zOKH&!g7MtO_d%!To&EXk=ZZb9-Xz%gavvX9PWzu(oiHf{v~pF8M9mHze$VBPEcHYN zHh_i5CQGo$CqLW+4kiPF;}ha;ebj8f>?BkafMS4i1lQ$)=V+ai)I}G#I1MUj#LIXc zKTVNIZKkd!v*d=3vw(34E#tv(4{3fFD&{YC9gOu8|7;Wdevu?ri1dh+z?-fBXw_iQ zPRiahvr@%sw7!=#SOBdYo5m)_So2Oo3EZ~wa?c@d07uOSX+Y=lg$H+VAz2UbhAl2& zm~b02fx~l6_o)`>ifD2ryn#0+b)c3@Ue|*J8<)mO7hxIZ(BMyPodG7@q#XJUMRM7g z3_^qHWnyYa#&}22YMTP@-j-Ndg%&Og(Xp7Pj}xPIC2o?%nmW!I$6A}CTlneL?OjIN zvkFI_;1>gWdulEGhWs~j(B-}her25*P{SrN7p`)%9}>sqzQX+w75T20mZ%>)bsm21 z#VF}E@P2&$7r^);g_VjNevhn4nbQE*(JUf!N9w>?ZE9<2?**C-gk#b)*`qtP`3{+w zhWa$%jhuS3mQR}MxPhiw^(js0VpFgzZtz=-;ACx%Do|RLBN+ihQG-9LzClT_3_<() zb|(F1u!0PL_MltUMZhiY!hIPlOSzOSVZ^gLJlb@YB9luVrP4O3oM|4-5r7CeJ}g{Q z6%g`T@DAQRt1r0o3r+=XJ9fb8?Kgf3oEVa>Bcdu)l#2DSZTcHUSn{F9J}mO?+(!zrEjbpRn5uBk(y zoF%ORcs&z|`{|I$R%7mI_ffpNyFl>HQS(Se=IC1?;2YRiu$&~Jld^R$n!x3G2n`BY zG1{W{13qjZMx8ef_UgLo?!57%jB~c0aXH59ICgjFM5wHX=@^(>B=mR7+f%-s_2bjC ztNY6!z=fYp3H~v_Pvx2;ipsS9rIK*2&9~`^zzZ#TEjb6Q?$)6W+*fo@pO*Ooh2-` z7-{T7#BA5Ci@;6M+t>^7CcF!J`%?nZL&&0{UQDcDzf{HVyvrGWQZKf*dKPLZn!T+i zyDx`o+Q~&hs`qDb{%9F77PtoP0nYSNwMFxj_{*uVr2zY6XnX}F2fzIM;EY^5xi&|s zyKAsUt1H%&GGX%IS>unk_-RK+9yMOQsf>HtXxMdZSx@(-?6a*Q>L410+ad{PhkZ|22)q zYGtxK7x3B-3P_*$-JZ5O(f$}YRf?UER6smHg=ULuXbcYNcETn>Avc1$tpb$}G=BKG zzLiL44GOCf9|7QI!7rhr3(;@M(_)VY+=?CJ>P>wwksY=KHK*&V!cuol;VcB73%-H0 zu{KD&wG$<8cAe!jWbPLf0q)_^ltVk7rkH|9DU*89))fp^tKpGCOA1*^efEtedrY|u zDaRyIz|)`G{{%5UuyCNYU+H1n>VTGX^L_JeR^DLrW+jNHc&^PakJcvLs+@PccU~2y z+YSsxsGJL)B{x&66;a_K^E%jxE$DuytU182bt=uJ1!Th^fX#%r=y<5NCKvXFT?IN= zP5ra?mxuTQWFgj`4W}NxZK|6wHdH<$R7XieN%1oAi4S*KpdDn9q^EXy;G885mKZHE zkbUsU5|`2!sw3Cy$jorXU{>}; zQ5L_RKZuw#HnYqqIv~4VHkXill?xkj;KxX;S+o;paQ<;))eOxD)Y|oa>4*%-=I+l^2Lh|yw)Uc!}Yc_4hei!DlO9J=)aiclHWj0e3I-s21_t#Rt0kSx^JZZtZ&q2Qk5!+0U@J? zAzL#oPh%_;Cp;0Mv1ww62kD?O_(n>G>vd2E{hQ@J#57lc2KW{+2kV(=)9%QkvS_RlN*-T zTGl((3__5xAZulLTWzv!qi7!c4r`E$AI?=L#IWYY1&j)cWG8OCN{DpI;uBa^CSOW# zLl(hGULx3`sGUJbM$HiWsQbHV%Aw4BLqGfkIOM@_Hr)^M!13LF-$RFxeb^m zIAq#sPj`2sSd+nDKRQcIIw)M^HpH`dGJ!nzRDm5ycS5l5_n+4nud$j&H-TGy>YknoXN$K$N$H4ES>@blhZI;StND5B0s#gFr7Th$7y%#t&=r&& zUSC$VS4Cp+y5_>TUB0^1oUO5~ePsJOy}G_>`y~=_6dh87+y5?ibRc)>3VeJNZS+R#j48_rc7xzits`W)uw)J?lw1 z`wD_?qHOh^Jt8@ATBlUO6^Tq6mKtgcC&ADZb)SbB&)GWk)r149;xBTZ3$HJ>lT(=`Kr|}JAwU2cAp)=(-xW1iMV&(&1AR%0Zc#|b&x@f8^r}6Td7k|8Bwu6 zm1uBmAxAdGnGlZac#J-$tfviCUv;A7wamiwiz7cp?{WDslWFC4F8o zT77$@T}bch08 zvyUMV<3;OTRrVyaUd%gJiXZku|o>1-#$leoNf*v6dtH_xd~3M#$(;eIf|aELB#Rk#lX4M7vWVT>EwrfBx=^yT@ zytVs1bWFH{U|p;`&J=I3CHXZ$7^fZ&y1fLMhQpv9R5lGAtz^ZX;ox2}9RgHpj{NLk z9k_Sr7!tGkbI{Tx@#g4(udBQ}jA=q-)M709%w7tE5-4!@5nrY%dyx!p(m3_*0{F?N zP6pCAYFKH(B%&-(H_7b##c4?RI*Jf3P(1G6D&7JQ`qLFn8UOocDlXcg5&?`^lggM6>IcZr`5Jjc_b{H_tDfFy1k8hh(*@k;Q4DsozzpTBgc!!T$8umfRS0+8+%Q< z;v*++PT)qmQ>c-H4f4uectPuYl{iBvq#=m^y|}>(m1hLuIU}Q#ZWW~ITL9}XPEZ=l zpr2c>My+PYyq+kOjcT@YoVBxq3S1ITxfCwIUku_#E001ynz@JLYw)t>s$JKG8c332 zGNJU@TF84+h5vjh+zY^63D3n@8y~Nceiab2#Zw&IQ=bCTkD`R;Zc6Xb#o6>t#O=%^ zAg6&^U+2=dLwCzLwU3i>Vs)5JEPh`RZR)z=CmqnJLaF-F8Mrl7dX3G@Lm5sUw^o_w zVv3}C;-l$TZ0!eXYd0433pCr!FoNU?1$~&W-*V;%?nwrdh+u8KNU~k|s=?hJ7 z<>TYK;osBybi=0c-2Q8UKw5kae>=dINX_{IO<*5a(1Z_y(wCon@WG>MhjN>NgtIy_ zZ07Ss)BE7NnD5DV2P4J%;J}+movs(qWLA|?4lij%lwSIQ(26T#fwHok(Kpr4bcep_Z==Wlni7yR40J z28S#ZqYk}a8KFk}#!mqtk(Na)35uveNNoWOA{ky*4~6ly#Hk2z6o)BRM9!dVwDW-d zPL8B%VDip$o*v0(H;WfwF&l8^UzX=LK51RwF64Hv%|Kv5AO_j zvx6%Eo>E>mMnCxRn4(O~EBjD|?p{brTW9|Z;|W#LP4**RuiyA1R3c>sn=lOx2bNHS z(i(}Lc?R7t7QG~dkz;v%Q5(clG&U8xa|1ExDGZ{YUMV@Od0Dfy%4^w zYi$KXVOd(zri@wl)Ke+`j3u!KrS^7!gfQ9%0=SLt-vPGlsQ6Ys#>WO)?S~*Rr0-3@ zj=HBZlIsE;w@-qvHG<^dan7I1zb)m;u;Cce0Y7u&j9wX3R5V-Rq_@4mqOHIRI)$2B z-Itvj{n^dA3-?#CSwdm{a#`A-)!krWd<6qW#+h zTk7oxm74ZKq8wZ`uc9`smnq6a_%BGZKf7JGL*hDjP@VB?;;C;=+3Pieh5qwQ= zql+H0+pjA>{9uriO=K3Q#f$hL9WWZ53Cx2Pwgu$L%)aWVe%6p$p=*-#Cp-oxz)+TM zAV)Ny%bbm(nbVyh<9{W`FJB=MFg zC>k8l+>i?SAwQ>J1yG4VV75wcZ*26^(;;Jm{v|#@zSEu zGcHGKGc^b`NSOPzxucVS=bAcrh;RdJaXL^O;E9lS`inMq%Q(%tw3fnJygogT(K}D3 zow;SZ*EV7NvMymR^Aml%0VZOxE$*=qB!T}#Tfj#8xpm++L`KY)e9Rn>NEXvrr4no0J2swb&a4FTMyI?Hg=%gIZ|<4f4E0 zn!Yns-q-78^nl(1zSJsATU^_K3Nf* z)HMy3{klo@o5eZNDc81WDvvxhLdcbajqAMZT?oIe!5piT{+dXKp`h@$s2SazM8j*U zun0pxsd+Brb-3|{t{ealIkOdMg}Y}A3Ktai^EP+{0t@Up6J`DbtDT2Rp`BExKGx|Jg4!<-2$T*{0 zAm58ql@6p{rhYHf?j4G=a}Bt!^r_5te@cWshGO5w8^vAS7Kx>F7wELPh1C6gR+3s} z&fOqdI?pbzX^MDpM!gI7#Vi;6>xR)q$$#*8EjkZNNyb@&rUjNzrq`%wF#M1u1^a`~ zx!1mH7P1Qx`^MFD72BIn_Sd1~iMro;IqB@f)^z$1#p|*g9b&QJ!pvqzzD0Nci>%=rCS|F%H zBup8pe?Vl3(<9ix!*QIKepc=wBaA3opEOni>Q3vK>K(MUq+wToXTXx)f|uu#-^@46 zi{E%tZbru5%V7-D5AZWY73(0@5XO7soh+>hL=b7`0oc6rvW&DbW|DlU74vT zz5)aV3tjTAbSO2=chht5yz{YcX?Q1FY)oz82eqlBYwFW~3{HI)yXDsbbZc+l@irAM9RsaLNO3yD2!*n!;1E%Pdf{ zb;QVz;@wK5Z{)!$e-Y(6r;{4T=#Ehm9koKtRYKommsK_)X6cW>5y{smTxWnIqmEnT zK&DUt}QMjb8`EkpsHnAC9n+-PlZHEy;DOz%DkC%wyPh&^MYLS~BZ_iJc z8ncpeQoWnb>791xq?@&Cem$XJVsT?ki@q1FFB?S?7sf@O)Snc-cNeZ^8*;`-mRqT? z@uaWWM&;_vrE9~BM;*>SUeiNId#4G#`N~m+nw&bnu!>vz@Oe!eEYjglz9uGFz`?58 z$)a&L=hDOLxil2VrB(CRpf7Wp(dP7%J6Ad|X}c40KL`LhH9eX6m`!XNHdx=nFh&`N zP6Ghe+`Lqd0r&9MxbqlPEX`uWBK3DcC()TPw9;`3XR4#XiC^Qe!rYa4EU7b~YWxZJ z(!_`LbFUrqUiwjV7=#rmlb>}Fxbf=g!iS=g!GD!a_1^GUATew~#|$X-(ccJ(9!W?# zT(<=qf^K5Ea?iLKXApP>L8~0j08dBGP#UAiBCVo9Jd}veHI)NHM6O>vom^^U5!NwN zyoxth=CBN8``KrD-EY8|r<-=(TZDYb`Pgan8H25{9_m#=5)O6OZ}cNXd1LTeVdG)t z0Xsk5kg`v#HJJ0@I!3`>^*rCJvxLgwu}F_(@r7=e7fmYwY^g2GV+5*sr}Bk`#d>Z( z;}-C1C)+S3e+p0v^p0{%?T6V#IQv@>fkhLq(QJ|VHD5dCQw+!aU6#jwg4~e)dYPpo zx6?k=iEOY?v0+8P7F6EM18i$o)?TcwW`Wql$I;lCapA|jyV;2`8gYf6rWR4R0-|9!*dSc5+cUTU=M{*5L>X( z0}oVKXcHp+8+1--c;Ci0fCvsl_44_+2&p4Fp7nZ1pxjAEzLN@zrRSc7{$r6Pf1oGA z3J6&CPHYO-=n4LZfwvnrXYcn`e6HJ_>gvj4Kaave5vQFs>emT%j?$;?(uLBdye2xe zy(`N|5^$${8wz3<>RiRd3&B*YtjEH7J5rrE>UNQX{`u}1LR-EBD|QDAqHMTvR|K1P z=5RcN2e5oDHgk;oI<>}L;4W}Jc)O6qPo0T#Pky8n9vRVBNT4=>3-TCK-}C9p=<{Z- zw`}l8O2^8$a9e3RtlNmbItYXV74eZ`c#uo>C17<9O`Nq$Ev1rp21eDUXR9=+ld$(u zjm%XL&hawZblPX_vF0nQz%HJZZwW><#StxW!2 z!J2<|dV%{rXk~0?l1_8-T$X&B0^PAHEW;efG$>qHX)@4O5bsHbwY640pzXZHR-dmA z>^xe(MCFdZ#vTvTTbWjZQy$-P`bx|nk!j4!K8pu5pU=%KblBaOw_Kp_h@G6$*U=)q zUVuwbHkm@r@i_D3o=74E&dir}&v!3H-Q8{B7cbeLT|r+m4dqO^)n$(pW#)+FeP_ol z!Kk^-WGt9gJ_RpyY~o323*n0i{IQ+0=ycg2hI<->tsK3!T|wak>{ACWnvR2z zQljp&Lv<!_ zj1v{caP#_EJ<4Sh#jR-&;#h`?DA#j`*yD59h(@h3A!;Sw(02+{B0q8{y>Kq=3#w>a zz<-h@pZVI0nM{ohBx;()nz<$W?#{6()EVuu0LtI%uAn+G3%1UOu%0@3dYHYP{|zPA z<{h*g-GogggD(4o{ciP=30Rv*zo2wyC%#k)#2!U!O8KHpobV)NULC!9Co!UH%V1a*_RNAx{1nAz*wwlA|Qps~JNfPNuDL8!@Ub?|Mw! z^EF2t%nXG>6K0-Hlk*&)D8muI-mPAD5ij*ojTOVW)~Zu#Zx{MGKz!u!O5zktFzXdxDj->)p&{lajJ2Gx#Eap%HcA~dkZJ_CJP+07Rs z&4XgF0!!&!-45*AGob~kv9@?J0kIZu+0~<|4LFe?kNi; zh+vlRG(^r2*|bQCV=+`{s_eK zwx1_fs@vCPl zOLBns`zvd`erzOAj+ob4DFl4Aur=w_(pz17q>YFCANj?=s=>40xTjyUnn5w`4VCfe z3N3?10->A-mls;drXm`!HP#>u<$FzKTRU)x&K_{!j-xpJK8|Pm9<6Zv=I(#N>j2u= zQo~<=KIzfmg+wxv8HdtY}1Skp^PQcs*Z^(#+sD_fHz9wC?Y`Pa_Yx zrf;#^F8Nca+871ZvH6gnpxRaet(?M-)agF);+LdxLx-cYPVa)l{F)`tX${IHU9C~I zvi4d2KpArRX2t+`Y^}D5LQf?nOPw##v$&6AuTf^pVH?NRRh=PNSA-Vl^%Q1xLSs@Z zr>trnX$9eaq{TkfX;MRT9)RcTBEX^tV-S^2yMk{wXsnm z`}AE=DmQNeq=4hmslUw^B^Xq^-ewC}ktG_fY35J3qs)q~4s3qycWE09m~%wT!yYvK zUGMC6i%ynLbRd!kUDsOlAj}ySD(4yeVQ+}9z2Ct2mPudkb#aj+BZB2TM!@*aJDzIJ zJZNt#j3bEsYn`3WF=6r`)mkta@1JEPAMj3)`$Y2JaC9 zD7*-+cly|8a~*iG&5nSz*oh!K%hHKV6Wf_@KGUOTxPZ#B1Y19d^`bi-v?eNsjmmtj zcLzT$UGFk@P;g+*l_slOY&8!*wFTQ0*U0E?lVYAE2ROkA+%a;EMYGP2IO7G$pbh$Z z-!W_RM{%@SA8ijDL*Y-G4xyvM@nJCKpND(;@;M7>v?Qd{ckV~Ex44^Y0lq__hmL5V9^!zmBejLxu05x*^)|Z(|K|6|Obg8$Y~73NV0~9Xgb&if1XW2-%5v zDfX5(Yl-U z8u)I3FwL!l76ugN*2akiP)

kR~*@PO56nK9A9yUCQIGVwQ-B!J4qyh;PKf;_@;-IhAg-vl~RGZ|BW{cPOc}~1>k2>f+wVl$a_<+3hgUxqlnr{^YY3yB%D#$C=Vt5#<@ndkhv_ zDOx8V#(A?gpG@jU%g+zrXrrP`0Fb#8Sr6OJ19LKoWY$RKF2Pw8@^tvFmsE2BqY_g>axeQVQg*E}S4`OIc$C{v+hwfQk7KNciNppzWy@ z!1L6z zDmwPo7y8X+y!Oz1+GBZ2p^=I#cz~F8I=|o$csWZI>#n@m<0C)92^t$ApC^3EVkWu zCiOBTCV!_U0G(X@j7Hk`~>(e!Eoz74~I)bt$ANK~}=%`pe2y0&WHj$HyAE zD(O%uq{knY!2Vr|1Qc(um_efBnOd)1m;mxV<5dw}6|wGVP{SzVfJ1GJaFY33N0S*9 za}4$MGHJ)7J&^Zq8x&mFo3Gw0@=Y-vYnQv2K_fCMBG};w*a+V@cqgEX=2UjBk3FEh z9iyHrgzk^hEP_NDh)J55H`;S0F<`T;Nz(VNhbZi#WpT@|D6Z`}?A6Ur^iBD^wSFCG zj+=1JU+^fF2#qCAlLP{%Lc|8KF7FPqY7R}I?q^g>U#YzI8eapLB?qknlLh6xtnCT4 z$T9gLlc;@rOKaWUNY*EqX=mN>sy#eTm4m8bg4iXp+%w}s;O4iw<}E40dC@u6Iui+V z#ubFot=0-2Z*x3D9%c2=m6b8deq)#B@orIJIIN9IW*%9#p}S#xAc$}-KjaNb!QWY@ zPs6=d;!+uz8>f-8=%N7Ei49!#@?11KYv=bjl*uN|O$y_fy|=~%s>VB(k`WK^Y!X7GqZOnacB!zF zye-A#9Xcs!TuH=qmgxj4_!-05+lTvX^@O!KmRWY}3^hkgUEm~WPXV0L@Y*X0LYo!* zHqUSjq6u9M#;b+*ukacN_ztv1N_i_Ma}zr#14VxEi+>bpfp%f?7+SqeTY*3gYvpRa zoH&3mKpOcYsLR7@NC6GaLAM7d`4^?Gd`%7h6&W;&+kS!l%Gscpf(v*{t~UaqcA7tb z5Rcc%lLGO{?a3;~wNjW^c>9g@+2H_q2|RzswEG2Q63qpNpckc#?WlkXa;Hgfy|L#5;Lm&4nH*kUzwuL0X|Zk{Jqa#%^Nb`>!5MmO7@yup zX-dXmZ#sa0IMj$%O=F2o*ed!28zxewN}0(K=Svv`YuCQu{fa)9as+MS&Pb;_h? zJC(6>Yx+hjMFk8Jj%~W(wMO$tJird3a-0!;fA9oW_^Px=9A2C^es1qRADGL2wG4l?)?xnn*RePLa-mrY97xZd3JRXR@qo4cE(BYc9^3K{Z+ z8mgV;TW!VZ$+GT(lk}XkNhNO1G{hsa#8`vFENZgc@!lLBgWCfC10SUUEp4!=8|b#f zu&<#m!y}|puH)eJOasN<)yDjDI!)+0aY*Ac3W55gT`3;3MznU;A-wN} zxyy0}gcp}*Nxx!YQ5LZRz8Q9&BpVhEQW!qjZ3>R*0;f*&T45Pl&J5 zotai(QLziLHb$=lfdg?ly>A3_aw?z0YNBfxDDxrdg&cpm4E+;|f_|929sV9}Un>&P z!ejFGX@mL2ys$e_8MF7Cdlg)BW$=!F^{h8?H%3QC7V{ZKjrh}VNg_F`JS#Smo^M`R&*Ms+8~fPa zJ4MC~BYgnFX=^asp@1+~L#Nx%d|)mDQnahpLqlLTLyjpC7-0N~`Q^ct9h+qk8X5VB;I3~CstTE^i_P84*Hyvp$V zY4g>?aSTwFS0pap#k{5|k-GqW1;RLPvz`BC)(nl$WP4Ip;Z{pl)3a zi16FoZV9=w`1T^Q4-wjtU&_)C;n%1m)8|(jKUoqwD8Oli6huB?m-ph5wjPHz;^?d} z`yq52!#CfCLKn~d_SUZ#*R_M%>4dEkP8_Ik9OF@;_-<1sT@kL})i7wsvo`Jb;-h;7 zJ5PfW_GI(rC|vG$(pvZhEuGJ*%Q?j@Ukx3^9aFm^BC9F!8e z+#_)yK}5l3KS7+Ep~EB$T@CrzsXAy4C`K`+dLuRf z6cK1vmKczDV8IrkRP~yggS1k6S(cM0jYUQRtVUVHpKSsd%eHcG-v4 zFVvf0^3#@EYmI;UB-K9JWSR>SaFL(xG9Jx?XRvaFw-7)^0W8;Y8PF#D9I|tT*NAa; z7U^&GQWAu*hvdo!>Dg@7%h(&es>| zl*t)F*71=lJQqlzZS=xF?%oBc00GS!!OS(zrn|&=V%~nM1$9!M2-oIx8oI5a-hgLL zlZFgF3$2!|IHD`_8fUhSEm8ZHs>thkU}&yNx$L6FDt<>Q(mOo$L9?*7+cEAi-7s>F zG(%`!F}RSzk7O6mxh}Maru_gz9kh*M=2n_job3uL(qm)m?Kx4e%2|U^MY29)KQhVK zk6E5eD+-epZeA9hnjxFN%u#0}YqXlHrF8Aa8L>wV zH)@Dak$&$)a32~&IdQwLM{arj4OR{O@A$vP@(chOhau@3fCCXYjIu|P)}iwS&h_fV zsF+-zN3otf?!GBjv&xs_MFo@i4yMf z1N_U{1>$0CeNCnfM1d7@I|7=AaxOg84q#%aNP7%o&Nfx>pAyHvsVEx@%ni-0 zN@p5LfT25{GzL|cAOZK-b<;P4k$A~vuIG>SEfp2Q0;Ts;^JTsG>Q0i@a&&Fcc!{Q6 zRWQzt!VuQ_?AGal?tXzyl${e=2qBN6+pxuJj<+c<+Y(ZyP^`IQw%c0f+uDEZSo>$%wSd(yBI8eS)D9b^f?Q4zhbU;cW@YwTd zCB7P6Xy}+Z`gBjK2yI4?7SSf#mtawJHB^uLE4S}1s+J*Vr743E)@!TNL+PY8c5@9e zskFyRu1PAni@J{@P=@xXmH9nb@n%X~EPoLdwu>w!rR@qVm2R*-zX^mc3Y(9`Fa~W# z&n8=0t1|pC4`xu4H6O(zMz#$~2+yCf`k1&4K>!v#K>rTMtM3TFJm6%*c<&U}GR2+l zonL?$e()KBin;O8ZnX3^kBHvYlk$r@^ig4Go#SB7z8dPbc~%P4H(0fkQzhw>0UC=Z z-BB5ZS(@J^E1kjZjV<`@ArBHW`ZGfVOP{&DK?{(~5(%DtlJo)9X!fIpB^4Xic32fJ zTG6r2L*HII@K(8znI*K#^|57Q3A)Ne`t(kY!BODy>*ER>bayC4lPI+s-Cy1~3$9;; zi*uRnyks2)fwadK?;0WpYc^%Kw~e+rW3ho1G)KgzQ^mv8Ky=V?)k;TnbwT#fm^&Fhg z9(y`03eF+iYRJ78$xJ*lwN54I4oYWj&05G4$m2RA?dw7uzOxO%j_ zC55(|LyC<%=%!LbyCR8KIm?vaWAD%;Z{zDciRI1rtx8#u3Xcsf8MpLJmY(<}pc5sDAjRYejwC1bh}$X$Ij}#BOgD6R$%mw^`-;jsMaqPni-F#Tg|g$ zSqLwCpVJ5VOoq9{!fP*lk``r;T}C?6iXC{I^-T7*;9~fB+zvdRWIxKhH)HM133Mc> z{p_4oU5;GSE80+RJd7u2?Yz)&{zb=0PZtW-+wP?N3kGjcG7~J>Zq&QhL1)mBg`9W# z>(PuB+nv=wVJ^YByf^$+AK1#7ZG8D#_0+xs};t@^te_Qi9YXG$C;q zUWJTf(pY(b~}Ie zco3o-``xar$kX~vkz&4^SGpZ{2|Ll>_$drs^{u-~J&eU{G`6)IUeMeIhql5?H$4PF zoM;e1fg1WwK=^$Qi0JggvU``aY+jBDMl-%2M|>Y#%AS%73!0}*DW)5kxH-<5T?Q%yBIv2Fo+@A^ ztkWw|dVEZHLb9RJbNX6GLGaa2$RJ{;NvJyGV)Tf9rw1uccCp;^bgo0|^z2u)uX#yd zQmTK2rRb%Fd%@b-Vgs%XT&OT)9|#d9&0ADwDRO8K=qh$ucu{`b*J zd$ryX+zoG0IHhf#i7#&Wf;z|px~=!-Jbu6Kc$CM}c7({CKG4)|<2h$+eR*cH>m!r# zT_VP~%%5f{&g>ko)`Z*2+QT|X{>Kiy(+85(n4)q@(%Q*U#Qcrr;*AgKv!L1k4%#CmH3AHkzLeHko-N2}g(L{;MHXro>2 z3~GNN;1bFYF<85#fvq+|!fqbkchfxw_Jqf1ysvrMgsFweMAyc~akkv!&hF*C z)9J3D0T7VsQyx%tMXHfAGpnm4-E4&t?jH$BJ^h(3s?R9|>|T*z^9~rx79V_GF+lw8 zjIzuM7Uo1|G&)8tW+itwq{}G z)0l@C^<)Ymr!@dYLd}ke4amI6+2bn_7{#T;D*0 z&r$|xYqd2F3O~jYWezW6@uIMtHd6F|ug9Q=Cv2-5!5$Kb2(yNn*PRrK%Fe}g!j|2G z6_2tfv)ih&khGKc-l@5Y=Z$!k;U`-#JQaY_C0h%<$Ysp#2jLI7n9Yn$pP&|+0~W*5 zkqvEyiseZv;vsqWs_XH38oba(>+cq3JhMi0@a|qBgJUrq3zZL;z`(X?Yos-NZ>IZR z8Y{B%-qgyp)#jOOFXX~uLfsHWh+WMlV2n3r|27l*PZKfF-9q{N!@wV-41wfB) zep|0B*_1=Z08>G}rPK<*s3-&Q@>q~T7Tp~n_7(0rz|L!x`^Mz4GI`d zy1wSjCuTvfvO?Eju5;N_*M@BZ-M0I%-FM@la;VbIHzyd3ho5X;jLfvcI_cKO+N-);YMurB0ln98UW#Rnk0$k*Du8Sn&EpO0#yE(DDV9 zz>6M>ViQqafjr7|YjVULAft)X3{Oa8GT?kjvS$~)CPVd2F z;q@Gr4Xj^KP-}wApA88H+<;q1q3;2SvT&c6QsmCX`QomI$o4{le!)QkH)|6dyKk3# zE2I;{ zw71}GVx5RUu?M#K5sq4ww1&1dYTzqwP4fndPX}h(%cp#Or6W-R zFw|VWIrvUcUz1VlbJO0{HfB#6MHO`hkJ$CHnN8P{)sl{-9M7WPRp)8Top#rN_|}Px zlXjI%cQI3cWD1|)+k5;n%ig-zEut(cTrkAlU{c7|hGz5RR}j^TJo5jFSB(F9eOxmy zC}wV)%_B#@Y%}}}-xy;q8+pWzqt~=(oU9r#q}_d@A511h=K!}R1dG@z7{q?~dq zYuvVDq@I_O_o|c2L~Y#i1dL4QvQjf8{^EWiWPZjciuMYv>N#Z-)|~8u8G{j+w*7X0 zWH4E-*u}b1Zc0y4^*-4J0g%WV(tE=*64ncXp0d^aXgL0~rN7zV+wL+l6ItR+kc`Q4=M)KHyC3V3jl9I}g+kh<3kqCZyh?q^^^F+nQ((p#Cla z6R%?mu~-@C4R;?U>%DT;+A?Rq1yJIP(Mz#|c)A+HIo{^}=2^Q%#`pJ2$``g09Ky`% zAEJzs_}upJC%~$qI)V$$6oh3pymZYglsF^3#a1DwuPpT-3c(3zld|#Tp5fZN^z!B* z#L{PBtei&jn?0Z?2S_9-VQFj5C5CaVTp%S|-*fD(gEf^50aJy^D;9P2l5LXN-1}!* zB3`bmHQS0F16U7jIW*vtfoGr1S%A^Qo)i6wb!|6ZoQ$`iw0tASIE$}ziwhesW=CiC z3IHT<2B`St%2@1$Ih6>kI`)*R4a!xiN4D|WCb%^H0^03dA{}imr!8dxO5F%T>k(iX zgst!r_rq4Q)Bfu8%@J86KelUiuD&Wh_^q0wm4N76udQyMUFZLQ7RX|t7v&~-R94dY z-S4*g`pM#v4KNjeXk}47HFp6TO_l3qi17~)vD899G%5WY0tzzACk~KNn z2KKXSZqCPZR-zZI&M}Y`qpcly zTn|z70jD<5YZHdS1$HxFMi|JRJ&~HFCo9gqa;E{9yaEbs7f4NVX%L!gBI!yQUyq!> zBKa-0A+(cE`WA}mH6{BvyA#eY*Ri7en`1ZTO<|FWOco?=ZNlOPhOZoNX-E`VG&!A5 z43V zQb-610NO+W%CNUL5=Lk|dawOExm=I zwE^m2uHoBrpEi>nlF6gRPl0fa626`MRRK$*xV%=8JL>8;X7g6HAL*Y38F?U5;9NQM4>;)~raB4dVh?GUF5PjOtpl!BhJTGfmmT9sa(qXAFi^ z6R73}^05J^>luyct)GAu(EueNdq=@dMZfK_*(G2zpHTV+G>l8G_Pm{AF&a7KiI6f0 zhlX4Ra7!GFx2q4<;qN`NhV8y_i5oU9PSdgUp@iUYHu@!Cu_jy3#+xIsJg~{)hC45G z0lW2bYy(Spc83AX4w^@>?pP#AUG{JM5t{K4zq)G8Jvj86J$BA>wHZw&SzCqz94tt` zjYX#P!#4%?dq4OGd(7Asi_A#Z>(nSQ z&hN?foRx9so5-8;mFEQ=)MFgK2cZQRaP-I7i~~U0+pA%ApdoVl0^da!clWC40Pnt> zc3v!=S?}JvRu}w7v^3DHzo~D`28#*5OB_49eB0U|_$laZg*eQPog_KB-Bf)#hUi5I zh6!Nz7{eQQRx0(Q+%6P;dyQMlgv7k(N`hAH#$uoA^alAxjG!}JL26IPOha=7RAcwl!V)fecoJ{1q1-OsL!-18yA_x#CF?o{R*dcft$VRh7UZDy zYpqQ=G;55*SY)r(07=GeU5D5A^ljzGJ^8$iGlhLJjA0FeG^|QsbYXOurH;1rfnc?;mq#m?TMyW5Fu{k^mhC1iJqb z+MKAqL;hH^otfSFx~noHKzh$zdaaEbwr&B7Bi--y zmm#8qc%sq}Ulmy@PBZ62a1W6-wbI6`*Jo*=^mp2eV$jD#*diUUh)p2qoa2k9V*C=~e43fh5647xOiE8L%e4>+4IN$Z%so}w0=L0uS zo#-_4M}7*IxH4Rm5iWqdCrK^Rf-w$Ahf^K1Rg+l^U>Z%xn`gJU;7vp!_**;Yo>1v% zzFcLS7tzeuB2vb6^dL-JFGHr46ELJ@M%TBqeDkGYUl_THK;Uf5t=4|Joy@l&u1KQ3f*^o_O4yKSjmI+1x3 zt6n*j!*Iy#f_N0z6TL^a@ApE(k+~nFezKcp|J1Nt_`v{zr3VEuIo=bnJeZ4i#5tqh z-}ot@#oKwt9;Ej4N{>R$mh;nEzy`)RaKAJ_(BGkx%yzfT)y`ze#dQ`3;BKUr2#|rU z>Zf&;yqkfr0Xrn4J{tSQP8${X@-w_o3$g(P*iK`=>D#Mty~jlTj!TXNqo16+qSZ^s z9WyH?De^>0UubUG+JX*Yu(Ai-;pkqy@$q$IO-V_|7GiJ$J*KWs{?zg(Kc>&iY`IlPHEXj5~B>o4HqMC(KltG;DSQKmXSa6^<~kI*1@lqaIx#lK*y%U*!P`rGihw!1?l+? zAB<*JA^J?bXpAy}85TlU8fylX$lHsGM1KSylfq5uW!w&Wqe|lt!ifxEfp><;!lc1( z0AXL3f$IzVZ8@H`7~em~0QvwnV?nlHReX5i)t3zwb~B)9iL%~6xHFR&^kI_gI{U+u zA7oMY+N_5%#jJO& zH4k1Py6G5Y%{b=_DavGoH zWfj^aHgk;8jW8DoaUzceBd}yLdb2S~#E~|2wIVh;CTpK9uYPWGn&`^s=jIy+fli&=2W1v-g`2?`_W}?}Y~&Mgg1QIb>?in>Y*+N~$kaWWCWY)9}e6;EUl5C+%? z;<@iuE3C;2$%KJmeE_jYT{u7V-uzgda`-90T-o;0!V_vF>)_sQ5Fa{aGW2PH=2eCG z)H|_6K~mM}rCkFZ38DE7mc1P3n}ox@%?ji4J$2gf?_1Vm&n`LWmGD`;nE$jU`dF=n%6pES0YZh+S#$w|x@}V? z3wssdGKv$I%KOQP=LLa8%II zQ)Ld~DvUe1ik*guQTvuBq#L{9v`&Gi+ zLdt}1L|sA;^-`03n#qjaFY$8-tOy8lo({fdR*7+>a7O?=1%$2;8eOoe^`O*k#B3W; zC&@i$(?)@$BIe~|2o2Hb_LV`5sJ#e92VWg9OAUl5m(*Um>}sQ{E^X*BZr=natGAsH zRIJXsa+is~eC49rghX>aJT3FKC}bKjTwVXP=za5OR62A3ewA~Ez0wlH6Nu$|pWN%5 zDUMbWg6G29Fh|>I;2v%VciK$plJe$jjj}z0;WaJbiSh30Yew|uaCKf*{T?jeNVJhr zAQsphpDV9Se|yS(_88*W&PLl80a&NE(ka+NR7FrZ$)O;-V*r=dN46uXMOGAiJaCSV z`vOa{FuNDNbC{=SRg7~v*1yiuDbmk(&^!I=Q)+V~B*L?eHZP69njKZo<`*wLCae&S zggl|zO(}QQJ8J2p1jvC6)|G9s-0;qybpi$fszAbU4;bIoYlYm_7*@v(u(dw#lQ$r7 z^fG&;k(Ebis=ogG)2n2sTz=VLqBgEp(j1TY;`%TO8Lmqln{?!D)mh!}al&F%`5G7n z#|jQ~^4UG`+?BKtukfeTCd3aQt=!lgr?THk!iy9h3~*(mV+3l?8++#3%vXr2!l)^q zu_iVgbT)W^H7u%)pfVH$83(Q;C^9z)HW&+s4j=g5cZi>3-Z6ReagEj2lIicDcu$lm z3RJAMwRB+HIt0q8w6LUO(p;?r|7FD9Vw;RU9M0G|nQ!F`KN{{pII1Y7{Prkxd`M!v z3*A!oiZtM~FM@Nel*=TsvhQnT7-wbU-Nq7nUv=uXx{E!a9!*w|f0yq>k$W6f-paab zGmabN7gC-%XjM4;^=@22;^fTpwawWCclN%5e1}pfATC&HOTAD73E;0s?uPT!$~5ra zH%s=l{cM?Sy&@0_PG3<$(s20KEO~-o@UB6&pbH1aF3h=}q~RG=q~V_!*g#<|^Zf)2 zv|8JIpCADilGId<)MqlmVV}dZNlU;E+>;C zT>TkI6GrD+C-v>#7W9ph8<&ACYz+s`^G5c`Rku1K?k_Dvb$pR=y>~{JK2Kj_}~IGI z)YZU_+G#;4xCiV_JW6orRNpQO!X#~C+Jt63$bXM21;3SbuN?$N%+orXHG%R}>b1EJ z)pvklc4iG;#DweNtaEBID@sZ?=Ja{!02o->%^jVUdEMn08lnx;CCDG~!@)?>Pvcsk zO7y>#ioT5Z(eCohbc<)o$P3FE{3Rd@;3b_C)1^@Pa?pg%IS*dFEzgLEH{=1!b1Qk1 zmyn{<4-Dbsj)J6hXmsc(TAnIBL+nUpNFBSlJ4TnYN98(tiAqw2KiU5QkAl)3* zXtJa@HQ3c*2CuytfJ0|pzwi1)p_(X@E|xn=hjm-)9dr@EOJmve1PBCB{&&O|Az)j)_TiVug zX8Qm37zB8~B{>IqpR4o59}}+1gS9q(rcP73z8*pwKFvp*Vn`?f>}9{ydK#wMp#>M$ zn$+j68DXDmlRHW4snH?3%HU+iU+GQa16=m-DO%@DCPjSnW33o;mVD`iF8A6l$5tE1 zpgR{%$qHXEX6@lT)pi{e_$S@g+s9P2<7^pO2=e)>{D5oOVP$;#fp>_HZltJA6!DRV z%W~n_IXfylhKeD5>9xve%c-lCYdzjlUwE?b-F@*-Anl2WtXrGGa%l&m1B- zjZcB5^ns|KON4#>#HxsY_{?@>^VYcl+)6@qT+4eNCwehvU?vET!wCYF6CHqMUjCQpJw{Uc9#Ox8hiw&ya)a=<>t``*38t5_8 zK~Yw(Fxx7?Qi=13ZRnk@&tz{)p~^>@wVAC)HhQ_H$6lmsHn28@o}$`!n;H$1QDIOx z@e3Eo4Qrmga5;8L=E7i*6V`zN<8w*p3&}hRHH+M2@_w-)4N{Ez?m+v;{hXPNzv*je zJ)~v$P?3=489P#&StMwMq|7?Xs!vKyoo1a*U;LJ-bd(UOoVNSSdW25w61{`IKsOS= zbXL4{-r~kI7$OYJz@{CrD%aYTaSkHeW=9SUK5Fk&qB&kz>yxPB)N-;42cl>CJ_yU3 zH}_2)4iY};#io~Oz`?2#-k=4{HWQ=(pPL4P{#F$a{9*k*@_;XUqupDK7t^|p)a9cu zxxdbKJb0AghQ4be+vYj=8i!TyxW4M)fa$3E5@u2~rIv;F!s3E&8%;KM+d;MIkpW(Er)e6cv+uD#9WR9$&KZeDcnkKimVXRnZ?E}~(c zCRQy)wgVZgJrNH{O*43?$UEV+C$*QXhZ+VG-LlreWr4i7k+^^nR@wmrhuYdqtEsSNgXgg%H z&Eb-1=Rd5m=izbBbFaYA}kU1ia%pZYxF5d`# z?Ey%ro|<@w%t&m%n^(u8KKqDa3G|@m8-rCDRgU1)I%nlUp*fY*2gY5md$d4KUt{&H z)o2zF3m4wnx@TF1H|5H*42+Yf%d4AQt|m0tFLNXau)TF@oWPFg0}dP-qZB!5rx=o< zqtEsUXuX$8SK$z+q2j~`9^Te-fRtL%Mlt@i=snl-Stp^3oE$6nT>KVaVl^&JUtL55 z0e$fUBKHVlS&wf8APX%PKF8uJYQDtuymdLSS(=r!5c|c~WClhU!o*YJcyPX0Phr6b zZ0np0NJy|tRDM}kgpb=hhz~wF0w-`}-ph)r2^(b)TuXK5D9es;HSX}>kbf0wRlTgm z6IwNPkp(7)n@XXH8T`E7%bI_|FCVx*pPV)adVv0$?BP9Ugi46+>DVUN$|!Xe9lg^idyn|`8)LB`<8>}jMthxcml(q z!g=8^i&?t^Cw3_Wx7Nf=SqA5%!vIr2tiQ~=D@2f?GotQcd#GCd^*>d zZ|5D*6l0E4vm7lGO~pX1(V#k$dU}u{yRg^jGRqkKmOYr%DXAF0Q-jK3<&+qm-xN0b z$MkdBxA;&CP106clg3%3*2`(9_1QsNHYGvvimT0S9A)@+9NOYu1SxJ~P5`K=kU}y? zUR?E5KAloJunkDObU~I|9}rkx4jP@ocGM1BXPucHSnF*S=A7M<$rM-O<$H#-Hkf;_ zeb1e`T}O8kwk(&B0%d^YJHsLA)eNa39KgV1fS}z`SrSk=$r4Xn@B=1iC%d$ma;I-D zYJ(l)OGzpP)?M}*b-`iEN`X-!ZPKfX5@cX;lvAeTV3c;D$pI}=%n!E$!vrbSBHj#9=Ij^r-dA0+u89>$jN0nM^>p9c|CH`RTPv;vM11 z-FaF>D2qTfpyd?)- z>W$3k>aLqlV{7v!MLenosO~Dsh)3O*-L7N-AP?FQ70nHlbNe7CARk1cKF2Mqj+(2F z4y$zgoY=In9|f7Mb>C-Uu$0^>#!m^jmCX+ETOpg`*X#vO@_SY#?)ejdGG8@tE?S9n^vF< z%$iac-4+^1GD5-MM7@PE_ejVkNRs8~ZiNK@Iw#kzD=15t(Jv!SZMp87h^ zyxu5X3;X@OV_prRTh3>75zu?x+8_8M)F;Fy5^$6ek|vvN|wfX912pTx{d z({!IBm(g)t8>Et;79!2YbKmPUh5(wp)M=tSTf)tu7qDK@-a4OutuJgC^jvzZ>2Sco zQZr;F``MlAd4L>#4;+P3f&=;OLM^y2T`+tNU*{H*Nrhl!k%TS6KE#C~@Lul3JUVan zQ>-0Am4Hm&m(qDbo33RA@;=A5rF}kCa#V?sMke;Ei*uy zL?X%(Llx!A3mQ{!u?S2TtZSTUB}mbvom-oXY8e5hI) z+G_B;^MXyK01cyPmV%aB$e)xk$Z#9|nrQkjqlpuW9t}k`6~@KD(>2pCstbv^;BqB`SM?CqVX#$|0JZ>Mv@odL~QMWxaW5I&V zcmBR<^BBTEmO)eZwU`HVW9-u#Bn=gudCZJlGhZ`c7p<$!?Y(cai$v)OjTT5+VqZlY zcc2egW2UQ9q{YRzkNvV&aVwckNj{jL{5_QSwUgsOGItHo6~Oc*^!A9ctsC%{F1ODI+Lu zqs1>c-P6P+Ujsbd{Ar*0&|DWyU%-u?5DgzL&o`&LkfP`YOAwjj0uMqJh@redKw@* zqFKV*Nk+ zf`Fp8Uul>SU{v6dIV?YgLF3*4OM#-0>X*gMEC@j!C!tJE!abMNcy~(JPdtl6Z6;wX zoGp^5-V-=BB(pjLvfAGf-1Bgv|f~}FxB`1f%8E5BHCmsb4QqiZ*#^vaMUuqmq?AiGo$tdem>4I8 zclsKRf*sQXWDlR-A2@4HRx#MY*RIT{Uh``uYoObV*-7q5gwTkuyf_%PLrv=hnbBIt z6b*0-$H_sXw?CESwrjnbw`pZo1Bj}WOXZ7@cBq7W{Rmzd75DoFW(E9z)tQZzL09Zi ztSY=FGt|WoLwAkou_5(17?!RBm}_5VD~KAmIvI*nLR`R8ndxz@=zH6)%pn>#P|H}q z@>8fz=icX@?{5zH;DGAB_{#$BYY2&!=*anj}wv`3hc z6++EBiz5<2aQ2Se-h|X6Nh=alFWN+9t>%@v8Z;N@h(qZ$n!n9`b-|Cp-LT+cBVeL~ zEX_Hs;{k~dk$4i&eO`}E^Ch1*a|Z`PdjLufN=txL$Ll@O4_NooO~V|wTeN{=fj@Ux z?G&W+3mdk>xs5T#CCN!icweYOcg1=`ewlWg7UFCX#1UwXyVk0-K~7<(vla3pktyB2 zdh`vfpDNTWVFgbDO*zQ+lZs&`J=By8b^I;`iwE-_kb zpt42kRjQ(q0rOltJui)Tw;-+xIeIjHCS_KdClqw!W$k#Hz4aK?%LxMyp{ z>C#aVlKk{I+wVrkg|l)GQb}HD%icEJD(}Dn5C|t<&9bcvug6^&CWq`b7S%EQr~n^x zNGX$T2NBdx;Gn*kU8R&eR`;CQCQ}8_&M?bh8_czsdO?~Io;NT=avvXr$~Y&C=e;Fq zJXz3ousmAI@lDJN7jS*&NNMME^lL5kD8C$D3+H_!2pKA^Q*$yP#qd4wHz;OygYJcZ zji+TBZ4uYp$-n{8MH%z?LhGJAm^&ib=R>JcI^gG@qi(yS-E}*%TmJVVe83tF`V*&nAa)yRBw;5=Rz1DD_d;&h zZ+j4geqK1DR>mTxa#qpv0%q9#oUnJBZ9fG=GI@%!_QnPyh$<(i=Yd70@PFc^H4ZQ_ z0qUP%;;N1yt1fP!5LFJF;ebR;tIK$R24*hg@T#@Y(~_hgQ0hn_kmH_^`w4wtF+G;Ni(E76c;;Et_VlqQuYX0uS;7hZTW5&e4>z zU-lL89O@hrKKIT~?cUO1p&f(}Y<$arp@Qo3cC6;Tbv+8K*%}ed&Q;*n-ITsqIlG$@ zuGA(JRhWp(Dwl#OY+=?%m%86BED3if0Qj~;8V|?`QY4L9D3I9329yhKDRY>uBXFzu z@eF;=&nO}VhiPVWR+)r=3w6p@vd;BSY+JYaVHd6_ zK0&+#HQyUwuCBmfZngzitiy-|L|)qUG<_|RU0bsSETjVUg^hiwxDumbKH8T=8o#!jJnI{j0e|0DvTU7wK|RQTGPv<`nvTuU`XQq*+0(PE z7?h|_pa{BL&SvS;4jVQ}rj1%NO z%I1WnsSWTc+@3!0vO%5QzIiFC0R$t7x<)tXd-&hL`}T~?cGeaK=EP^QC=uou zTG%%bFS)O%sP7S-ES_2Kp)H>*&7V>r+oau%pFD%bJciW4s5KSCf*N62kVB#Q?w_*|_pc|mZEV6F( z#xP5JX{=s&_s4{A8%QE(4;erlh<<+hO(O8@~#~C zh3V)pi9l8gTH`<@SCaJb`K{A=k4vznoXLu;l`+%WB&E3X`L3GWJDx=r;QG$)5HhKr z7n!gM%+CN;-k&ZNktSiNN}=RpQ=$E*`8rGz1MfQn-r-aM|2E{YU^+xyjQ-0ja!~79 zEkTOzy69;n-AEqf+-lW=(%QjOTx**C)`VIR8WeJ!oD~Lu~h+%-uJ9?MlFF;ajZj{ayLv* z9l`-r?yHX_P@jZiQmJ`yWQ}+q!VY4LK6vH5t{9Yb_nOA;`w>}CHA03h2xagR*3B5QVd^kkfJHE}iiq7Qr;joU5AP%o)vwvD{`}#Oa6Z9d&3$~sk6MdcWgBB4 z*100wU)`oxHYkW^hovyebJAcyy+5~kq3N`{uioa|Py1NdsN7xm=;5zj42qx^8^wI* zZWs0BJge7D(ME3p*#&O<;?`JC_M~{T7T=WFM!<%reF3^|moCK$^1AjujwP<%(ri~M zZam73Gbv_D4nl3-?&3%1!boc!6h>t{w>voE5W%yf1&+StCPIgfa>Z^fH2yA>#e!SOaM z7Y$qb(7Wd|Myy#GUW*Zw6(#EAd`3x}GL-04Tgq#K%PPsuI!<#S*p0kRe3oy#O?C9b*Nx zz83rIQ^x8f69wGiRqg2hlEMKPXg@bt+>LujLlxASBKBnXFiSvw$1*$=qhdiVcv!?d z+k^7(FR!<|sl#uKWyr!R(fh&B+9~H4fF9H#n3sDctJ_OG1dr?Nhu_m8SWAxAGb%)8Jmc(5kjU)* z$^ae{VE&R@sKv-EgeB3UbFv`g6uVQpv#Phf@PKR@SZshhG$0~lJ8BS!(CcSgcS7hW zUr}S7=eO95H)vY|tq;-VqDscW!*Uh@73fspWE zQ(7=;oMI;&IvE2|!GL7d?mhF$SceMmF#=Oh3;!tSr5!~J%u1E|n_vFf-8e-sFaj@K zb|C~tp{=Jx5IkA7%A2x~UaPAx7NSg@_UwlA_yN;P>pZdH*frKd-k7*vUVBL|3z$3m zVD9rDiC-@QtfwfNn6o%KTy6ld!l$vnm~0JsRp|Wolmmx7<$`R|Irl%w7Bi%x#NXScJc2hEkW8NaDaOE#9rx!`y_ z`78*TtcO!)Xz_KgQXI;%7rb%ibIucCkyneU)rh;2WuNa_3(NX2VL>Ltr&`ZCr&V1W z+%-*MtVD%q?vQWeKQZYQTVQ}XSkwzp;hHv(;CCi3P!@|#UdsFKAR#?eh1-F^m_E1G zZ)fe;kGmu+tWhx;7GStI=PvY{Gf*-Oo!H3h(~fS^RqxC*79^j15+1a7zNlB9NHu?@ zj|JP`@1^0ar9cE8RvQPadFjIj80=+7P$qSM_**o5URu}~USsH@KW?pTmUe`% z)xw zW{s5>A)c_YKGgbS)^SLlfz7oHa`bDHv%SL(s38-*%nv){TYm=7wqq0+T<^JXOB1qU zvuLu%^#=#I75U|2#Qk=N3KyvLE0nqiy?S%>Ri{^cPuJ&KLIE8E9%knUlEhYDXy~}G z6fCji_8Qk4GyR*+sp($q%co-Q(T0eQ0DMnyTUyuHJ)s*;k3n1N-goocSeSL1kpfD# zpTHA~9}N`Fy6c^Ew$t{eXY5YvruEH{ynV01*o#o|)+*v>Di|B^l)3F1zbL+VJ zcGe>oK|EA@cP!9jTYETVTJUIbDa4fn1YQN{&UO0BRdVKm^F`27oS(FyO)@E{1ckkhHS3)-tw%T%&vKX;J4PMZ7u4*JNi2vH^!g zHo;fT6?z=q+z<0ETC1xTkRn|B70Q$#UDvm>MlPg$%c1)!GH1T}viE&7NB&}SsmQ>D z#0D0492OXQf&eUbwyva_bJk@KrmTI~p^G5x4Lr_xL=maph*FH93l!@Dx;9x4*G(xf) z$u(mxYJvgfjLHglnztm}L@@90u3+XTA0*q%VGrP7#cs^fvr9)Q$Vs_dMVXYQkobij zx$I?ZrpDP)Hj8wYJ)>-8P{d9UmV!PU9H*v!a#THURl2VFe5MVIyR3)kun^P(5E9wT zoz$*rn1r?aGUc2kI02u#`0UX}LM8r`6>wvfTPp!8nV3ag(WGkE=^Wo5{gBOQ_~Wwt zz)yj23|2S_9~A32iGxIS&buOmY3a#b#TyQL@pIPZLSv4014(YNpzS`#W4X>}Q=;b* zwA#`W=F}A!U<9>sG8@$Ei&C-t#!rEY?UW2Z9plraxwaalv*==F9;Le*O@%nFc67Lf ze(gSt{}nUH;_)cMe2!dOgIRHRj45QUYiChVwb+w7)?_?+-U74e7Izdrn>2R zb0~$WM1d2$X0bx^RbG2tXmGy2cmV(bn-k-tAXurRIt{b9m$M4=4$gGICC)W2X$McQ zb3KIcipA#59b>vIY4RE#G?OvfvJ^wF)5^m>H<4B9hKWIZK5v-kL|lFNPqsukAm_BS zSK5;Mo$M-;N#uc;8gAU{oxT-=P`(^<`j-Zme28ZxfUPfWZ!Z{Ojr-KoadF+-)(iN- zx}ff6q2+vx`3I}CwIh5S_;pVGQdZ`5MrmXJd6qYVMwh?>Y zK2S3$kiNysb)875a2prVw_P3d_0Zg9b(Uk%+iF(l;<_`}6Z=dmoo!VKNBw}kc_E>l zCB}Xf#uki#AKrSsjN3@-H%2X{s{2sa9!Ll7I!=7hF%`atRlj6*%XYGR!kM_gZ>AA# zka5U@D;}^qd$d|=ozYxgz=+L;FVwC0&{G{I&wh&`)YDYJ3UD+!0Q7^xlC}A@#vB+( z<8y9-!Iw=0UDi^&H}*v*w|A@T+a$39&ETI;2&?(w?LJB^f!2=s?(ygt0W{xB^(!+* z>fQI6OsEw&WbsEI1`Lf@B0UXsFpNK17LBnd-QNA^q{DV*F>4B@0wMt?OEap@Vk7l3 zPQf+GNR{~{9l$(b%kOwM>(Zz@o0rj6ujiz!f@ih{oBRTC1gQxvQgHfn@TftaM(zW_ zEVd_TE^=g8g^o-Kr8JSYUDpzxW$x`(0pX_b4WQo_`Mhz7 z_CECNo!N_S>NiX@88*U1?9^H6>nPm)AYN4hoN*FpoScFO)*4V3DCwyGS7_TzU*>oj z4}O%*Gf{E1F1t_%c6_ynx~%zoG|j38r}i`fsq1i?&MAzxw&Ja$1WVw~3q|XvZAM5v z5Qv^sYP8Y15ylzA`&oktL*WaJtkYYgiXHr&`JKyb&4zr?0J*U=2CU9XY!zndMw@-f4fO5$-p2-zD!G9|+QIelSF~HZCd6-W+ z!2OyO%InH_6c50w7>@&HB9zGnhOiAqakI)L~8fe zuNXdTB?MPv$s(jU79uD{(NKROJriVc+;EJ`>)Cu6#H`{>+g5AtxjbI{c6PwQp*=Q3 z{R)k;;lfO_w4Cz+uj&2Zdt09738QaRf^Iqi9}XF}%-%P7;p5m}MiWoC=sPbhmBwf6 zwH5(QqI8O}#s^End?yf}LTu}TR^A>dA?rZ#oULKdod+7V9{P8n7AK`leJg1mjY^w! zwskZKX^hLHon)IawXii4b6-9?mh9;~Es3>Ed_ zgJuAKR)$6b9zXtKhOiolIbH?7UJy+a+nX)m{~3(@`fVqP4wClJMY1Tq>E2baKdVJyuBl-b9 zTng~{sq@0hB3L(d0AIWUnO8|@tjoQK1FlxuaXNWZ?gbqVL49XvHGs)UXa5f|oB*zn z4WZ>!5O5w(=ibXp(*-*<^LaKe_?QbJdXtdrG(bs?MAlnzdm)+F4w!)1G%p&IWxw%L zn5#HglVsvPe39EA?-;gQYe8w7zEWu$FvhL55+=~Qzz+>?y_Pyv>$1+*r3)d_cbw)pv`yhjst4 zG575PiW0KEFl7*kTxZhxH(tlvJQnE9!*)iBDHgBVUqXMstY&#EOgl6$6prO%IUh3 z-2^`mBJHjmS@AxnZ0F6p8FQUAN|#!Vz=(memAyz4QvWn!UPNAE5#OE0%es@cS;DZ7 z$>yeTQ^zHYOSXua?S|u2K|q%?eS3?>`?+OoI1?m98?S!e>Tk%kfxBY@8z%yEnKCif zH?#M}0;Mqt8Fbb7DLghcwdf#nGa<7Mz%e{k!`U}mx4Q2oW?k7!WvvZoA_Df_MX`y^ z7cGd*FrR98z&BfTY_qd{e3_<_Jvkge2>1%gY6lXCkU*o5z0>=uN_BJoTJ`E0JOq*IoYbZr(xIRa8k~Cq#|o~ z7HmJY)#|0(++%FHxI2M$>7nyd^6Dx8@3Z#mh!&xM6=JswiK3&j2Y8xiL2A3=ja?4O zp4#Z`m>zG)6UA;D7;#NY=Vg5bXbo49)+tk|3aV$+v04~7J0(=p4MgbH9+KFz3qaBe z8H4mQ;2&|nyuUQtUnFXu!pidTlJEXz5}Zns)7Fd(F19?H`qIv8w@po#J9gijQ`cMo zY&#e%+xsm>Turkbl+v!NvDBIOF`>C-bEhXk5pY*tC*Ex z%(sPKh^KjRn42cg=(09&WS4vji*t@ao@^7m0rHj3P>|*NZLymPa=uf8d=o<&w8??P zL3;#T_aVV<;T9Fru8>;>H@gz2KomNH4OZVehSvqo7yM4}il1ZX2Qu+iFCe@&E5z6!Bao*rs>;||=gXr!xL_Dw}*Yji`|B2^^E;A z=YIR9Eovk!Dwi}eosF{8=zS9(0mI+s=*~I#;XwGOzxU=xu=GGzup zo{?D~#}am0qX446Rm*fdG%pKa)JR0jR3bsuCX*bwyIAAUTFJN5E{c`7pG3IEgz_sJ zK0nGOsq8hU(@G-8xloc2bBZu_wHd|uD?)GyprmCcqkapRHM4>h?k(EUtHtU9{PyCZ z5am>hX%ays%tgOpbU)y zZ<8Fe0x^5pr^n8ptZB>cL?9FUc+Qp7%}~2`1{jG#DzV`q!FeK&A?5O4Jq{UIu72>b z)Dpk9J>+|;Spz63*sk#qv&tV;pZTz3XP zV2WZf>F|)xOi!UqYVG2uhkS~Yu@gq4CAcgD3DaaOmYra0m9o?$XXYtoa?f% z-tsu~dz1ll-maA0Fs)6@1l=7gxkBT5pOopBu_uu9>&%NcShE?5w2M3Coptan-de|z zGxazpJ8gK@*!9|JwE)!iz8N02hKZ5g#h6VW__mVO#4~evR$2@mN{8hZhCZmn(;bZG zIi`*7D$r1FZUq3RDxy*x=}iDXKZf3E|F5adOsmnfOaT3h$V97uA|9v$P^( ztifds@ls*S+g+Urbh`s^28kmY^}b91=NEE~THkYl^Es%vol{_ybLXg-kk+!LrOPdEu9P~>sw~{&g>T_3jSFMM=2&xKL)`OcebwmzLZN# zgIki8fI%?6-ZufsvEd>TMgj?@fL(bpZ zeWGyE1+9~xC=ma(_Jg9hk(Qfd_kyteun&MZZuov|_PX#G&h|{ifJC}F{eC7m%*O5R zS7Wavb+Hw#3k0Y02u?*K#Fx>j$|U$T@1z5ymId{pjo; zT|j35Gn`Dd53EM%u}@Vb0cS3qPh0TnYJ$J$SXJG)ELdhTW5RxU_U)b9#Eys8p0M*e z&(P|F+K=8Un1@l9LD9dUyQUtFU8t?%z6SW9MhC9FUv*%4d&iFF9xFH=i$t9aB(c$* z5>B)ux3y{I>?yE*;BKD=3$NwQQb!Cziu`R!MjtAQ77|!TZSw1caK^8{M2*62F^vlQ zMNCsz+O*gVfYBFI?U*FXe)D`^42mknI4VtY=-Yy!m3FY!M!&6t?-Z@!=>S zLcAs`U9v;4iYiDX%jj??snbskS>zmhX(cr{2KAfSTo2CJ&IQ#-*# z0bfMT!Tf>Xnfn#HyqSVfHd)gda)Nb9SrN%#FhY8Ni(P=K%#Ah&L#5)wH;e#ot-Kcc4=rN=;s&yj@)$1kz*}w zQ|jwS#O-)+X#xW^r~|YwfoQ&$fLKwjdiA{k&Ej51e}^&Ayxz?(e)&5S2;`WQkRwt4waS)xG@^% z$Jch?y+gj72Pl*da=~m+=j|u?DPWk;s%N3hJC_9E zj?B$!wmVB&n)I}>daCh+Qb>2pvvDNFEn;BN(`|C(1zAj<9&eNBl0+sKF;igOz7Y9V=9x*DS^Fk$gu2vtBfZW<(;+w zv6xs29N(V8N&5uy0LIOA6vr=Iwy^F~<;*h&wKv*3Sc)`j#l^~jZsSFGGw2Ezj;Jt8 z#K%tTcFc^wC%A)k$=8ot;dbxa&aPT_lL1}i;-_OpMf7uYK6aKXVb?sC4>Cq)fWSu$RYWB_KwEWaxivdT8rtCjXDhNIqC0^J%Iu@-rR8! zwYoF6n5=lKECwg!oLOapI#~*8Vt353m#oAV7>~T>^Vr_1fK7{U;{hR47yW1A>^Za@ z*Pv0#RR~No7g7gD&Yt(}rY18Y95no6ZmR5|oEJ?R?P{;MD>=B9HF?fcBB|0K5RSVi z^OxuIqE-wPIc$zZrSUBFjR+XcA*rR=xxO<>nl69qqbHefrH2IR z_cf5M%tUS4z%2Arx~^_~6VGI$LgT+tQg|X!qJB^kJIK*Y!ztN^U?Ay(gV&~5F@(42 zl;q(S5EY=dAUXv%Q;D3*S*^a62r3|~X!V@6sP&@4lDRA0G1V<6{&va0GDYO6mDR`taoLfI)J8{yKS+^1IEq7rxIF?%i%M1bi~<&{@GJBJo5 zRq;Aa{1L1m_YhW8Z)z1oo*+4tcm~fpo+viU!{`dtuDvb}jUAVk7V#?*(NuBx#Yv!T zo)in7<|y_$F{5Q!+6}`<#|%T@RAOU83uZ%gF#yGb<)|(}Rg7I2SkbsVUZuMWD=0P$dt0|n_eisMe=9r1dMq}5msU?DO>RX% zVa!A2uKAn`R1$zv^)XllZRtTu#^^M1-k!?6ASp-!QAJ zve2y@jzz~h%|bHqSx_wpI~5)cH`vq5>F(%K1ZfvT2@X_k(rRPj^HgLgBB8JeFEKoX%?_WipnG52E2_Lcn-;KqgU72!yQaOFwp~IRLA|oR zd`d#>VU(Q)nG{=C#VWgtOQYFccJ*#@4w(MqtR%|wWG-d^d^C-(sAHrk57F~3baJgO z?TQ1##doKC)N(Xb6y#Xj81h}zp8!D)%n{OM&V0ElM~~}>?)JHNO+(On2`E8m$7YPR z21w3M%i~Z557F4kfr?pENu#@IvxJ|?5u`>c{hY+|HVU%K5S!88*lyIv`y^G38@TS> zZ=c9>hNisP)6k~xxKInseE_K=4yiMX;owwUDtH_3`b8+>0E@Y=qB2h%Kmn3%CetTfIn`{s!OtL2f3W?=_Edt>ko;dTK`WKE3~MBrm` z#O`yd)yc?ICd2rRlpW(MLvUQXpaS0L&n~w{78R4iJhtGq-|0IcEtGv0pDwFUj*^^V_lU2fDK#?SA8t!G$ zj_}{OpHpjKqkyu1kBRu?9&x6w$vFfr-)pKOrsKK)-a9SSjN<5NJ?%G~0q!OgT@Ku0 zG_1rvv18M{pyS(slm27wY>XtyVeaS>3I2dIhXg?XP1s1(_^=%cNfG*Vce^v)RV46U zrcN;GZr*eaTCt+N6=bbFQ0x|AWQeeaF5RZca105_Xxc{%NKSfIe;hMOSyQ>-TyYG^%N$Hr!*y7(fbrE}}{!sqxcwjvG@ zNK)KY5JT3zW8o&}cEZp?cBjTewiWS-T-to3yBXnFdAvrE6)hffMT^iU8R=wCUo`$faKJCJxCd7olX^=T zo4)bYBr@>~Fa5yU>~_Z)O0)?**uAjbUyX7XVMzXr*Lo=iq@0p9P=y=0q4Udbxp@vN z@Pt&S)6499*fQSg{AcjPKR2E_d-8%N2}#Z3sq?hL+plecP`QeKzkMG+vKzhUW_X|(_g}qG1M6E?(xBd${clPy|-^^ zAv-z#FX@c4$?_;PbcPX`P%b5A^O3yAy2#6M`o#i$g;8nqh^#-Gz-#H}?8k}fNtWqf5yPFeQh>LNFfNHXTb0eZS&gYSoD zq#wTgK-xFWb!0R8cyX?Ij0MUAW9U^efE(<7b!r(787ukb&idrFg?Ui~<(>${le}5i zBAxo*0KR(-K|0jl{DEQab6NDB`0FxTc$3j?y_+DfSTl?1bAl`%O7O`d?0FqY8M=lI_q-LaDUfs9`rKGD<`VpFKF z%R>0!J~&;w&pTL%j79fhD4Z*bX?HW1WnSAQch(QWwATH_@)-!0wT^3)8PcW(EXBe+ zxoy47&(c4DjDc_9t%I8eU>Jl_WjBgB;(hjRWEE?2k_oN*pl>z;%MJ6Xj=H#(NjS-< zs_On&95^FLQ0SDhz`Dz>La!8ZgQ{kr-*eb4Sh{Sc&Y!dOlj=+Y|_u zuX=NWAamlxgJ!M_4OxFngR0!?>^zex408}r_*et7{E=((&I2CQ>8|zxd}Ozar55kv zrIS_R)qrr#2Q(+FKrc+d{5(=u2R64#eZy{7^-ik}z8AGjzOQiy&>6z8<4#IUBnrJf zP2%JAogeFAoKz#)^}%xUjdKXXlhsUIMo!#XgXeb_*#Pc1L?ITX8!2q$Y5?&8!bL*- zO+L2d)G6Zh=CH92AqISfD$^KG16@$PRe5~-CQo0ZpuiscZrGRQzyy6~CvJ2y`IJ`M zsnFpur>`6*BUYcXAi4}5u7#W~lAe*mS+m(D$!bZL<=FZGKhn!`XBpIqG6rWLm zx5-e>Z-o4MosC3g=9(ZdBK@q*fWOxB-ogpOj;D+RhIVjz-WHV{8e2MfWARDL%fdZq zgDilkqN;ey_mC=u=i3yZCfEb_>$g0clNK;7PUJgj^$uQ0!5Oo^&a5bWad2bs0rG;! zJNjnll zQ57=~b*8MWQmM~%QG3a-{4^2iKTHb z6{(CULRb5i0jI%uWKu?zgI_-@Hi$fjWHya=30l(Ee3M`kH?1BjTi?2nm!>38Py_Dt zK?#5TP|n>@NN6c&>bC)r_d;oe;bQ+NmziBIlbP{5LE29CY&PMvUZwziITYUI!at&; zEdv|E54ZtXxxACcB1be*bA*{u=4u?>5Irj`6aLjcpea3*fdFVNXG4+DRRCRVn0QfQ zT*Yn=RuyWXAo}CB0|bI$5Y~i)_q@YC8g>*7In

{GD+lbDFAvji{pCwUS(PfXS}8 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 R6h6QY{9im='); } else if (change.removed) { ret.push(''); } - ret.push(escapeHTML(change.value)); - if (change.added) { ret.push(''); } else if (change.removed) { ret.push(''); } } - return ret.join(''); } - function escapeHTML(s) { var n = s; n = n.replace(/&/g, '&'); @@ -39,4 +32,4 @@ function escapeHTML(s) { n = n.replace(/"/g, '"'); return n; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQW1CQSxDQUFDQyxPQUFPLEVBQUU7RUFDM0MsSUFBSUMsR0FBRyxHQUFHLEVBQUU7RUFDWixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3ZDLElBQUlFLE1BQU0sR0FBR0osT0FBTyxDQUFDRSxDQUFDLENBQUM7SUFDdkIsSUFBSUUsTUFBTSxDQUFDQyxLQUFLLEVBQUU7TUFDaEJKLEdBQUcsQ0FBQ0ssSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNuQixDQUFDLE1BQU0sSUFBSUYsTUFBTSxDQUFDRyxPQUFPLEVBQUU7TUFDekJOLEdBQUcsQ0FBQ0ssSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNuQjtJQUVBTCxHQUFHLENBQUNLLElBQUksQ0FBQ0UsVUFBVSxDQUFDSixNQUFNLENBQUNLLEtBQUssQ0FBQyxDQUFDO0lBRWxDLElBQUlMLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFO01BQ2hCSixHQUFHLENBQUNLLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxNQUFNLElBQUlGLE1BQU0sQ0FBQ0csT0FBTyxFQUFFO01BQ3pCTixHQUFHLENBQUNLLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDcEI7RUFDRjtFQUNBLE9BQU9MLEdBQUcsQ0FBQ1MsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNyQjtBQUVBLFNBQVNGLFVBQVVBLENBQUNHLENBQUMsRUFBRTtFQUNyQixJQUFJQyxDQUFDLEdBQUdELENBQUM7RUFDVEMsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0VBQzVCRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7RUFDM0JELENBQUMsR0FBR0EsQ0FBQyxDQUFDQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztFQUMzQkQsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO0VBRTdCLE9BQU9ELENBQUM7QUFDViIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/lib/diff/array.js b/lib/diff/array.js index 19e368098..e141d04ab 100644 --- a/lib/diff/array.js +++ b/lib/diff/array.js @@ -4,20 +4,21 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.diffArrays = diffArrays; exports.arrayDiff = void 0; - +exports.diffArrays = diffArrays; /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +/*istanbul ignore end*/ +var arrayDiff = +/*istanbul ignore start*/ +exports.arrayDiff = /*istanbul ignore end*/ -var arrayDiff = new +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -26,20 +27,13 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.arrayDiff = arrayDiff; - -/*istanbul ignore end*/ arrayDiff.tokenize = function (value) { return value.slice(); }; - arrayDiff.join = arrayDiff.removeEmpty = function (value) { return value; }; - function diffArrays(oldArr, newArr, callback) { return arrayDiff.diff(oldArr, newArr, callback); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJhcnJheURpZmYiLCJleHBvcnRzIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzbGljZSIsImpvaW4iLCJyZW1vdmVFbXB0eSIsImRpZmZBcnJheXMiLCJvbGRBcnIiLCJuZXdBcnIiLCJjYWxsYmFjayIsImRpZmYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGlmZi9hcnJheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgYXJyYXlEaWZmID0gbmV3IERpZmYoKTtcbmFycmF5RGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgpO1xufTtcbmFycmF5RGlmZi5qb2luID0gYXJyYXlEaWZmLnJlbW92ZUVtcHR5ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZBcnJheXMob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKSB7IHJldHVybiBhcnJheURpZmYuZGlmZihvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spOyB9XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQUE7QUFBQTtBQUEwQixtQ0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBO0FBRW5CLElBQU1FLFNBQVM7QUFBQTtBQUFBQyxPQUFBLENBQUFELFNBQUE7QUFBQTtBQUFHO0FBQUlFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUksQ0FBQyxDQUFDO0FBQ25DRixTQUFTLENBQUNHLFFBQVEsR0FBRyxVQUFTQyxLQUFLLEVBQUU7RUFDbkMsT0FBT0EsS0FBSyxDQUFDQyxLQUFLLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0RMLFNBQVMsQ0FBQ00sSUFBSSxHQUFHTixTQUFTLENBQUNPLFdBQVcsR0FBRyxVQUFTSCxLQUFLLEVBQUU7RUFDdkQsT0FBT0EsS0FBSztBQUNkLENBQUM7QUFFTSxTQUFTSSxVQUFVQSxDQUFDQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFO0VBQUUsT0FBT1gsU0FBUyxDQUFDWSxJQUFJLENBQUNILE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLENBQUM7QUFBRSIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/lib/diff/base.js b/lib/diff/base.js index 521da8a6d..538aae0ef 100644 --- a/lib/diff/base.js +++ b/lib/diff/base.js @@ -5,255 +5,278 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = Diff; - /*istanbul ignore end*/ function Diff() {} - Diff.prototype = { /*istanbul ignore start*/ - /*istanbul ignore end*/ diff: function diff(oldString, newString) { /*istanbul ignore start*/ + var _options$timeout; var /*istanbul ignore end*/ options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var callback = options.callback; - if (typeof options === 'function') { callback = options; options = {}; } - - this.options = options; var self = this; - function done(value) { + value = self.postProcess(value, options); if (callback) { setTimeout(function () { - callback(undefined, value); + callback(value); }, 0); return true; } else { return value; } - } // Allow subclasses to massage the input prior to running - + } - oldString = this.castInput(oldString); - newString = this.castInput(newString); - oldString = this.removeEmpty(this.tokenize(oldString)); - newString = this.removeEmpty(this.tokenize(newString)); + // Allow subclasses to massage the input prior to running + oldString = this.castInput(oldString, options); + newString = this.castInput(newString, options); + oldString = this.removeEmpty(this.tokenize(oldString, options)); + newString = this.removeEmpty(this.tokenize(newString, options)); var newLen = newString.length, - oldLen = oldString.length; + oldLen = oldString.length; var editLength = 1; var maxEditLength = newLen + oldLen; - - if (options.maxEditLength) { + if (options.maxEditLength != null) { maxEditLength = Math.min(maxEditLength, options.maxEditLength); } - + var maxExecutionTime = + /*istanbul ignore start*/ + (_options$timeout = + /*istanbul ignore end*/ + options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity; + var abortAfterTimestamp = Date.now() + maxExecutionTime; var bestPath = [{ - newPos: -1, - components: [] - }]; // Seed editLength = 0, i.e. the content starts with the same values - - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + oldPos: -1, + lastComponent: undefined + }]; - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Seed editLength = 0, i.e. the content starts with the same values + var newPos = this.extractCommon(bestPath[0], newString, oldString, 0, options); + if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { // Identity per the equality and tokenizer - return done([{ - value: this.join(newString), - count: newString.length - }]); - } // Main worker method. checks all permutations of a given edit length for acceptance. - + return done(buildValues(self, bestPath[0].lastComponent, newString, oldString, self.useLongestToken)); + } + // Once we hit the right edge of the edit graph on some diagonal k, we can + // definitely reach the end of the edit graph in no more than k edits, so + // there's no point in considering any moves to diagonal k+1 any more (from + // which we're guaranteed to need at least k+1 more edits). + // Similarly, once we've reached the bottom of the edit graph, there's no + // point considering moves to lower diagonals. + // We record this fact by setting minDiagonalToConsider and + // maxDiagonalToConsider to some finite value once we've hit the edge of + // the edit graph. + // This optimization is not faithful to the original algorithm presented in + // Myers's paper, which instead pointlessly extends D-paths off the end of + // the edit graph - see page 7 of Myers's paper which notes this point + // explicitly and illustrates it with a diagram. This has major performance + // implications for some common scenarios. For instance, to compute a diff + // where the new text simply appends d characters on the end of the + // original text of length n, the true Myers algorithm will take O(n+d^2) + // time while this optimization needs only O(n+d) time. + var minDiagonalToConsider = -Infinity, + maxDiagonalToConsider = Infinity; + + // Main worker method. checks all permutations of a given edit length for acceptance. function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { var basePath = /*istanbul ignore start*/ void 0 /*istanbul ignore end*/ ; - - var addPath = bestPath[diagonalPath - 1], - removePath = bestPath[diagonalPath + 1], - _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - - if (addPath) { + var removePath = bestPath[diagonalPath - 1], + addPath = bestPath[diagonalPath + 1]; + if (removePath) { // No one else is going to attempt to use this value, clear it bestPath[diagonalPath - 1] = undefined; } - - var canAdd = addPath && addPath.newPos + 1 < newLen, - canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; - + var canAdd = false; + if (addPath) { + // what newPos will be after we do an insertion: + var addPathNewPos = addPath.oldPos - diagonalPath; + canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; + } + var canRemove = removePath && removePath.oldPos + 1 < oldLen; if (!canAdd && !canRemove) { // If this path is a terminal then prune bestPath[diagonalPath] = undefined; continue; - } // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - + } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self.pushComponent(basePath.components, undefined, true); + // Select the diagonal that we want to branch from. We select the prior + // path whose position in the old string is the farthest from the origin + // and does not pass the bounds of the diff graph + if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) { + basePath = self.addToPath(addPath, true, false, 0, options); } else { - basePath = addPath; // No need to clone, we've pulled it from the list - - basePath.newPos++; - self.pushComponent(basePath.components, true, undefined); + basePath = self.addToPath(removePath, false, true, 1, options); } - - _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done - - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + newPos = self.extractCommon(basePath, newString, oldString, diagonalPath, options); + if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { + // If we have hit the end of both strings, then we are done + return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken)); } else { - // Otherwise track this path as a potential candidate and continue. bestPath[diagonalPath] = basePath; + if (basePath.oldPos + 1 >= oldLen) { + maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); + } + if (newPos + 1 >= newLen) { + minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); + } } } - editLength++; - } // Performs the length of edit iteration. Is a bit fugly as this has to support the + } + + // Performs the length of edit iteration. Is a bit fugly as this has to support the // sync and async mode which is never fun. Loops over execEditLength until a value // is produced, or until the edit length exceeds options.maxEditLength (if given), // in which case it will return undefined. - - if (callback) { (function exec() { setTimeout(function () { - if (editLength > maxEditLength) { + if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { return callback(); } - if (!execEditLength()) { exec(); } }, 0); })(); } else { - while (editLength <= maxEditLength) { + while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { var ret = execEditLength(); - if (ret) { return ret; } } } }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ - pushComponent: function pushComponent(components, added, removed) { - var last = components[components.length - 1]; - - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length - 1] = { - count: last.count + 1, - added: added, - removed: removed + addToPath: function addToPath(path, added, removed, oldPosInc, options) { + var last = path.lastComponent; + if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) { + return { + oldPos: path.oldPos + oldPosInc, + lastComponent: { + count: last.count + 1, + added: added, + removed: removed, + previousComponent: last.previousComponent + } }; } else { - components.push({ - count: 1, - added: added, - removed: removed - }); + return { + oldPos: path.oldPos + oldPosInc, + lastComponent: { + count: 1, + added: added, + removed: removed, + previousComponent: last + } + }; } }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ - extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath, options) { var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath, - commonCount = 0; - - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + oldLen = oldString.length, + oldPos = basePath.oldPos, + newPos = oldPos - diagonalPath, + commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldString[oldPos + 1], newString[newPos + 1], options)) { newPos++; oldPos++; commonCount++; + if (options.oneChangePerToken) { + basePath.lastComponent = { + count: 1, + previousComponent: basePath.lastComponent, + added: false, + removed: false + }; + } } - - if (commonCount) { - basePath.components.push({ - count: commonCount - }); + if (commonCount && !options.oneChangePerToken) { + basePath.lastComponent = { + count: commonCount, + previousComponent: basePath.lastComponent, + added: false, + removed: false + }; } - - basePath.newPos = newPos; - return oldPos; + basePath.oldPos = oldPos; + return newPos; }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ - equals: function equals(left, right) { - if (this.options.comparator) { - return this.options.comparator(left, right); + equals: function equals(left, right, options) { + if (options.comparator) { + return options.comparator(left, right); } else { - return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + return left === right || options.ignoreCase && left.toLowerCase() === right.toLowerCase(); } }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ removeEmpty: function removeEmpty(array) { var ret = []; - for (var i = 0; i < array.length; i++) { if (array[i]) { ret.push(array[i]); } } - return ret; }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ castInput: function castInput(value) { return value; }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ tokenize: function tokenize(value) { - return value.split(''); + return Array.from(value); }, - /*istanbul ignore start*/ - /*istanbul ignore end*/ join: function join(chars) { return chars.join(''); + }, + /*istanbul ignore start*/ + /*istanbul ignore end*/ + postProcess: function postProcess(changeObjects) { + return changeObjects; } }; - -function buildValues(diff, components, newString, oldString, useLongestToken) { +function buildValues(diff, lastComponent, newString, oldString, useLongestToken) { + // First we convert our linked list of components in reverse order to an + // array in the right order: + var components = []; + var nextComponent; + while (lastComponent) { + components.push(lastComponent); + nextComponent = lastComponent.previousComponent; + delete lastComponent.previousComponent; + lastComponent = nextComponent; + } + components.reverse(); var componentPos = 0, - componentLen = components.length, - newPos = 0, - oldPos = 0; - + componentLen = components.length, + newPos = 0, + oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; - if (!component.removed) { if (!component.added && useLongestToken) { var value = newString.slice(newPos, newPos + component.count); @@ -265,43 +288,17 @@ function buildValues(diff, components, newString, oldString, useLongestToken) { } else { component.value = diff.join(newString.slice(newPos, newPos + component.count)); } + newPos += component.count; - newPos += component.count; // Common case - + // Common case if (!component.added) { oldPos += component.count; } } else { component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); - oldPos += component.count; // Reverse add and remove so removes are output first to match common convention - // The diffing algorithm is tied to add then remove output and this is the simplest - // route to get the desired output with minimal overhead. - - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } + oldPos += component.count; } - } // Special case handle for when one terminal is ignored (i.e. whitespace). - // For this case we merge the terminal into the prior string and drop the change. - // This is only available for string mode. - - - var lastComponent = components[componentLen - 1]; - - if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; - components.pop(); } - return components; } - -function clonePath(path) { - return { - newPos: path.newPos, - components: path.components.slice(0) - }; -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJiZXN0UGF0aCIsIm5ld1BvcyIsImNvbXBvbmVudHMiLCJvbGRQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJiYXNlUGF0aCIsImFkZFBhdGgiLCJyZW1vdmVQYXRoIiwiY2FuQWRkIiwiY2FuUmVtb3ZlIiwiY2xvbmVQYXRoIiwicHVzaENvbXBvbmVudCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsImFkZGVkIiwicmVtb3ZlZCIsImxhc3QiLCJwdXNoIiwiY29tbW9uQ291bnQiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjb21wYXJhdG9yIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiYXJyYXkiLCJpIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBvbmVudCIsInNsaWNlIiwibWFwIiwib2xkVmFsdWUiLCJ0bXAiLCJsYXN0Q29tcG9uZW50IiwicG9wIiwicGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWUsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsSUFBSSxDQUFDQyxTQUFMLEdBQWlCO0FBQUE7O0FBQUE7QUFDZkMsRUFBQUEsSUFEZSxnQkFDVkMsU0FEVSxFQUNDQyxTQURELEVBQzBCO0FBQUE7QUFB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R0FBMkJNLEdBQTNCO0FBQ0Q7QUFDRjtBQUNGLEdBdkMyRSxDQXlDNUU7QUFDQTtBQUNBOzs7QUFDQSxNQUFJQyxhQUFhLEdBQUd4QyxVQUFVLENBQUNrQyxZQUFZLEdBQUcsQ0FBaEIsQ0FBOUI7O0FBQ0EsTUFBSUEsWUFBWSxHQUFHLENBQWYsSUFDRyxPQUFPTSxhQUFhLENBQUN2RCxLQUFyQixLQUErQixRQURsQyxLQUVJdUQsYUFBYSxDQUFDdEIsS0FBZCxJQUF1QnNCLGFBQWEsQ0FBQ3JCLE9BRnpDLEtBR0d6QyxJQUFJLENBQUM2QyxNQUFMLENBQVksRUFBWixFQUFnQmlCLGFBQWEsQ0FBQ3ZELEtBQTlCLENBSFAsRUFHNkM7QUFDM0NlLElBQUFBLFVBQVUsQ0FBQ2tDLFlBQVksR0FBRyxDQUFoQixDQUFWLENBQTZCakQsS0FBN0IsSUFBc0N1RCxhQUFhLENBQUN2RCxLQUFwRDtBQUNBZSxJQUFBQSxVQUFVLENBQUN5QyxHQUFYO0FBQ0Q7O0FBRUQsU0FBT3pDLFVBQVA7QUFDRDs7QUFFRCxTQUFTWSxTQUFULENBQW1COEIsSUFBbkIsRUFBeUI7QUFDdkIsU0FBTztBQUFFM0MsSUFBQUEsTUFBTSxFQUFFMkMsSUFBSSxDQUFDM0MsTUFBZjtBQUF1QkMsSUFBQUEsVUFBVSxFQUFFMEMsSUFBSSxDQUFDMUMsVUFBTCxDQUFnQm9DLEtBQWhCLENBQXNCLENBQXRCO0FBQW5DLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBuZXdQb3M6IC0xLCBjb21wb25lbnRzOiBbXSB9XTtcblxuICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG4gICAgbGV0IG9sZFBvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIDApO1xuICAgIGlmIChiZXN0UGF0aFswXS5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgLy8gSWRlbnRpdHkgcGVyIHRoZSBlcXVhbGl0eSBhbmQgdG9rZW5pemVyXG4gICAgICByZXR1cm4gZG9uZShbe3ZhbHVlOiB0aGlzLmpvaW4obmV3U3RyaW5nKSwgY291bnQ6IG5ld1N0cmluZy5sZW5ndGh9XSk7XG4gICAgfVxuXG4gICAgLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgZm9yIChsZXQgZGlhZ29uYWxQYXRoID0gLTEgKiBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggPD0gZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoICs9IDIpIHtcbiAgICAgICAgbGV0IGJhc2VQYXRoO1xuICAgICAgICBsZXQgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLFxuICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCArIDFdLFxuICAgICAgICAgICAgb2xkUG9zID0gKHJlbW92ZVBhdGggPyByZW1vdmVQYXRoLm5ld1BvcyA6IDApIC0gZGlhZ29uYWxQYXRoO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMgdmFsdWUsIGNsZWFyIGl0XG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcyArIDEgPCBuZXdMZW4sXG4gICAgICAgICAgICBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gb2xkUG9zICYmIG9sZFBvcyA8IG9sZExlbjtcbiAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJlbW92ZSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgcGF0aCBpcyBhIHRlcm1pbmFsIHRoZW4gcHJ1bmVcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNlbGVjdCB0aGUgcHJpb3JcbiAgICAgICAgLy8gcGF0aCB3aG9zZSBwb3NpdGlvbiBpbiB0aGUgbmV3IHN0cmluZyBpcyB0aGUgZmFydGhlc3QgZnJvbSB0aGUgb3JpZ2luXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBib3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGhcbiAgICAgICAgaWYgKCFjYW5BZGQgfHwgKGNhblJlbW92ZSAmJiBhZGRQYXRoLm5ld1BvcyA8IHJlbW92ZVBhdGgubmV3UG9zKSkge1xuICAgICAgICAgIGJhc2VQYXRoID0gY2xvbmVQYXRoKHJlbW92ZVBhdGgpO1xuICAgICAgICAgIHNlbGYucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VQYXRoID0gYWRkUGF0aDsgLy8gTm8gbmVlZCB0byBjbG9uZSwgd2UndmUgcHVsbGVkIGl0IGZyb20gdGhlIGxpc3RcbiAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdHJ1ZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9sZFBvcyA9IHNlbGYuZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCk7XG5cbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBoaXQgdGhlIGVuZCBvZiBib3RoIHN0cmluZ3MsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICAgICAgaWYgKGJhc2VQYXRoLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUoYnVpbGRWYWx1ZXMoc2VsZiwgYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHNlbGYudXNlTG9uZ2VzdFRva2VuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHRyYWNrIHRoaXMgcGF0aCBhcyBhIHBvdGVudGlhbCBjYW5kaWRhdGUgYW5kIGNvbnRpbnVlLlxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlZGl0TGVuZ3RoKys7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybXMgdGhlIGxlbmd0aCBvZiBlZGl0IGl0ZXJhdGlvbi4gSXMgYSBiaXQgZnVnbHkgYXMgdGhpcyBoYXMgdG8gc3VwcG9ydCB0aGVcbiAgICAvLyBzeW5jIGFuZCBhc3luYyBtb2RlIHdoaWNoIGlzIG5ldmVyIGZ1bi4gTG9vcHMgb3ZlciBleGVjRWRpdExlbmd0aCB1bnRpbCBhIHZhbHVlXG4gICAgLy8gaXMgcHJvZHVjZWQsIG9yIHVudGlsIHRoZSBlZGl0IGxlbmd0aCBleGNlZWRzIG9wdGlvbnMubWF4RWRpdExlbmd0aCAoaWYgZ2l2ZW4pLFxuICAgIC8vIGluIHdoaWNoIGNhc2UgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGVkaXRMZW5ndGggPiBtYXhFZGl0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIGV4ZWMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICBsZXQgcmV0ID0gZXhlY0VkaXRMZW5ndGgoKTtcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgIGxldCBsYXN0ID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjbG9uZSBoZXJlIGFzIHRoZSBjb21wb25lbnQgY2xvbmUgb3BlcmF0aW9uIGlzIGp1c3RcbiAgICAgIC8vIGFzIHNoYWxsb3cgYXJyYXkgY2xvbmVcbiAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXSA9IHtjb3VudDogbGFzdC5jb3VudCArIDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnRzLnB1c2goe2NvdW50OiAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfSk7XG4gICAgfVxuICB9LFxuICBleHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKSB7XG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsXG4gICAgICAgIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsXG4gICAgICAgIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1BvcyxcbiAgICAgICAgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLFxuXG4gICAgICAgIGNvbW1vbkNvdW50ID0gMDtcbiAgICB3aGlsZSAobmV3UG9zICsgMSA8IG5ld0xlbiAmJiBvbGRQb3MgKyAxIDwgb2xkTGVuICYmIHRoaXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MgKyAxXSwgb2xkU3RyaW5nW29sZFBvcyArIDFdKSkge1xuICAgICAgbmV3UG9zKys7XG4gICAgICBvbGRQb3MrKztcbiAgICAgIGNvbW1vbkNvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1vbkNvdW50KSB7XG4gICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe2NvdW50OiBjb21tb25Db3VudH0pO1xuICAgIH1cblxuICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvcztcbiAgICByZXR1cm4gb2xkUG9zO1xuICB9LFxuXG4gIGVxdWFscyhsZWZ0LCByaWdodCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKGxlZnQsIHJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0XG4gICAgICAgIHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSAmJiBsZWZ0LnRvTG93ZXJDYXNlKCkgPT09IHJpZ2h0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlRW1wdHkoYXJyYXkpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycmF5W2ldKSB7XG4gICAgICAgIHJldC5wdXNoKGFycmF5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgY2FzdElucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICB0b2tlbml6ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnJyk7XG4gIH0sXG4gIGpvaW4oY2hhcnMpIHtcbiAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgbGV0IGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW1vdmVkKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCAmJiB1c2VMb25nZXN0VG9rZW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUsIGkpIHtcbiAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4obmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gUmV2ZXJzZSBhZGQgYW5kIHJlbW92ZSBzbyByZW1vdmVzIGFyZSBvdXRwdXQgZmlyc3QgdG8gbWF0Y2ggY29tbW9uIGNvbnZlbnRpb25cbiAgICAgIC8vIFRoZSBkaWZmaW5nIGFsZ29yaXRobSBpcyB0aWVkIHRvIGFkZCB0aGVuIHJlbW92ZSBvdXRwdXQgYW5kIHRoaXMgaXMgdGhlIHNpbXBsZXN0XG4gICAgICAvLyByb3V0ZSB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0IHdpdGggbWluaW1hbCBvdmVyaGVhZC5cbiAgICAgIGlmIChjb21wb25lbnRQb3MgJiYgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXS5hZGRlZCkge1xuICAgICAgICBsZXQgdG1wID0gY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3MgLSAxXSA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICAgICAgY29tcG9uZW50c1tjb21wb25lbnRQb3NdID0gdG1wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpYWwgY2FzZSBoYW5kbGUgZm9yIHdoZW4gb25lIHRlcm1pbmFsIGlzIGlnbm9yZWQgKGkuZS4gd2hpdGVzcGFjZSkuXG4gIC8vIEZvciB0aGlzIGNhc2Ugd2UgbWVyZ2UgdGhlIHRlcm1pbmFsIGludG8gdGhlIHByaW9yIHN0cmluZyBhbmQgZHJvcCB0aGUgY2hhbmdlLlxuICAvLyBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBzdHJpbmcgbW9kZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGxhc3RDb21wb25lbnQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgbGFzdENvbXBvbmVudC52YWx1ZSkpIHtcbiAgICBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDJdLnZhbHVlICs9IGxhc3RDb21wb25lbnQudmFsdWU7XG4gICAgY29tcG9uZW50cy5wb3AoKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRzO1xufVxuXG5mdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkge1xuICByZXR1cm4geyBuZXdQb3M6IHBhdGgubmV3UG9zLCBjb21wb25lbnRzOiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMCkgfTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEaWZmIiwicHJvdG90eXBlIiwiZGlmZiIsIm9sZFN0cmluZyIsIm5ld1N0cmluZyIsIl9vcHRpb25zJHRpbWVvdXQiLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwicG9zdFByb2Nlc3MiLCJzZXRUaW1lb3V0IiwiY2FzdElucHV0IiwicmVtb3ZlRW1wdHkiLCJ0b2tlbml6ZSIsIm5ld0xlbiIsIm9sZExlbiIsImVkaXRMZW5ndGgiLCJtYXhFZGl0TGVuZ3RoIiwiTWF0aCIsIm1pbiIsIm1heEV4ZWN1dGlvblRpbWUiLCJ0aW1lb3V0IiwiSW5maW5pdHkiLCJhYm9ydEFmdGVyVGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImJlc3RQYXRoIiwib2xkUG9zIiwibGFzdENvbXBvbmVudCIsIm5ld1BvcyIsImV4dHJhY3RDb21tb24iLCJidWlsZFZhbHVlcyIsInVzZUxvbmdlc3RUb2tlbiIsIm1pbkRpYWdvbmFsVG9Db25zaWRlciIsIm1heERpYWdvbmFsVG9Db25zaWRlciIsImV4ZWNFZGl0TGVuZ3RoIiwiZGlhZ29uYWxQYXRoIiwibWF4IiwiYmFzZVBhdGgiLCJyZW1vdmVQYXRoIiwiYWRkUGF0aCIsImNhbkFkZCIsImFkZFBhdGhOZXdQb3MiLCJjYW5SZW1vdmUiLCJhZGRUb1BhdGgiLCJleGVjIiwicmV0IiwicGF0aCIsImFkZGVkIiwicmVtb3ZlZCIsIm9sZFBvc0luYyIsImxhc3QiLCJvbmVDaGFuZ2VQZXJUb2tlbiIsImNvdW50IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwiQXJyYXkiLCJmcm9tIiwiam9pbiIsImNoYXJzIiwiY2hhbmdlT2JqZWN0cyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBvbmVudCIsInNsaWNlIiwibWFwIiwib2xkVmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGlmZi9iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHNlbGYucG9zdFByb2Nlc3ModmFsdWUsIG9wdGlvbnMpO1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGNhbGxiYWNrKHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZywgb3B0aW9ucyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nLCBvcHRpb25zKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcsIG9wdGlvbnMpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nLCBvcHRpb25zKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIG1heEVkaXRMZW5ndGggPSBNYXRoLm1pbihtYXhFZGl0TGVuZ3RoLCBvcHRpb25zLm1heEVkaXRMZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBtYXhFeGVjdXRpb25UaW1lID0gb3B0aW9ucy50aW1lb3V0ID8/IEluZmluaXR5O1xuICAgIGNvbnN0IGFib3J0QWZ0ZXJUaW1lc3RhbXAgPSBEYXRlLm5vdygpICsgbWF4RXhlY3V0aW9uVGltZTtcblxuICAgIGxldCBiZXN0UGF0aCA9IFt7IG9sZFBvczogLTEsIGxhc3RDb21wb25lbnQ6IHVuZGVmaW5lZCB9XTtcblxuICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG4gICAgbGV0IG5ld1BvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIDAsIG9wdGlvbnMpO1xuICAgIGlmIChiZXN0UGF0aFswXS5vbGRQb3MgKyAxID49IG9sZExlbiAmJiBuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgLy8gSWRlbnRpdHkgcGVyIHRoZSBlcXVhbGl0eSBhbmQgdG9rZW5pemVyXG4gICAgICByZXR1cm4gZG9uZShidWlsZFZhbHVlcyhzZWxmLCBiZXN0UGF0aFswXS5sYXN0Q29tcG9uZW50LCBuZXdTdHJpbmcsIG9sZFN0cmluZywgc2VsZi51c2VMb25nZXN0VG9rZW4pKTtcbiAgICB9XG5cbiAgICAvLyBPbmNlIHdlIGhpdCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgZWRpdCBncmFwaCBvbiBzb21lIGRpYWdvbmFsIGssIHdlIGNhblxuICAgIC8vIGRlZmluaXRlbHkgcmVhY2ggdGhlIGVuZCBvZiB0aGUgZWRpdCBncmFwaCBpbiBubyBtb3JlIHRoYW4gayBlZGl0cywgc29cbiAgICAvLyB0aGVyZSdzIG5vIHBvaW50IGluIGNvbnNpZGVyaW5nIGFueSBtb3ZlcyB0byBkaWFnb25hbCBrKzEgYW55IG1vcmUgKGZyb21cbiAgICAvLyB3aGljaCB3ZSdyZSBndWFyYW50ZWVkIHRvIG5lZWQgYXQgbGVhc3QgaysxIG1vcmUgZWRpdHMpLlxuICAgIC8vIFNpbWlsYXJseSwgb25jZSB3ZSd2ZSByZWFjaGVkIHRoZSBib3R0b20gb2YgdGhlIGVkaXQgZ3JhcGgsIHRoZXJlJ3Mgbm9cbiAgICAvLyBwb2ludCBjb25zaWRlcmluZyBtb3ZlcyB0byBsb3dlciBkaWFnb25hbHMuXG4gICAgLy8gV2UgcmVjb3JkIHRoaXMgZmFjdCBieSBzZXR0aW5nIG1pbkRpYWdvbmFsVG9Db25zaWRlciBhbmRcbiAgICAvLyBtYXhEaWFnb25hbFRvQ29uc2lkZXIgdG8gc29tZSBmaW5pdGUgdmFsdWUgb25jZSB3ZSd2ZSBoaXQgdGhlIGVkZ2Ugb2ZcbiAgICAvLyB0aGUgZWRpdCBncmFwaC5cbiAgICAvLyBUaGlzIG9wdGltaXphdGlvbiBpcyBub3QgZmFpdGhmdWwgdG8gdGhlIG9yaWdpbmFsIGFsZ29yaXRobSBwcmVzZW50ZWQgaW5cbiAgICAvLyBNeWVycydzIHBhcGVyLCB3aGljaCBpbnN0ZWFkIHBvaW50bGVzc2x5IGV4dGVuZHMgRC1wYXRocyBvZmYgdGhlIGVuZCBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoIC0gc2VlIHBhZ2UgNyBvZiBNeWVycydzIHBhcGVyIHdoaWNoIG5vdGVzIHRoaXMgcG9pbnRcbiAgICAvLyBleHBsaWNpdGx5IGFuZCBpbGx1c3RyYXRlcyBpdCB3aXRoIGEgZGlhZ3JhbS4gVGhpcyBoYXMgbWFqb3IgcGVyZm9ybWFuY2VcbiAgICAvLyBpbXBsaWNhdGlvbnMgZm9yIHNvbWUgY29tbW9uIHNjZW5hcmlvcy4gRm9yIGluc3RhbmNlLCB0byBjb21wdXRlIGEgZGlmZlxuICAgIC8vIHdoZXJlIHRoZSBuZXcgdGV4dCBzaW1wbHkgYXBwZW5kcyBkIGNoYXJhY3RlcnMgb24gdGhlIGVuZCBvZiB0aGVcbiAgICAvLyBvcmlnaW5hbCB0ZXh0IG9mIGxlbmd0aCBuLCB0aGUgdHJ1ZSBNeWVycyBhbGdvcml0aG0gd2lsbCB0YWtlIE8obitkXjIpXG4gICAgLy8gdGltZSB3aGlsZSB0aGlzIG9wdGltaXphdGlvbiBuZWVkcyBvbmx5IE8obitkKSB0aW1lLlxuICAgIGxldCBtaW5EaWFnb25hbFRvQ29uc2lkZXIgPSAtSW5maW5pdHksIG1heERpYWdvbmFsVG9Db25zaWRlciA9IEluZmluaXR5O1xuXG4gICAgLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuICAgIGZ1bmN0aW9uIGV4ZWNFZGl0TGVuZ3RoKCkge1xuICAgICAgZm9yIChcbiAgICAgICAgbGV0IGRpYWdvbmFsUGF0aCA9IE1hdGgubWF4KG1pbkRpYWdvbmFsVG9Db25zaWRlciwgLWVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggPD0gTWF0aC5taW4obWF4RGlhZ29uYWxUb0NvbnNpZGVyLCBlZGl0TGVuZ3RoKTtcbiAgICAgICAgZGlhZ29uYWxQYXRoICs9IDJcbiAgICAgICkge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV07XG4gICAgICAgIGlmIChyZW1vdmVQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGFkZFBhdGgpIHtcbiAgICAgICAgICAvLyB3aGF0IG5ld1BvcyB3aWxsIGJlIGFmdGVyIHdlIGRvIGFuIGluc2VydGlvbjpcbiAgICAgICAgICBjb25zdCBhZGRQYXRoTmV3UG9zID0gYWRkUGF0aC5vbGRQb3MgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgICAgY2FuQWRkID0gYWRkUGF0aCAmJiAwIDw9IGFkZFBhdGhOZXdQb3MgJiYgYWRkUGF0aE5ld1BvcyA8IG5ld0xlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIHJlbW92ZVBhdGgub2xkUG9zICsgMSA8IG9sZExlbjtcbiAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJlbW92ZSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgcGF0aCBpcyBhIHRlcm1pbmFsIHRoZW4gcHJ1bmVcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNlbGVjdCB0aGUgcHJpb3JcbiAgICAgICAgLy8gcGF0aCB3aG9zZSBwb3NpdGlvbiBpbiB0aGUgb2xkIHN0cmluZyBpcyB0aGUgZmFydGhlc3QgZnJvbSB0aGUgb3JpZ2luXG4gICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBib3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGhcbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyA8IGFkZFBhdGgub2xkUG9zKSkge1xuICAgICAgICAgIGJhc2VQYXRoID0gc2VsZi5hZGRUb1BhdGgoYWRkUGF0aCwgdHJ1ZSwgZmFsc2UsIDAsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VQYXRoID0gc2VsZi5hZGRUb1BhdGgocmVtb3ZlUGF0aCwgZmFsc2UsIHRydWUsIDEsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoLCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYywgb3B0aW9ucykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmICFvcHRpb25zLm9uZUNoYW5nZVBlclRva2VuICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgsIG9wdGlvbnMpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMob2xkU3RyaW5nW29sZFBvcyArIDFdLCBuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9wdGlvbnMpKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICAgIGlmIChvcHRpb25zLm9uZUNoYW5nZVBlclRva2VuKSB7XG4gICAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IDEsIHByZXZpb3VzQ29tcG9uZW50OiBiYXNlUGF0aC5sYXN0Q29tcG9uZW50LCBhZGRlZDogZmFsc2UsIHJlbW92ZWQ6IGZhbHNlfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQgJiYgIW9wdGlvbnMub25lQ2hhbmdlUGVyVG9rZW4pIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudCwgYWRkZWQ6IGZhbHNlLCByZW1vdmVkOiBmYWxzZX07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAob3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9LFxuICBwb3N0UHJvY2VzcyhjaGFuZ2VPYmplY3RzKSB7XG4gICAgcmV0dXJuIGNoYW5nZU9iamVjdHM7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgLy8gRmlyc3Qgd2UgY29udmVydCBvdXIgbGlua2VkIGxpc3Qgb2YgY29tcG9uZW50cyBpbiByZXZlcnNlIG9yZGVyIHRvIGFuXG4gIC8vIGFycmF5IGluIHRoZSByaWdodCBvcmRlcjpcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuICBsZXQgbmV4dENvbXBvbmVudDtcbiAgd2hpbGUgKGxhc3RDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnRzLnB1c2gobGFzdENvbXBvbmVudCk7XG4gICAgbmV4dENvbXBvbmVudCA9IGxhc3RDb21wb25lbnQucHJldmlvdXNDb21wb25lbnQ7XG4gICAgZGVsZXRlIGxhc3RDb21wb25lbnQucHJldmlvdXNDb21wb25lbnQ7XG4gICAgbGFzdENvbXBvbmVudCA9IG5leHRDb21wb25lbnQ7XG4gIH1cbiAgY29tcG9uZW50cy5yZXZlcnNlKCk7XG5cbiAgbGV0IGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcbiAgICBpZiAoIWNvbXBvbmVudC5yZW1vdmVkKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCAmJiB1c2VMb25nZXN0VG9rZW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUsIGkpIHtcbiAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbih2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4obmV3U3RyaW5nLnNsaWNlKG5ld1BvcywgbmV3UG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG9sZFN0cmluZy5zbGljZShvbGRQb3MsIG9sZFBvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBZSxTQUFTQSxJQUFJQSxDQUFBLEVBQUcsQ0FBQztBQUVoQ0EsSUFBSSxD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RyxDQUFDO0VBRWQsT0FBTzhDLFlBQVksR0FBR0MsWUFBWSxFQUFFRCxZQUFZLEVBQUUsRUFBRTtJQUNsRCxJQUFJRSxTQUFTLEdBQUdMLFVBQVUsQ0FBQ0csWUFBWSxDQUFDO0lBQ3hDLElBQUksQ0FBQ0UsU0FBUyxDQUFDMUIsT0FBTyxFQUFFO01BQ3RCLElBQUksQ0FBQzBCLFNBQVMsQ0FBQzNCLEtBQUssSUFBSWhCLGVBQWUsRUFBRTtRQUN2QyxJQUFJeEIsS0FBSyxHQUFHVCxTQUFTLENBQUM2RSxLQUFLLENBQUMvQyxNQUFNLEVBQUVBLE1BQU0sR0FBRzhDLFNBQVMsQ0FBQ3RCLEtBQUssQ0FBQztRQUM3RDdDLEtBQUssR0FBR0EsS0FBSyxDQUFDcUUsR0FBRyxDQUFDLFVBQVNyRSxLQUFLLEVBQUV1RCxDQUFDLEVBQUU7VUFDbkMsSUFBSWUsUUFBUSxHQUFHaEYsU0FBUyxDQUFDNkIsTUFBTSxHQUFHb0MsQ0FBQyxDQUFDO1VBQ3BDLE9BQU9lLFFBQVEsQ0FBQzNFLE1BQU0sR0FBR0ssS0FBSyxDQUFDTCxNQUFNLEdBQUcyRSxRQUFRLEdBQUd0RSxLQUFLO1FBQzFELENBQUMsQ0FBQztRQUVGbUUsU0FBUyxDQUFDbkUsS0FBSyxHQUFHWCxJQUFJLENBQUNzRSxJQUFJLENBQUMzRCxLQUFLLENBQUM7TUFDcEMsQ0FBQyxNQUFNO1FBQ0xtRSxTQUFTLENBQUNuRSxLQUFLLEdBQUdYLElBQUksQ0FBQ3NFLElBQUksQ0FBQ3BFLFNBQVMsQ0FBQzZFLEtBQUssQ0FBQy9DLE1BQU0sRUFBRUEsTUFBTSxHQUFHOEMsU0FBUyxDQUFDdEIsS0FBSyxDQUFDLENBQUM7TUFDaEY7TUFDQXhCLE1BQU0sSUFBSThDLFNBQVMsQ0FBQ3RCLEtBQUs7O01BRXpCO01BQ0EsSUFBSSxDQUFDc0IsU0FBUyxDQUFDM0IsS0FBSyxFQUFFO1FBQ3BCckIsTUFBTSxJQUFJZ0QsU0FBUyxDQUFDdEIsS0FBSztNQUMzQjtJQUNGLENBQUMsTUFBTTtNQUNMc0IsU0FBUyxDQUFDbkUsS0FBSyxHQUFHWCxJQUFJLENBQUNzRSxJQUFJLENBQUNyRSxTQUFTLENBQUM4RSxLQUFLLENBQUNqRCxNQUFNLEVBQUVBLE1BQU0sR0FBR2dELFNBQVMsQ0FBQ3RCLEtBQUssQ0FBQyxDQUFDO01BQzlFMUIsTUFBTSxJQUFJZ0QsU0FBUyxDQUFDdEIsS0FBSztJQUMzQjtFQUNGO0VBRUEsT0FBT2lCLFVBQVU7QUFDbkIiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/lib/diff/character.js b/lib/diff/character.js index 7ddfa205e..9849751b3 100644 --- a/lib/diff/character.js +++ b/lib/diff/character.js @@ -4,20 +4,21 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.diffChars = diffChars; exports.characterDiff = void 0; - +exports.diffChars = diffChars; /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } /*istanbul ignore end*/ -var characterDiff = new +var characterDiff = +/*istanbul ignore start*/ +exports.characterDiff = +/*istanbul ignore end*/ +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -26,12 +27,7 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.characterDiff = characterDiff; - -/*istanbul ignore end*/ function diffChars(oldStr, newStr, options) { return characterDiff.diff(oldStr, newStr, options); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJjaGFyYWN0ZXJEaWZmIiwiZXhwb3J0cyIsIkRpZmYiLCJkaWZmQ2hhcnMiLCJvbGRTdHIiLCJuZXdTdHIiLCJvcHRpb25zIiwiZGlmZiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgY2hhcmFjdGVyRGlmZiA9IG5ldyBEaWZmKCk7XG5leHBvcnQgZnVuY3Rpb24gZGlmZkNoYXJzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKSB7IHJldHVybiBjaGFyYWN0ZXJEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpOyB9XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQUE7QUFBQTtBQUEwQixtQ0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBO0FBRW5CLElBQU1FLGFBQWE7QUFBQTtBQUFBQyxPQUFBLENBQUFELGFBQUE7QUFBQTtBQUFHO0FBQUlFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2hDLFNBQVNDLFNBQVNBLENBQUNDLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUU7RUFBRSxPQUFPTixhQUFhLENBQUNPLElBQUksQ0FBQ0gsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sQ0FBQztBQUFFIiwiaWdub3JlTGlzdCI6W119 \ No newline at end of file diff --git a/lib/diff/css.js b/lib/diff/css.js index e3ad1fcba..4a5bac302 100644 --- a/lib/diff/css.js +++ b/lib/diff/css.js @@ -4,20 +4,21 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.diffCss = diffCss; exports.cssDiff = void 0; - +exports.diffCss = diffCss; /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +/*istanbul ignore end*/ +var cssDiff = +/*istanbul ignore start*/ +exports.cssDiff = /*istanbul ignore end*/ -var cssDiff = new +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -26,16 +27,10 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.cssDiff = cssDiff; - -/*istanbul ignore end*/ cssDiff.tokenize = function (value) { return value.split(/([{}:;,]|\s+)/); }; - function diffCss(oldStr, newStr, callback) { return cssDiff.diff(oldStr, newStr, callback); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJjc3NEaWZmIiwiZXhwb3J0cyIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmQ3NzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpZmYvY3NzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQUE7QUFBQTtBQUEwQixtQ0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBO0FBRW5CLElBQU1FLE9BQU87QUFBQTtBQUFBQyxPQUFBLENBQUFELE9BQUE7QUFBQTtBQUFHO0FBQUlFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2pDRixPQUFPLENBQUNHLFFBQVEsR0FBRyxVQUFTQyxLQUFLLEVBQUU7RUFDakMsT0FBT0EsS0FBSyxDQUFDQyxLQUFLLENBQUMsZUFBZSxDQUFDO0FBQ3JDLENBQUM7QUFFTSxTQUFTQyxPQUFPQSxDQUFDQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFO0VBQUUsT0FBT1QsT0FBTyxDQUFDVSxJQUFJLENBQUNILE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLENBQUM7QUFBRSIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/lib/diff/json.js b/lib/diff/json.js index 67c2f175f..783f18b4a 100644 --- a/lib/diff/json.js +++ b/lib/diff/json.js @@ -4,30 +4,28 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.diffJson = diffJson; exports.canonicalize = canonicalize; +exports.diffJson = diffJson; exports.jsonDiff = void 0; - /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _line = require("./line") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - -function _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); } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +/*istanbul ignore end*/ +var jsonDiff = +/*istanbul ignore start*/ +exports.jsonDiff = /*istanbul ignore end*/ -var objectPrototypeToString = Object.prototype.toString; -var jsonDiff = new +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -35,13 +33,9 @@ _base /*istanbul ignore start*/ "default" /*istanbul ignore end*/ -](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a +](); +// Discriminate between two lines of pretty-printed, serialized JSON where one of them has a // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: - -/*istanbul ignore start*/ -exports.jsonDiff = jsonDiff; - -/*istanbul ignore end*/ jsonDiff.useLongestToken = true; jsonDiff.tokenize = /*istanbul ignore start*/ @@ -52,26 +46,28 @@ _line lineDiff /*istanbul ignore end*/ .tokenize; - -jsonDiff.castInput = function (value) { - /*istanbul ignore start*/ - var _this$options = - /*istanbul ignore end*/ - this.options, - undefinedReplacement = _this$options.undefinedReplacement, - _this$options$stringi = _this$options.stringifyReplacer, - stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) - /*istanbul ignore start*/ - { - return ( - /*istanbul ignore end*/ - typeof v === 'undefined' ? undefinedReplacement : v - ); - } : _this$options$stringi; +jsonDiff.castInput = function (value, options) { + var + /*istanbul ignore start*/ + /*istanbul ignore end*/ + undefinedReplacement = options.undefinedReplacement, + /*istanbul ignore start*/ + _options$stringifyRep = + /*istanbul ignore end*/ + options.stringifyReplacer, + /*istanbul ignore start*/ + /*istanbul ignore end*/ + stringifyReplacer = _options$stringifyRep === void 0 ? function (k, v) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + typeof v === 'undefined' ? undefinedReplacement : v + ); + } : _options$stringifyRep; return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); }; - -jsonDiff.equals = function (left, right) { +jsonDiff.equals = function (left, right, options) { return ( /*istanbul ignore start*/ _base @@ -80,52 +76,42 @@ jsonDiff.equals = function (left, right) { /*istanbul ignore start*/ "default" /*istanbul ignore end*/ - ].prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')) + ].prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'), options) ); }; - function diffJson(oldObj, newObj, options) { return jsonDiff.diff(oldObj, newObj, options); -} // This function handles the presence of circular references by bailing out when encountering an -// object that is already on the "stack" of items being processed. Accepts an optional replacer - +} +// This function handles the presence of circular references by bailing out when encountering an +// object that is already on the "stack" of items being processed. Accepts an optional replacer function canonicalize(obj, stack, replacementStack, replacer, key) { stack = stack || []; replacementStack = replacementStack || []; - if (replacer) { obj = replacer(key, obj); } - var i; - for (i = 0; i < stack.length; i += 1) { if (stack[i] === obj) { return replacementStack[i]; } } - var canonicalizedObj; - - if ('[object Array]' === objectPrototypeToString.call(obj)) { + if ('[object Array]' === Object.prototype.toString.call(obj)) { stack.push(obj); canonicalizedObj = new Array(obj.length); replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); } - stack.pop(); replacementStack.pop(); return canonicalizedObj; } - if (obj && obj.toJSON) { obj = obj.toJSON(); } - if ( /*istanbul ignore start*/ _typeof( @@ -134,30 +120,24 @@ function canonicalize(obj, stack, replacementStack, replacer, key) { stack.push(obj); canonicalizedObj = {}; replacementStack.push(canonicalizedObj); - var sortedKeys = [], - _key; - + _key; for (_key in obj) { /* istanbul ignore else */ - if (obj.hasOwnProperty(_key)) { + if (Object.prototype.hasOwnProperty.call(obj, _key)) { sortedKeys.push(_key); } } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { _key = sortedKeys[i]; canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); } - stack.pop(); replacementStack.pop(); } else { canonicalizedObj = obj; } - return canonicalizedObj; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xpbmUiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsImpzb25EaWZmIiwiZXhwb3J0cyIsIkRpZmYiLCJ1c2VMb25nZXN0VG9rZW4iLCJ0b2tlbml6ZSIsImxpbmVEaWZmIiwiY2FzdElucHV0IiwidmFsdWUiLCJvcHRpb25zIiwidW5kZWZpbmVkUmVwbGFjZW1lbnQiLCJfb3B0aW9ucyRzdHJpbmdpZnlSZXAiLCJzdHJpbmdpZnlSZXBsYWNlciIsImsiLCJ2IiwiSlNPTiIsInN0cmluZ2lmeSIsImNhbm9uaWNhbGl6ZSIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNhbGwiLCJyZXBsYWNlIiwiZGlmZkpzb24iLCJvbGRPYmoiLCJuZXdPYmoiLCJkaWZmIiwib2JqIiwic3RhY2siLCJyZXBsYWNlbWVudFN0YWNrIiwicmVwbGFjZXIiLCJrZXkiLCJpIiwibGVuZ3RoIiwiY2Fub25pY2FsaXplZE9iaiIsIk9iamVjdCIsInRvU3RyaW5nIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmV4cG9ydCBjb25zdCBqc29uRGlmZiA9IG5ldyBEaWZmKCk7XG4vLyBEaXNjcmltaW5hdGUgYmV0d2VlbiB0d28gbGluZXMgb2YgcHJldHR5LXByaW50ZWQsIHNlcmlhbGl6ZWQgSlNPTiB3aGVyZSBvbmUgb2YgdGhlbSBoYXMgYVxuLy8gZGFuZ2xpbmcgY29tbWEgYW5kIHRoZSBvdGhlciBkb2Vzbid0LiBUdXJucyBvdXQgaW5jbHVkaW5nIHRoZSBkYW5nbGluZyBjb21tYSB5aWVsZHMgdGhlIG5pY2VzdCBvdXRwdXQ6XG5qc29uRGlmZi51c2VMb25nZXN0VG9rZW4gPSB0cnVlO1xuXG5qc29uRGlmZi50b2tlbml6ZSA9IGxpbmVEaWZmLnRva2VuaXplO1xuanNvbkRpZmYuY2FzdElucHV0ID0gZnVuY3Rpb24odmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge3VuZGVmaW5lZFJlcGxhY2VtZW50LCBzdHJpbmdpZnlSZXBsYWNlciA9IChrLCB2KSA9PiB0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWRSZXBsYWNlbWVudCA6IHZ9ID0gb3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCwgb3B0aW9ucykge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0gbmV3IEFycmF5KG9iai5sZW5ndGgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjYW5vbmljYWxpemVkT2JqW2ldID0gY2Fub25pY2FsaXplKG9ialtpXSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICAgIHJldHVybiBjYW5vbmljYWxpemVkT2JqO1xuICB9XG5cbiAgaWYgKG9iaiAmJiBvYmoudG9KU09OKSB7XG4gICAgb2JqID0gb2JqLnRvSlNPTigpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0ge307XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wdXNoKGNhbm9uaWNhbGl6ZWRPYmopO1xuICAgIGxldCBzb3J0ZWRLZXlzID0gW10sXG4gICAgICAgIGtleTtcbiAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBzb3J0ZWRLZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ydGVkS2V5cy5zb3J0KCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHNvcnRlZEtleXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGtleSA9IHNvcnRlZEtleXNbaV07XG4gICAgICBjYW5vbmljYWxpemVkT2JqW2tleV0gPSBjYW5vbmljYWxpemUob2JqW2tleV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBjYW5vbmljYWxpemVkT2JqID0gb2JqO1xuICB9XG4gIHJldHVybiBjYW5vbmljYWxpemVkT2JqO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFBQTtBQUFBO0FBQWdDLG1DQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFB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 \ No newline at end of file diff --git a/lib/diff/line.js b/lib/diff/line.js index 855fe30b9..ddfd83a92 100644 --- a/lib/diff/line.js +++ b/lib/diff/line.js @@ -7,24 +7,24 @@ Object.defineProperty(exports, "__esModule", { exports.diffLines = diffLines; exports.diffTrimmedLines = diffTrimmedLines; exports.lineDiff = void 0; - /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _params = require("../util/params") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +/*istanbul ignore end*/ +var lineDiff = +/*istanbul ignore start*/ +exports.lineDiff = /*istanbul ignore end*/ -var lineDiff = new +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -33,47 +33,79 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.lineDiff = lineDiff; - -/*istanbul ignore end*/ -lineDiff.tokenize = function (value) { +lineDiff.tokenize = function (value, options) { + if (options.stripTrailingCr) { + // remove one \r before \n to match GNU diff's --strip-trailing-cr behavior + value = value.replace(/\r\n/g, '\n'); + } var retLines = [], - linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line + linesAndNewlines = value.split(/(\n|\r\n)/); + // Ignore the final empty token that occurs if the string ends with a new line if (!linesAndNewlines[linesAndNewlines.length - 1]) { linesAndNewlines.pop(); - } // Merge the content and line separators into single tokens - + } + // Merge the content and line separators into single tokens for (var i = 0; i < linesAndNewlines.length; i++) { var line = linesAndNewlines[i]; - - if (i % 2 && !this.options.newlineIsToken) { + if (i % 2 && !options.newlineIsToken) { retLines[retLines.length - 1] += line; } else { - if (this.options.ignoreWhitespace) { - line = line.trim(); - } - retLines.push(line); } } - return retLines; }; - +lineDiff.equals = function (left, right, options) { + // If we're ignoring whitespace, we need to normalise lines by stripping + // whitespace before checking equality. (This has an annoying interaction + // with newlineIsToken that requires special handling: if newlines get their + // own token, then we DON'T want to trim the *newline* tokens down to empty + // strings, since this would cause us to treat whitespace-only line content + // as equal to a separator between lines, which would be weird and + // inconsistent with the documented behavior of the options.) + if (options.ignoreWhitespace) { + if (!options.newlineIsToken || !left.includes('\n')) { + left = left.trim(); + } + if (!options.newlineIsToken || !right.includes('\n')) { + right = right.trim(); + } + } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) { + if (left.endsWith('\n')) { + left = left.slice(0, -1); + } + if (right.endsWith('\n')) { + right = right.slice(0, -1); + } + } + return ( + /*istanbul ignore start*/ + _base + /*istanbul ignore end*/ + [ + /*istanbul ignore start*/ + "default" + /*istanbul ignore end*/ + ].prototype.equals.call(this, left, right, options) + ); +}; function diffLines(oldStr, newStr, callback) { return lineDiff.diff(oldStr, newStr, callback); } +// Kept for backwards compatibility. This is a rather arbitrary wrapper method +// that just calls `diffLines` with `ignoreWhitespace: true`. It's confusing to +// have two ways to do exactly the same thing in the API, so we no longer +// document this one (library users should explicitly use `diffLines` with +// `ignoreWhitespace: true` instead) but we keep it around to maintain +// compatibility with code that used old versions. function diffTrimmedLines(oldStr, newStr, callback) { var options = /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _params /*istanbul ignore end*/ @@ -86,4 +118,4 @@ function diffTrimmedLines(oldStr, newStr, callback) { }); return lineDiff.diff(oldStr, newStr, options); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJkaWZmTGluZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiLCJkaWZmVHJpbW1lZExpbmVzIiwiZ2VuZXJhdGVPcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxRQUFRLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFqQjs7Ozs7O0FBQ1BELFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQixVQUFTQyxLQUFULEVBQWdCO0FBQ2xDLE1BQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsTUFDSUMsZ0JBQWdCLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixDQUFZLFdBQVosQ0FEdkIsQ0FEa0MsQ0FJbEM7O0FBQ0EsTUFBSSxDQUFDRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUNFLE1BQWpCLEdBQTBCLENBQTNCLENBQXJCLEVBQW9EO0FBQ2xERixJQUFBQSxnQkFBZ0IsQ0FBQ0csR0FBakI7QUFDRCxHQVBpQyxDQVNsQzs7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixnQkFBZ0IsQ0FBQ0UsTUFBckMsRUFBNkNFLENBQUMsRUFBOUMsRUFBa0Q7QUFDaEQsUUFBSUMsSUFBSSxHQUFHTCxnQkFBZ0IsQ0FBQ0ksQ0FBRCxDQUEzQjs7QUFFQSxRQUFJQSxDQUFDLEdBQUcsQ0FBSixJQUFTLENBQUMsS0FBS0UsT0FBTCxDQUFhQyxjQUEzQixFQUEyQztBQUN6Q1IsTUFBQUEsUUFBUSxDQUFDQSxRQUFRLENBQUNHLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBUixJQUFpQ0csSUFBakM7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEtBQUtDLE9BQUwsQ0FBYUUsZ0JBQWpCLEVBQW1DO0FBQ2pDSCxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQ0ksSUFBTCxFQUFQO0FBQ0Q7O0FBQ0RWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjTCxJQUFkO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPTixRQUFQO0FBQ0QsQ0F4QkQ7O0FBMEJPLFNBQVNZLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsUUFBbkMsRUFBNkM7QUFBRSxTQUFPbkIsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDs7QUFDaEcsU0FBU0UsZ0JBQVQsQ0FBMEJKLE1BQTFCLEVBQWtDQyxNQUFsQyxFQUEwQ0MsUUFBMUMsRUFBb0Q7QUFDekQsTUFBSVIsT0FBTztBQUFHO0FBQUE7QUFBQTs7QUFBQVc7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2IsUUFBUSxDQUFDb0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QlAsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BhcmFtcyIsImUiLCJfX2VzTW9kdWxlIiwibGluZURpZmYiLCJleHBvcnRzIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJvcHRpb25zIiwic3RyaXBUcmFpbGluZ0NyIiwicmVwbGFjZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJuZXdsaW5lSXNUb2tlbiIsInB1c2giLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJpZ25vcmVXaGl0ZXNwYWNlIiwiaW5jbHVkZXMiLCJ0cmltIiwiaWdub3JlTmV3bGluZUF0RW9mIiwiZW5kc1dpdGgiLCJzbGljZSIsInByb3RvdHlwZSIsImNhbGwiLCJkaWZmTGluZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiLCJkaWZmVHJpbW1lZExpbmVzIiwiZ2VuZXJhdGVPcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpZmYvbGluZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuZXhwb3J0IGNvbnN0IGxpbmVEaWZmID0gbmV3IERpZmYoKTtcbmxpbmVEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYob3B0aW9ucy5zdHJpcFRyYWlsaW5nQ3IpIHtcbiAgICAvLyByZW1vdmUgb25lIFxcciBiZWZvcmUgXFxuIHRvIG1hdGNoIEdOVSBkaWZmJ3MgLS1zdHJpcC10cmFpbGluZy1jciBiZWhhdmlvclxuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbiAgfVxuXG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICFvcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmxpbmVEaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0LCBvcHRpb25zKSB7XG4gIC8vIElmIHdlJ3JlIGlnbm9yaW5nIHdoaXRlc3BhY2UsIHdlIG5lZWQgdG8gbm9ybWFsaXNlIGxpbmVzIGJ5IHN0cmlwcGluZ1xuICAvLyB3aGl0ZXNwYWNlIGJlZm9yZSBjaGVja2luZyBlcXVhbGl0eS4gKFRoaXMgaGFzIGFuIGFubm95aW5nIGludGVyYWN0aW9uXG4gIC8vIHdpdGggbmV3bGluZUlzVG9rZW4gdGhhdCByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nOiBpZiBuZXdsaW5lcyBnZXQgdGhlaXJcbiAgLy8gb3duIHRva2VuLCB0aGVuIHdlIERPTidUIHdhbnQgdG8gdHJpbSB0aGUgKm5ld2xpbmUqIHRva2VucyBkb3duIHRvIGVtcHR5XG4gIC8vIHN0cmluZ3MsIHNpbmNlIHRoaXMgd291bGQgY2F1c2UgdXMgdG8gdHJlYXQgd2hpdGVzcGFjZS1vbmx5IGxpbmUgY29udGVudFxuICAvLyBhcyBlcXVhbCB0byBhIHNlcGFyYXRvciBiZXR3ZWVuIGxpbmVzLCB3aGljaCB3b3VsZCBiZSB3ZWlyZCBhbmRcbiAgLy8gaW5jb25zaXN0ZW50IHdpdGggdGhlIGRvY3VtZW50ZWQgYmVoYXZpb3Igb2YgdGhlIG9wdGlvbnMuKVxuICBpZiAob3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlKSB7XG4gICAgaWYgKCFvcHRpb25zLm5ld2xpbmVJc1Rva2VuIHx8ICFsZWZ0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgbGVmdCA9IGxlZnQudHJpbSgpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMubmV3bGluZUlzVG9rZW4gfHwgIXJpZ2h0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgcmlnaHQgPSByaWdodC50cmltKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMuaWdub3JlTmV3bGluZUF0RW9mICYmICFvcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgaWYgKGxlZnQuZW5kc1dpdGgoJ1xcbicpKSB7XG4gICAgICBsZWZ0ID0gbGVmdC5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIGlmIChyaWdodC5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgIHJpZ2h0ID0gcmlnaHQuc2xpY2UoMCwgLTEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwodGhpcywgbGVmdCwgcmlnaHQsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuXG4vLyBLZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gVGhpcyBpcyBhIHJhdGhlciBhcmJpdHJhcnkgd3JhcHBlciBtZXRob2Rcbi8vIHRoYXQganVzdCBjYWxscyBgZGlmZkxpbmVzYCB3aXRoIGBpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlYC4gSXQncyBjb25mdXNpbmcgdG9cbi8vIGhhdmUgdHdvIHdheXMgdG8gZG8gZXhhY3RseSB0aGUgc2FtZSB0aGluZyBpbiB0aGUgQVBJLCBzbyB3ZSBubyBsb25nZXJcbi8vIGRvY3VtZW50IHRoaXMgb25lIChsaWJyYXJ5IHVzZXJzIHNob3VsZCBleHBsaWNpdGx5IHVzZSBgZGlmZkxpbmVzYCB3aXRoXG4vLyBgaWdub3JlV2hpdGVzcGFjZTogdHJ1ZWAgaW5zdGVhZCkgYnV0IHdlIGtlZXAgaXQgYXJvdW5kIHRvIG1haW50YWluXG4vLyBjb21wYXRpYmlsaXR5IHdpdGggY29kZSB0aGF0IHVzZWQgb2xkIHZlcnNpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZUcmltbWVkTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIGxldCBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKGNhbGxiYWNrLCB7aWdub3JlV2hpdGVzcGFjZTogdHJ1ZX0pO1xuICByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUFBO0FBQUE7QUFBK0MsbUNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQTtBQUV4QyxJQUFNRSxRQUFRO0FBQUE7QUFBQUMsT0FBQSxDQUFBRCxRQUFBO0FBQUE7QUFBRztBQUFJRTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFJLENBQUMsQ0FBQztBQUNsQ0YsUUFBUSxDQUFDRyxRQUFRLEdBQUcsVUFBU0MsS0FBSyxFQUFFQyxPQUFPLEVBQUU7RUFDM0MsSUFBR0EsT0FBTyxDQUFDQyxlQUFlLEVBQUU7SUFDMUI7SUFDQUYsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO0VBQ3RDO0VBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQUU7SUFDYkMsZ0JBQWdCLEdBQUdMLEtBQUssQ0FBQ00sS0FBSyxDQUFDLFdBQVcsQ0FBQzs7RUFFL0M7RUFDQSxJQUFJLENBQUNELGdCQUFnQixDQUFDQSxnQkFBZ0IsQ0FBQ0UsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2xERixnQkFBZ0IsQ0FBQ0csR0FBRyxDQUFDLENBQUM7RUFDeEI7O0VBRUE7RUFDQSxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQU0sRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEQsSUFBSUMsSUFBSSxHQUFHTCxnQkFBZ0IsQ0FBQ0ksQ0FBQyxDQUFDO0lBRTlCLElBQUlBLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQ1IsT0FBTyxDQUFDVSxjQUFjLEVBQUU7TUFDcENQLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUlHLElBQUk7SUFDdkMsQ0FBQyxNQUFNO01BQ0xOLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDRixJQUFJLENBQUM7SUFDckI7RUFDRjtFQUVBLE9BQU9OLFFBQVE7QUFDakIsQ0FBQztBQUVEUixRQUFRLENBQUNpQixNQUFNLEdBQUcsVUFBU0MsSUFBSSxFQUFFQyxLQUFLLEVBQUVkLE9BQU8sRUFBRTtFQUMvQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUlBLE9BQU8sQ0FBQ2UsZ0JBQWdCLEVBQUU7SUFDNUIsSUFBSSxDQUFDZixPQUFPLENBQUNVLGNBQWMsSUFBSSxDQUFDRyxJQUFJLENBQUNHLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtNQUNuREgsSUFBSSxHQUFHQSxJQUFJLENBQUNJLElBQUksQ0FBQyxDQUFDO0lBQ3BCO0lBQ0EsSUFBSSxDQUFDakIsT0FBTyxDQUFDVSxjQUFjLElBQUksQ0FBQ0ksS0FBSyxDQUFDRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7TUFDcERGLEtBQUssR0FBR0EsS0FBSyxDQUFDRyxJQUFJLENBQUMsQ0FBQztJQUN0QjtFQUNGLENBQUMsTUFBTSxJQUFJakIsT0FBTyxDQUFDa0Isa0JBQWtCLElBQUksQ0FBQ2xCLE9BQU8sQ0FBQ1UsY0FBYyxFQUFFO0lBQ2hFLElBQUlHLElBQUksQ0FBQ00sUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO01BQ3ZCTixJQUFJLEdBQUdBLElBQUksQ0FBQ08sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQjtJQUNBLElBQUlOLEtBQUssQ0FBQ0ssUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO01BQ3hCTCxLQUFLLEdBQUdBLEtBQUssQ0FBQ00sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QjtFQUNGO0VBQ0EsT0FBT3ZCO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBLENBQUksQ0FBQ3dCLFNBQVMsQ0FBQ1QsTUFBTSxDQUFDVSxJQUFJLENBQUMsSUFBSSxFQUFFVCxJQUFJLEVBQUVDLEtBQUssRUFBRWQsT0FBTztFQUFDO0FBQy9ELENBQUM7QUFFTSxTQUFTdUIsU0FBU0EsQ0FBQ0MsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtFQUFFLE9BQU8vQixRQUFRLENBQUNnQyxJQUFJLENBQUNILE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLENBQUM7QUFBRTs7QUFFdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZ0JBQWdCQSxDQUFDSixNQUFNLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFO0VBQ3pELElBQUkxQixPQUFPO0VBQUc7RUFBQTtFQUFBO0VBQUE2QjtFQUFBQTtFQUFBQTtFQUFBQTtFQUFBQTtFQUFBQSxlQUFlO0VBQUE7RUFBQSxDQUFDSCxRQUFRLEVBQUU7SUFBQ1gsZ0JBQWdCLEVBQUU7RUFBSSxDQUFDLENBQUM7RUFDakUsT0FBT3BCLFFBQVEsQ0FBQ2dDLElBQUksQ0FBQ0gsTUFBTSxFQUFFQyxNQUFNLEVBQUV6QixPQUFPLENBQUM7QUFDL0MiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/lib/diff/sentence.js b/lib/diff/sentence.js index 95158d6f5..75279c444 100644 --- a/lib/diff/sentence.js +++ b/lib/diff/sentence.js @@ -6,18 +6,19 @@ Object.defineProperty(exports, "__esModule", { }); exports.diffSentences = diffSentences; exports.sentenceDiff = void 0; - /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +/*istanbul ignore end*/ +var sentenceDiff = +/*istanbul ignore start*/ +exports.sentenceDiff = /*istanbul ignore end*/ -var sentenceDiff = new +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -26,16 +27,10 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.sentenceDiff = sentenceDiff; - -/*istanbul ignore end*/ sentenceDiff.tokenize = function (value) { return value.split(/(\S.+?[.!?])(?=\s+|$)/); }; - function diffSentences(oldStr, newStr, callback) { return sentenceDiff.diff(oldStr, newStr, callback); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJzZW50ZW5jZURpZmYiLCJleHBvcnRzIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZTZW50ZW5jZXMiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGlmZi9zZW50ZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuXG5cbmV4cG9ydCBjb25zdCBzZW50ZW5jZURpZmYgPSBuZXcgRGlmZigpO1xuc2VudGVuY2VEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oXFxTLis/Wy4hP10pKD89XFxzK3wkKS8pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZTZW50ZW5jZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBzZW50ZW5jZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQUE7QUFBQTtBQUEwQixtQ0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBO0FBR25CLElBQU1FLFlBQVk7QUFBQTtBQUFBQyxPQUFBLENBQUFELFlBQUE7QUFBQTtBQUFHO0FBQUlFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3RDRixZQUFZLENBQUNHLFFBQVEsR0FBRyxVQUFTQyxLQUFLLEVBQUU7RUFDdEMsT0FBT0EsS0FBSyxDQUFDQyxLQUFLLENBQUMsdUJBQXVCLENBQUM7QUFDN0MsQ0FBQztBQUVNLFNBQVNDLGFBQWFBLENBQUNDLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUU7RUFBRSxPQUFPVCxZQUFZLENBQUNVLElBQUksQ0FBQ0gsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsQ0FBQztBQUFFIiwiaWdub3JlTGlzdCI6W119 \ No newline at end of file diff --git a/lib/diff/word.js b/lib/diff/word.js index cef7fe17b..4437059ae 100644 --- a/lib/diff/word.js +++ b/lib/diff/word.js @@ -6,23 +6,19 @@ Object.defineProperty(exports, "__esModule", { }); exports.diffWords = diffWords; exports.diffWordsWithSpace = diffWordsWithSpace; -exports.wordDiff = void 0; - +exports.wordWithSpaceDiff = exports.wordDiff = void 0; /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./base")) /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ -_params = require("../util/params") +_string = require("../util/string") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } /*istanbul ignore end*/ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode // @@ -42,9 +38,43 @@ _params = require("../util/params") // - U+02DC ˜ ˜ Small Tilde // - U+02DD ˝ ˝ Double Acute Accent // Latin Extended Additional, 1E00–1EFF -var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; -var reWhitespace = /\S/; -var wordDiff = new +var extendedWordChars = "a-zA-Z\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}"; + +// Each token is one of the following: +// - A punctuation mark plus the surrounding whitespace +// - A word plus the surrounding whitespace +// - Pure whitespace (but only in the special case where this the entire text +// is just whitespace) +// +// We have to include surrounding whitespace in the tokens because the two +// alternative approaches produce horribly broken results: +// * If we just discard the whitespace, we can't fully reproduce the original +// text from the sequence of tokens and any attempt to render the diff will +// get the whitespace wrong. +// * If we have separate tokens for whitespace, then in a typical text every +// second token will be a single space character. But this often results in +// the optimal diff between two texts being a perverse one that preserves +// the spaces between words but deletes and reinserts actual common words. +// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640 +// for an example. +// +// Keeping the surrounding whitespace of course has implications for .equals +// and .join, not just .tokenize. + +// This regex does NOT fully implement the tokenization rules described above. +// Instead, it gives runs of whitespace their own "token". The tokenize method +// then handles stitching whitespace tokens onto adjacent word or punctuation +// tokens. +var tokenizeIncludingWhitespace = new RegExp( +/*istanbul ignore start*/ +"[".concat( +/*istanbul ignore end*/ +extendedWordChars, "]+|\\s+|[^").concat(extendedWordChars, "]"), 'ug'); +var wordDiff = +/*istanbul ignore start*/ +exports.wordDiff = +/*istanbul ignore end*/ +new /*istanbul ignore start*/ _base /*istanbul ignore end*/ @@ -53,56 +83,461 @@ _base "default" /*istanbul ignore end*/ ](); - -/*istanbul ignore start*/ -exports.wordDiff = wordDiff; - -/*istanbul ignore end*/ -wordDiff.equals = function (left, right) { - if (this.options.ignoreCase) { +wordDiff.equals = function (left, right, options) { + if (options.ignoreCase) { left = left.toLowerCase(); right = right.toLowerCase(); } - - return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); + return left.trim() === right.trim(); }; - wordDiff.tokenize = function (value) { - // All whitespace symbols except newline group into one token, each newline - in separate token - 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. - - for (var i = 0; i < tokens.length - 1; i++) { - // If we have an empty string in the next field and we have only word chars before and after, merge - if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { - tokens[i] += tokens[i + 2]; - tokens.splice(i + 1, 2); - i--; + /*istanbul ignore start*/ + var + /*istanbul ignore end*/ + options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var parts; + if (options.intlSegmenter) { + if (options.intlSegmenter.resolvedOptions().granularity != 'word') { + throw new Error('The segmenter passed must have a granularity of "word"'); } + parts = Array.from(options.intlSegmenter.segment(value), function (segment) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + segment.segment + ); + }); + } else { + parts = value.match(tokenizeIncludingWhitespace) || []; } - + var tokens = []; + var prevPart = null; + parts.forEach(function (part) { + if (/\s/.test(part)) { + if (prevPart == null) { + tokens.push(part); + } else { + tokens.push(tokens.pop() + part); + } + } else if (/\s/.test(prevPart)) { + if (tokens[tokens.length - 1] == prevPart) { + tokens.push(tokens.pop() + part); + } else { + tokens.push(prevPart + part); + } + } else { + tokens.push(part); + } + prevPart = part; + }); return tokens; }; - +wordDiff.join = function (tokens) { + // Tokens being joined here will always have appeared consecutively in the + // same text, so we can simply strip off the leading whitespace from all the + // tokens except the first (and except any whitespace-only tokens - but such + // a token will always be the first and only token anyway) and then join them + // and the whitespace around words and punctuation will end up correct. + return tokens.map(function (token, i) { + if (i == 0) { + return token; + } else { + return token.replace(/^\s+/, ''); + } + }).join(''); +}; +wordDiff.postProcess = function (changes, options) { + if (!changes || options.oneChangePerToken) { + return changes; + } + var lastKeep = null; + // Change objects representing any insertion or deletion since the last + // "keep" change object. There can be at most one of each. + var insertion = null; + var deletion = null; + changes.forEach(function (change) { + if (change.added) { + insertion = change; + } else if (change.removed) { + deletion = change; + } else { + if (insertion || deletion) { + // May be false at start of text + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change); + } + lastKeep = change; + insertion = null; + deletion = null; + } + }); + if (insertion || deletion) { + dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null); + } + return changes; +}; function diffWords(oldStr, newStr, options) { - options = - /*istanbul ignore start*/ - (0, - /*istanbul ignore end*/ - + // This option has never been documented and never will be (it's clearer to + // just call `diffWordsWithSpace` directly if you need that behavior), but + // has existed in jsdiff for a long time, so we retain support for it here + // for the sake of backwards compatibility. + if ( /*istanbul ignore start*/ - _params + ( /*istanbul ignore end*/ - . - /*istanbul ignore start*/ - generateOptions) - /*istanbul ignore end*/ - (options, { - ignoreWhitespace: true - }); + options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) { + return diffWordsWithSpace(oldStr, newStr, options); + } return wordDiff.diff(oldStr, newStr, options); } +function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) { + // Before returning, we tidy up the leading and trailing whitespace of the + // change objects to eliminate cases where trailing whitespace in one object + // is repeated as leading whitespace in the next. + // Below are examples of the outcomes we want here to explain the code. + // I=insert, K=keep, D=delete + // 1. diffing 'foo bar baz' vs 'foo baz' + // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz' + // After cleanup, we want: K:'foo ' D:'bar ' K:'baz' + // + // 2. Diffing 'foo bar baz' vs 'foo qux baz' + // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz' + // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz' + // + // 3. Diffing 'foo\nbar baz' vs 'foo baz' + // Prior to cleanup, we have K:'foo ' D:'\nbar ' K:' baz' + // After cleanup, we want K'foo' D:'\nbar' K:' baz' + // + // 4. Diffing 'foo baz' vs 'foo\nbar baz' + // Prior to cleanup, we have K:'foo\n' I:'\nbar ' K:' baz' + // After cleanup, we ideally want K'foo' I:'\nbar' K:' baz' + // but don't actually manage this currently (the pre-cleanup change + // objects don't contain enough information to make it possible). + // + // 5. Diffing 'foo bar baz' vs 'foo baz' + // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz' + // After cleanup, we want K:'foo ' D:' bar ' K:'baz' + // + // Our handling is unavoidably imperfect in the case where there's a single + // indel between keeps and the whitespace has changed. For instance, consider + // diffing 'foo\tbar\nbaz' vs 'foo baz'. Unless we create an extra change + // object to represent the insertion of the space character (which isn't even + // a token), we have no way to avoid losing information about the texts' + // original whitespace in the result we return. Still, we do our best to + // output something that will look sensible if we e.g. print it with + // insertions in green and deletions in red. + // Between two "keep" change objects (or before the first or after the last + // change object), we can have either: + // * A "delete" followed by an "insert" + // * Just an "insert" + // * Just a "delete" + // We handle the three cases separately. + if (deletion && insertion) { + var oldWsPrefix = deletion.value.match(/^\s*/)[0]; + var oldWsSuffix = deletion.value.match(/\s*$/)[0]; + var newWsPrefix = insertion.value.match(/^\s*/)[0]; + var newWsSuffix = insertion.value.match(/\s*$/)[0]; + if (startKeep) { + var commonWsPrefix = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + longestCommonPrefix) + /*istanbul ignore end*/ + (oldWsPrefix, newWsPrefix); + startKeep.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + replaceSuffix) + /*istanbul ignore end*/ + (startKeep.value, newWsPrefix, commonWsPrefix); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removePrefix) + /*istanbul ignore end*/ + (deletion.value, commonWsPrefix); + insertion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removePrefix) + /*istanbul ignore end*/ + (insertion.value, commonWsPrefix); + } + if (endKeep) { + var commonWsSuffix = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + longestCommonSuffix) + /*istanbul ignore end*/ + (oldWsSuffix, newWsSuffix); + endKeep.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + replacePrefix) + /*istanbul ignore end*/ + (endKeep.value, newWsSuffix, commonWsSuffix); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removeSuffix) + /*istanbul ignore end*/ + (deletion.value, commonWsSuffix); + insertion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removeSuffix) + /*istanbul ignore end*/ + (insertion.value, commonWsSuffix); + } + } else if (insertion) { + // The whitespaces all reflect what was in the new text rather than + // the old, so we essentially have no information about whitespace + // insertion or deletion. We just want to dedupe the whitespace. + // We do that by having each change object keep its trailing + // whitespace and deleting duplicate leading whitespace where + // present. + if (startKeep) { + insertion.value = insertion.value.replace(/^\s*/, ''); + } + if (endKeep) { + endKeep.value = endKeep.value.replace(/^\s*/, ''); + } + // otherwise we've got a deletion and no insertion + } else if (startKeep && endKeep) { + var newWsFull = endKeep.value.match(/^\s*/)[0], + delWsStart = deletion.value.match(/^\s*/)[0], + delWsEnd = deletion.value.match(/\s*$/)[0]; + + // Any whitespace that comes straight after startKeep in both the old and + // new texts, assign to startKeep and remove from the deletion. + var newWsStart = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + longestCommonPrefix) + /*istanbul ignore end*/ + (newWsFull, delWsStart); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removePrefix) + /*istanbul ignore end*/ + (deletion.value, newWsStart); + + // Any whitespace that comes straight before endKeep in both the old and + // new texts, and hasn't already been assigned to startKeep, assign to + // endKeep and remove from the deletion. + var newWsEnd = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + longestCommonSuffix) + /*istanbul ignore end*/ + ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removePrefix) + /*istanbul ignore end*/ + (newWsFull, newWsStart), delWsEnd); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removeSuffix) + /*istanbul ignore end*/ + (deletion.value, newWsEnd); + endKeep.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + replacePrefix) + /*istanbul ignore end*/ + (endKeep.value, newWsFull, newWsEnd); + + // If there's any whitespace from the new text that HASN'T already been + // assigned, assign it to the start: + startKeep.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + replaceSuffix) + /*istanbul ignore end*/ + (startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length)); + } else if (endKeep) { + // We are at the start of the text. Preserve all the whitespace on + // endKeep, and just remove whitespace from the end of deletion to the + // extent that it overlaps with the start of endKeep. + var endKeepWsPrefix = endKeep.value.match(/^\s*/)[0]; + var deletionWsSuffix = deletion.value.match(/\s*$/)[0]; + var overlap = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + maximumOverlap) + /*istanbul ignore end*/ + (deletionWsSuffix, endKeepWsPrefix); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removeSuffix) + /*istanbul ignore end*/ + (deletion.value, overlap); + } else if (startKeep) { + // We are at the END of the text. Preserve all the whitespace on + // startKeep, and just remove whitespace from the start of deletion to + // the extent that it overlaps with the end of startKeep. + var startKeepWsSuffix = startKeep.value.match(/\s*$/)[0]; + var deletionWsPrefix = deletion.value.match(/^\s*/)[0]; + var _overlap = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + maximumOverlap) + /*istanbul ignore end*/ + (startKeepWsSuffix, deletionWsPrefix); + deletion.value = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + removePrefix) + /*istanbul ignore end*/ + (deletion.value, _overlap); + } +} +var wordWithSpaceDiff = +/*istanbul ignore start*/ +exports.wordWithSpaceDiff = +/*istanbul ignore end*/ +new +/*istanbul ignore start*/ +_base +/*istanbul ignore end*/ +[ +/*istanbul ignore start*/ +"default" +/*istanbul ignore end*/ +](); +wordWithSpaceDiff.tokenize = function (value) { + // Slightly different to the tokenizeIncludingWhitespace regex used above in + // that this one treats each individual newline as a distinct tokens, rather + // than merging them into other surrounding whitespace. This was requested + // in https://github.com/kpdecker/jsdiff/issues/180 & + // https://github.com/kpdecker/jsdiff/issues/211 + var regex = new RegExp( + /*istanbul ignore start*/ + "(\\r?\\n)|[".concat( + /*istanbul ignore end*/ + extendedWordChars, "]+|[^\\S\\n\\r]+|[^").concat(extendedWordChars, "]"), 'ug'); + return value.match(regex) || []; +}; function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff.diff(oldStr, newStr, options); + return wordWithSpaceDiff.diff(oldStr, newStr, options); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3N0cmluZyIsImUiLCJfX2VzTW9kdWxlIiwiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJ0b2tlbml6ZUluY2x1ZGluZ1doaXRlc3BhY2UiLCJSZWdFeHAiLCJjb25jYXQiLCJ3b3JkRGlmZiIsImV4cG9ydHMiLCJEaWZmIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0Iiwib3B0aW9ucyIsImlnbm9yZUNhc2UiLCJ0b0xvd2VyQ2FzZSIsInRyaW0iLCJ0b2tlbml6ZSIsInZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicGFydHMiLCJpbnRsU2VnbWVudGVyIiwicmVzb2x2ZWRPcHRpb25zIiwiZ3JhbnVsYXJpdHkiLCJFcnJvciIsIkFycmF5IiwiZnJvbSIsInNlZ21lbnQiLCJtYXRjaCIsInRva2VucyIsInByZXZQYXJ0IiwiZm9yRWFjaCIsInBhcnQiLCJ0ZXN0IiwicHVzaCIsInBvcCIsImpvaW4iLCJtYXAiLCJ0b2tlbiIsImkiLCJyZXBsYWNlIiwicG9zdFByb2Nlc3MiLCJjaGFuZ2VzIiwib25lQ2hhbmdlUGVyVG9rZW4iLCJsYXN0S2VlcCIsImluc2VydGlvbiIsImRlbGV0aW9uIiwiY2hhbmdlIiwiYWRkZWQiLCJyZW1vdmVkIiwiZGVkdXBlV2hpdGVzcGFjZUluQ2hhbmdlT2JqZWN0cyIsImRpZmZXb3JkcyIsIm9sZFN0ciIsIm5ld1N0ciIsImlnbm9yZVdoaXRlc3BhY2UiLCJkaWZmV29yZHNXaXRoU3BhY2UiLCJkaWZmIiwic3RhcnRLZWVwIiwiZW5kS2VlcCIsIm9sZFdzUHJlZml4Iiwib2xkV3NTdWZmaXgiLCJuZXdXc1ByZWZpeCIsIm5ld1dzU3VmZml4IiwiY29tbW9uV3NQcmVmaXgiLCJsb25nZXN0Q29tbW9uUHJlZml4IiwicmVwbGFjZVN1ZmZpeCIsInJlbW92ZVByZWZpeCIsImNvbW1vbldzU3VmZml4IiwibG9uZ2VzdENvbW1vblN1ZmZpeCIsInJlcGxhY2VQcmVmaXgiLCJyZW1vdmVTdWZmaXgiLCJuZXdXc0Z1bGwiLCJkZWxXc1N0YXJ0IiwiZGVsV3NFbmQiLCJuZXdXc1N0YXJ0IiwibmV3V3NFbmQiLCJzbGljZSIsImVuZEtlZXBXc1ByZWZpeCIsImRlbGV0aW9uV3NTdWZmaXgiLCJvdmVybGFwIiwibWF4aW11bU92ZXJsYXAiLCJzdGFydEtlZXBXc1N1ZmZpeCIsImRlbGV0aW9uV3NQcmVmaXgiLCJ3b3JkV2l0aFNwYWNlRGlmZiIsInJlZ2V4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RpZmYvd29yZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgbG9uZ2VzdENvbW1vblByZWZpeCwgbG9uZ2VzdENvbW1vblN1ZmZpeCwgcmVwbGFjZVByZWZpeCwgcmVwbGFjZVN1ZmZpeCwgcmVtb3ZlUHJlZml4LCByZW1vdmVTdWZmaXgsIG1heGltdW1PdmVybGFwIH0gZnJvbSAnLi4vdXRpbC9zdHJpbmcnO1xuXG4vLyBCYXNlZCBvbiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9zY3JpcHRfaW5fVW5pY29kZVxuLy9cbi8vIFJhbmdlcyBhbmQgZXhjZXB0aW9uczpcbi8vIExhdGluLTEgU3VwcGxlbWVudCwgMDA4MOKAkzAwRkZcbi8vICAtIFUrMDBENyAgw5cgTXVsdGlwbGljYXRpb24gc2lnblxuLy8gIC0gVSswMEY3ICDDtyBEaXZpc2lvbiBzaWduXG4vLyBMYXRpbiBFeHRlbmRlZC1BLCAwMTAw4oCTMDE3RlxuLy8gTGF0aW4gRXh0ZW5kZWQtQiwgMDE4MOKAkzAyNEZcbi8vIElQQSBFeHRlbnNpb25zLCAwMjUw4oCTMDJBRlxuLy8gU3BhY2luZyBNb2RpZmllciBMZXR0ZXJzLCAwMkIw4oCTMDJGRlxuLy8gIC0gVSswMkM3ICDLhyAmIzcxMTsgIENhcm9uXG4vLyAgLSBVKzAyRDggIMuYICYjNzI4OyAgQnJldmVcbi8vICAtIFUrMDJEOSAgy5kgJiM3Mjk7ICBEb3QgQWJvdmVcbi8vICAtIFUrMDJEQSAgy5ogJiM3MzA7ICBSaW5nIEFib3ZlXG4vLyAgLSBVKzAyREIgIMubICYjNzMxOyAgT2dvbmVrXG4vLyAgLSBVKzAyREMgIMucICYjNzMyOyAgU21hbGwgVGlsZGVcbi8vICAtIFUrMDJERCAgy50gJiM3MzM7ICBEb3VibGUgQWN1dGUgQWNjZW50XG4vLyBMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsLCAxRTAw4oCTMUVGRlxuY29uc3QgZXh0ZW5kZWRXb3JkQ2hhcnMgPSAnYS16QS1aXFxcXHV7QzB9LVxcXFx1e0ZGfVxcXFx1e0Q4fS1cXFxcdXtGNn1cXFxcdXtGOH0tXFxcXHV7MkM2fVxcXFx1ezJDOH0tXFxcXHV7MkQ3fVxcXFx1ezJERX0tXFxcXHV7MkZGfVxcXFx1ezFFMDB9LVxcXFx1ezFFRkZ9JztcblxuLy8gRWFjaCB0b2tlbiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbi8vIC0gQSBwdW5jdHVhdGlvbiBtYXJrIHBsdXMgdGhlIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Vcbi8vIC0gQSB3b3JkIHBsdXMgdGhlIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Vcbi8vIC0gUHVyZSB3aGl0ZXNwYWNlIChidXQgb25seSBpbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgdGhlIGVudGlyZSB0ZXh0XG4vLyAgIGlzIGp1c3Qgd2hpdGVzcGFjZSlcbi8vXG4vLyBXZSBoYXZlIHRvIGluY2x1ZGUgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBpbiB0aGUgdG9rZW5zIGJlY2F1c2UgdGhlIHR3b1xuLy8gYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcyBwcm9kdWNlIGhvcnJpYmx5IGJyb2tlbiByZXN1bHRzOlxuLy8gKiBJZiB3ZSBqdXN0IGRpc2NhcmQgdGhlIHdoaXRlc3BhY2UsIHdlIGNhbid0IGZ1bGx5IHJlcHJvZHVjZSB0aGUgb3JpZ2luYWxcbi8vICAgdGV4dCBmcm9tIHRoZSBzZXF1ZW5jZSBvZiB0b2tlbnMgYW5kIGFueSBhdHRlbXB0IHRvIHJlbmRlciB0aGUgZGlmZiB3aWxsXG4vLyAgIGdldCB0aGUgd2hpdGVzcGFjZSB3cm9uZy5cbi8vICogSWYgd2UgaGF2ZSBzZXBhcmF0ZSB0b2tlbnMgZm9yIHdoaXRlc3BhY2UsIHRoZW4gaW4gYSB0eXBpY2FsIHRleHQgZXZlcnlcbi8vICAgc2Vjb25kIHRva2VuIHdpbGwgYmUgYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyLiBCdXQgdGhpcyBvZnRlbiByZXN1bHRzIGluXG4vLyAgIHRoZSBvcHRpbWFsIGRpZmYgYmV0d2VlbiB0d28gdGV4dHMgYmVpbmcgYSBwZXJ2ZXJzZSBvbmUgdGhhdCBwcmVzZXJ2ZXNcbi8vICAgdGhlIHNwYWNlcyBiZXR3ZWVuIHdvcmRzIGJ1dCBkZWxldGVzIGFuZCByZWluc2VydHMgYWN0dWFsIGNvbW1vbiB3b3Jkcy5cbi8vICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rcGRlY2tlci9qc2RpZmYvaXNzdWVzLzE2MCNpc3N1ZWNvbW1lbnQtMTg2NjA5OTY0MFxuLy8gICBmb3IgYW4gZXhhbXBsZS5cbi8vXG4vLyBLZWVwaW5nIHRoZSBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9mIGNvdXJzZSBoYXMgaW1wbGljYXRpb25zIGZvciAuZXF1YWxzXG4vLyBhbmQgLmpvaW4sIG5vdCBqdXN0IC50b2tlbml6ZS5cblxuLy8gVGhpcyByZWdleCBkb2VzIE5PVCBmdWxseSBpbXBsZW1lbnQgdGhlIHRva2VuaXphdGlvbiBydWxlcyBkZXNjcmliZWQgYWJvdmUuXG4vLyBJbnN0ZWFkLCBpdCBnaXZlcyBydW5zIG9mIHdoaXRlc3BhY2UgdGhlaXIgb3duIFwidG9rZW5cIi4gVGhlIHRva2VuaXplIG1ldGhvZFxuLy8gdGhlbiBoYW5kbGVzIHN0aXRjaGluZyB3aGl0ZXNwYWNlIHRva2VucyBvbnRvIGFkamFjZW50IHdvcmQgb3IgcHVuY3R1YXRpb25cbi8vIHRva2Vucy5cbmNvbnN0IHRva2VuaXplSW5jbHVkaW5nV2hpdGVzcGFjZSA9IG5ldyBSZWdFeHAoYFske2V4dGVuZGVkV29yZENoYXJzfV0rfFxcXFxzK3xbXiR7ZXh0ZW5kZWRXb3JkQ2hhcnN9XWAsICd1ZycpO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIGxlZnQudHJpbSgpID09PSByaWdodC50cmltKCk7XG59O1xuXG53b3JkRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IHBhcnRzO1xuICBpZiAob3B0aW9ucy5pbnRsU2VnbWVudGVyKSB7XG4gICAgaWYgKG9wdGlvbnMuaW50bFNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKS5ncmFudWxhcml0eSAhPSAnd29yZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNlZ21lbnRlciBwYXNzZWQgbXVzdCBoYXZlIGEgZ3JhbnVsYXJpdHkgb2YgXCJ3b3JkXCInKTtcbiAgICB9XG4gICAgcGFydHMgPSBBcnJheS5mcm9tKG9wdGlvbnMuaW50bFNlZ21lbnRlci5zZWdtZW50KHZhbHVlKSwgc2VnbWVudCA9PiBzZWdtZW50LnNlZ21lbnQpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzID0gdmFsdWUubWF0Y2godG9rZW5pemVJbmNsdWRpbmdXaGl0ZXNwYWNlKSB8fCBbXTtcbiAgfVxuICBjb25zdCB0b2tlbnMgPSBbXTtcbiAgbGV0IHByZXZQYXJ0ID0gbnVsbDtcbiAgcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICBpZiAoKC9cXHMvKS50ZXN0KHBhcnQpKSB7XG4gICAgICBpZiAocHJldlBhcnQgPT0gbnVsbCkge1xuICAgICAgICB0b2tlbnMucHVzaChwYXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRva2Vucy5wdXNoKHRva2Vucy5wb3AoKSArIHBhcnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKC9cXHMvKS50ZXN0KHByZXZQYXJ0KSkge1xuICAgICAgaWYgKHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0gPT0gcHJldlBhcnQpIHtcbiAgICAgICAgdG9rZW5zLnB1c2godG9rZW5zLnBvcCgpICsgcGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2tlbnMucHVzaChwcmV2UGFydCArIHBhcnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbnMucHVzaChwYXJ0KTtcbiAgICB9XG5cbiAgICBwcmV2UGFydCA9IHBhcnQ7XG4gIH0pO1xuICByZXR1cm4gdG9rZW5zO1xufTtcblxud29yZERpZmYuam9pbiA9IGZ1bmN0aW9uKHRva2Vucykge1xuICAvLyBUb2tlbnMgYmVpbmcgam9pbmVkIGhlcmUgd2lsbCBhbHdheXMgaGF2ZSBhcHBlYXJlZCBjb25zZWN1dGl2ZWx5IGluIHRoZVxuICAvLyBzYW1lIHRleHQsIHNvIHdlIGNhbiBzaW1wbHkgc3RyaXAgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgZnJvbSBhbGwgdGhlXG4gIC8vIHRva2VucyBleGNlcHQgdGhlIGZpcnN0IChhbmQgZXhjZXB0IGFueSB3aGl0ZXNwYWNlLW9ubHkgdG9rZW5zIC0gYnV0IHN1Y2hcbiAgLy8gYSB0b2tlbiB3aWxsIGFsd2F5cyBiZSB0aGUgZmlyc3QgYW5kIG9ubHkgdG9rZW4gYW55d2F5KSBhbmQgdGhlbiBqb2luIHRoZW1cbiAgLy8gYW5kIHRoZSB3aGl0ZXNwYWNlIGFyb3VuZCB3b3JkcyBhbmQgcHVuY3R1YXRpb24gd2lsbCBlbmQgdXAgY29ycmVjdC5cbiAgcmV0dXJuIHRva2Vucy5tYXAoKHRva2VuLCBpKSA9PiB7XG4gICAgaWYgKGkgPT0gMCkge1xuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdG9rZW4ucmVwbGFjZSgoL15cXHMrLyksICcnKTtcbiAgICB9XG4gIH0pLmpvaW4oJycpO1xufTtcblxud29yZERpZmYucG9zdFByb2Nlc3MgPSBmdW5jdGlvbihjaGFuZ2VzLCBvcHRpb25zKSB7XG4gIGlmICghY2hhbmdlcyB8fCBvcHRpb25zLm9uZUNoYW5nZVBlclRva2VuKSB7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICBsZXQgbGFzdEtlZXAgPSBudWxsO1xuICAvLyBDaGFuZ2Ugb2JqZWN0cyByZXByZXNlbnRpbmcgYW55IGluc2VydGlvbiBvciBkZWxldGlvbiBzaW5jZSB0aGUgbGFzdFxuICAvLyBcImtlZXBcIiBjaGFuZ2Ugb2JqZWN0LiBUaGVyZSBjYW4gYmUgYXQgbW9zdCBvbmUgb2YgZWFjaC5cbiAgbGV0IGluc2VydGlvbiA9IG51bGw7XG4gIGxldCBkZWxldGlvbiA9IG51bGw7XG4gIGNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIGluc2VydGlvbiA9IGNoYW5nZTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBkZWxldGlvbiA9IGNoYW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGluc2VydGlvbiB8fCBkZWxldGlvbikgeyAvLyBNYXkgYmUgZmFsc2UgYXQgc3RhcnQgb2YgdGV4dFxuICAgICAgICBkZWR1cGVXaGl0ZXNwYWNlSW5DaGFuZ2VPYmplY3RzKGxhc3RLZWVwLCBkZWxldGlvbiwgaW5zZXJ0aW9uLCBjaGFuZ2UpO1xuICAgICAgfVxuICAgICAgbGFzdEtlZXAgPSBjaGFuZ2U7XG4gICAgICBpbnNlcnRpb24gPSBudWxsO1xuICAgICAgZGVsZXRpb24gPSBudWxsO1xuICAgIH1cbiAgfSk7XG4gIGlmIChpbnNlcnRpb24gfHwgZGVsZXRpb24pIHtcbiAgICBkZWR1cGVXaGl0ZXNwYWNlSW5DaGFuZ2VPYmplY3RzKGxhc3RLZWVwLCBkZWxldGlvbiwgaW5zZXJ0aW9uLCBudWxsKTtcbiAgfVxuICByZXR1cm4gY2hhbmdlcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmV29yZHMob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpIHtcbiAgLy8gVGhpcyBvcHRpb24gaGFzIG5ldmVyIGJlZW4gZG9jdW1lbnRlZCBhbmQgbmV2ZXIgd2lsbCBiZSAoaXQncyBjbGVhcmVyIHRvXG4gIC8vIGp1c3QgY2FsbCBgZGlmZldvcmRzV2l0aFNwYWNlYCBkaXJlY3RseSBpZiB5b3UgbmVlZCB0aGF0IGJlaGF2aW9yKSwgYnV0XG4gIC8vIGhhcyBleGlzdGVkIGluIGpzZGlmZiBmb3IgYSBsb25nIHRpbWUsIHNvIHdlIHJldGFpbiBzdXBwb3J0IGZvciBpdCBoZXJlXG4gIC8vIGZvciB0aGUgc2FrZSBvZiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgaWYgKG9wdGlvbnM/Lmlnbm9yZVdoaXRlc3BhY2UgIT0gbnVsbCAmJiAhb3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlKSB7XG4gICAgcmV0dXJuIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGRlZHVwZVdoaXRlc3BhY2VJbkNoYW5nZU9iamVjdHMoc3RhcnRLZWVwLCBkZWxldGlvbiwgaW5zZXJ0aW9uLCBlbmRLZWVwKSB7XG4gIC8vIEJlZm9yZSByZXR1cm5pbmcsIHdlIHRpZHkgdXAgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb2YgdGhlXG4gIC8vIGNoYW5nZSBvYmplY3RzIHRvIGVsaW1pbmF0ZSBjYXNlcyB3aGVyZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIG9uZSBvYmplY3RcbiAgLy8gaXMgcmVwZWF0ZWQgYXMgbGVhZGluZyB3aGl0ZXNwYWNlIGluIHRoZSBuZXh0LlxuICAvLyBCZWxvdyBhcmUgZXhhbXBsZXMgb2YgdGhlIG91dGNvbWVzIHdlIHdhbnQgaGVyZSB0byBleHBsYWluIHRoZSBjb2RlLlxuICAvLyBJPWluc2VydCwgSz1rZWVwLCBEPWRlbGV0ZVxuICAvLyAxLiBkaWZmaW5nICdmb28gYmFyIGJheicgdnMgJ2ZvbyBiYXonXG4gIC8vICAgIFByaW9yIHRvIGNsZWFudXAsIHdlIGhhdmUgSzonZm9vICcgRDonIGJhciAnIEs6JyBiYXonXG4gIC8vICAgIEFmdGVyIGNsZWFudXAsIHdlIHdhbnQ6ICAgSzonZm9vICcgRDonYmFyICcgSzonYmF6J1xuICAvL1xuICAvLyAyLiBEaWZmaW5nICdmb28gYmFyIGJheicgdnMgJ2ZvbyBxdXggYmF6J1xuICAvLyAgICBQcmlvciB0byBjbGVhbnVwLCB3ZSBoYXZlIEs6J2ZvbyAnIEQ6JyBiYXIgJyBJOicgcXV4ICcgSzonIGJheidcbiAgLy8gICAgQWZ0ZXIgY2xlYW51cCwgd2Ugd2FudCBLOidmb28gJyBEOidiYXInIEk6J3F1eCcgSzonIGJheidcbiAgLy9cbiAgLy8gMy4gRGlmZmluZyAnZm9vXFxuYmFyIGJheicgdnMgJ2ZvbyBiYXonXG4gIC8vICAgIFByaW9yIHRvIGNsZWFudXAsIHdlIGhhdmUgSzonZm9vICcgRDonXFxuYmFyICcgSzonIGJheidcbiAgLy8gICAgQWZ0ZXIgY2xlYW51cCwgd2Ugd2FudCBLJ2ZvbycgRDonXFxuYmFyJyBLOicgYmF6J1xuICAvL1xuICAvLyA0LiBEaWZmaW5nICdmb28gYmF6JyB2cyAnZm9vXFxuYmFyIGJheidcbiAgLy8gICAgUHJpb3IgdG8gY2xlYW51cCwgd2UgaGF2ZSBLOidmb29cXG4nIEk6J1xcbmJhciAnIEs6JyBiYXonXG4gIC8vICAgIEFmdGVyIGNsZWFudXAsIHdlIGlkZWFsbHkgd2FudCBLJ2ZvbycgSTonXFxuYmFyJyBLOicgYmF6J1xuICAvLyAgICBidXQgZG9uJ3QgYWN0dWFsbHkgbWFuYWdlIHRoaXMgY3VycmVudGx5ICh0aGUgcHJlLWNsZWFudXAgY2hhbmdlXG4gIC8vICAgIG9iamVjdHMgZG9uJ3QgY29udGFpbiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gbWFrZSBpdCBwb3NzaWJsZSkuXG4gIC8vXG4gIC8vIDUuIERpZmZpbmcgJ2ZvbyAgIGJhciBiYXonIHZzICdmb28gIGJheidcbiAgLy8gICAgUHJpb3IgdG8gY2xlYW51cCwgd2UgaGF2ZSBLOidmb28gICcgRDonICAgYmFyICcgSzonICBiYXonXG4gIC8vICAgIEFmdGVyIGNsZWFudXAsIHdlIHdhbnQgSzonZm9vICAnIEQ6JyBiYXIgJyBLOidiYXonXG4gIC8vXG4gIC8vIE91ciBoYW5kbGluZyBpcyB1bmF2b2lkYWJseSBpbXBlcmZlY3QgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUncyBhIHNpbmdsZVxuICAvLyBpbmRlbCBiZXR3ZWVuIGtlZXBzIGFuZCB0aGUgd2hpdGVzcGFjZSBoYXMgY2hhbmdlZC4gRm9yIGluc3RhbmNlLCBjb25zaWRlclxuICAvLyBkaWZmaW5nICdmb29cXHRiYXJcXG5iYXonIHZzICdmb28gYmF6Jy4gVW5sZXNzIHdlIGNyZWF0ZSBhbiBleHRyYSBjaGFuZ2VcbiAgLy8gb2JqZWN0IHRvIHJlcHJlc2VudCB0aGUgaW5zZXJ0aW9uIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIgKHdoaWNoIGlzbid0IGV2ZW5cbiAgLy8gYSB0b2tlbiksIHdlIGhhdmUgbm8gd2F5IHRvIGF2b2lkIGxvc2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGV4dHMnXG4gIC8vIG9yaWdpbmFsIHdoaXRlc3BhY2UgaW4gdGhlIHJlc3VsdCB3ZSByZXR1cm4uIFN0aWxsLCB3ZSBkbyBvdXIgYmVzdCB0b1xuICAvLyBvdXRwdXQgc29tZXRoaW5nIHRoYXQgd2lsbCBsb29rIHNlbnNpYmxlIGlmIHdlIGUuZy4gcHJpbnQgaXQgd2l0aFxuICAvLyBpbnNlcnRpb25zIGluIGdyZWVuIGFuZCBkZWxldGlvbnMgaW4gcmVkLlxuXG4gIC8vIEJldHdlZW4gdHdvIFwia2VlcFwiIGNoYW5nZSBvYmplY3RzIChvciBiZWZvcmUgdGhlIGZpcnN0IG9yIGFmdGVyIHRoZSBsYXN0XG4gIC8vIGNoYW5nZSBvYmplY3QpLCB3ZSBjYW4gaGF2ZSBlaXRoZXI6XG4gIC8vICogQSBcImRlbGV0ZVwiIGZvbGxvd2VkIGJ5IGFuIFwiaW5zZXJ0XCJcbiAgLy8gKiBKdXN0IGFuIFwiaW5zZXJ0XCJcbiAgLy8gKiBKdXN0IGEgXCJkZWxldGVcIlxuICAvLyBXZSBoYW5kbGUgdGhlIHRocmVlIGNhc2VzIHNlcGFyYXRlbHkuXG4gIGlmIChkZWxldGlvbiAmJiBpbnNlcnRpb24pIHtcbiAgICBjb25zdCBvbGRXc1ByZWZpeCA9IGRlbGV0aW9uLnZhbHVlLm1hdGNoKC9eXFxzKi8pWzBdO1xuICAgIGNvbnN0IG9sZFdzU3VmZml4ID0gZGVsZXRpb24udmFsdWUubWF0Y2goL1xccyokLylbMF07XG4gICAgY29uc3QgbmV3V3NQcmVmaXggPSBpbnNlcnRpb24udmFsdWUubWF0Y2goL15cXHMqLylbMF07XG4gICAgY29uc3QgbmV3V3NTdWZmaXggPSBpbnNlcnRpb24udmFsdWUubWF0Y2goL1xccyokLylbMF07XG5cbiAgICBpZiAoc3RhcnRLZWVwKSB7XG4gICAgICBjb25zdCBjb21tb25Xc1ByZWZpeCA9IGxvbmdlc3RDb21tb25QcmVmaXgob2xkV3NQcmVmaXgsIG5ld1dzUHJlZml4KTtcbiAgICAgIHN0YXJ0S2VlcC52YWx1ZSA9IHJlcGxhY2VTdWZmaXgoc3RhcnRLZWVwLnZhbHVlLCBuZXdXc1ByZWZpeCwgY29tbW9uV3NQcmVmaXgpO1xuICAgICAgZGVsZXRpb24udmFsdWUgPSByZW1vdmVQcmVmaXgoZGVsZXRpb24udmFsdWUsIGNvbW1vbldzUHJlZml4KTtcbiAgICAgIGluc2VydGlvbi52YWx1ZSA9IHJlbW92ZVByZWZpeChpbnNlcnRpb24udmFsdWUsIGNvbW1vbldzUHJlZml4KTtcbiAgICB9XG4gICAgaWYgKGVuZEtlZXApIHtcbiAgICAgIGNvbnN0IGNvbW1vbldzU3VmZml4ID0gbG9uZ2VzdENvbW1vblN1ZmZpeChvbGRXc1N1ZmZpeCwgbmV3V3NTdWZmaXgpO1xuICAgICAgZW5kS2VlcC52YWx1ZSA9IHJlcGxhY2VQcmVmaXgoZW5kS2VlcC52YWx1ZSwgbmV3V3NTdWZmaXgsIGNvbW1vbldzU3VmZml4KTtcbiAgICAgIGRlbGV0aW9uLnZhbHVlID0gcmVtb3ZlU3VmZml4KGRlbGV0aW9uLnZhbHVlLCBjb21tb25Xc1N1ZmZpeCk7XG4gICAgICBpbnNlcnRpb24udmFsdWUgPSByZW1vdmVTdWZmaXgoaW5zZXJ0aW9uLnZhbHVlLCBjb21tb25Xc1N1ZmZpeCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGluc2VydGlvbikge1xuICAgIC8vIFRoZSB3aGl0ZXNwYWNlcyBhbGwgcmVmbGVjdCB3aGF0IHdhcyBpbiB0aGUgbmV3IHRleHQgcmF0aGVyIHRoYW5cbiAgICAvLyB0aGUgb2xkLCBzbyB3ZSBlc3NlbnRpYWxseSBoYXZlIG5vIGluZm9ybWF0aW9uIGFib3V0IHdoaXRlc3BhY2VcbiAgICAvLyBpbnNlcnRpb24gb3IgZGVsZXRpb24uIFdlIGp1c3Qgd2FudCB0byBkZWR1cGUgdGhlIHdoaXRlc3BhY2UuXG4gICAgLy8gV2UgZG8gdGhhdCBieSBoYXZpbmcgZWFjaCBjaGFuZ2Ugb2JqZWN0IGtlZXAgaXRzIHRyYWlsaW5nXG4gICAgLy8gd2hpdGVzcGFjZSBhbmQgZGVsZXRpbmcgZHVwbGljYXRlIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVyZVxuICAgIC8vIHByZXNlbnQuXG4gICAgaWYgKHN0YXJ0S2VlcCkge1xuICAgICAgaW5zZXJ0aW9uLnZhbHVlID0gaW5zZXJ0aW9uLnZhbHVlLnJlcGxhY2UoL15cXHMqLywgJycpO1xuICAgIH1cbiAgICBpZiAoZW5kS2VlcCkge1xuICAgICAgZW5kS2VlcC52YWx1ZSA9IGVuZEtlZXAudmFsdWUucmVwbGFjZSgvXlxccyovLCAnJyk7XG4gICAgfVxuICAvLyBvdGhlcndpc2Ugd2UndmUgZ290IGEgZGVsZXRpb24gYW5kIG5vIGluc2VydGlvblxuICB9IGVsc2UgaWYgKHN0YXJ0S2VlcCAmJiBlbmRLZWVwKSB7XG4gICAgY29uc3QgbmV3V3NGdWxsID0gZW5kS2VlcC52YWx1ZS5tYXRjaCgvXlxccyovKVswXSxcbiAgICAgICAgZGVsV3NTdGFydCA9IGRlbGV0aW9uLnZhbHVlLm1hdGNoKC9eXFxzKi8pWzBdLFxuICAgICAgICBkZWxXc0VuZCA9IGRlbGV0aW9uLnZhbHVlLm1hdGNoKC9cXHMqJC8pWzBdO1xuXG4gICAgLy8gQW55IHdoaXRlc3BhY2UgdGhhdCBjb21lcyBzdHJhaWdodCBhZnRlciBzdGFydEtlZXAgaW4gYm90aCB0aGUgb2xkIGFuZFxuICAgIC8vIG5ldyB0ZXh0cywgYXNzaWduIHRvIHN0YXJ0S2VlcCBhbmQgcmVtb3ZlIGZyb20gdGhlIGRlbGV0aW9uLlxuICAgIGNvbnN0IG5ld1dzU3RhcnQgPSBsb25nZXN0Q29tbW9uUHJlZml4KG5ld1dzRnVsbCwgZGVsV3NTdGFydCk7XG4gICAgZGVsZXRpb24udmFsdWUgPSByZW1vdmVQcmVmaXgoZGVsZXRpb24udmFsdWUsIG5ld1dzU3RhcnQpO1xuXG4gICAgLy8gQW55IHdoaXRlc3BhY2UgdGhhdCBjb21lcyBzdHJhaWdodCBiZWZvcmUgZW5kS2VlcCBpbiBib3RoIHRoZSBvbGQgYW5kXG4gICAgLy8gbmV3IHRleHRzLCBhbmQgaGFzbid0IGFscmVhZHkgYmVlbiBhc3NpZ25lZCB0byBzdGFydEtlZXAsIGFzc2lnbiB0b1xuICAgIC8vIGVuZEtlZXAgYW5kIHJlbW92ZSBmcm9tIHRoZSBkZWxldGlvbi5cbiAgICBjb25zdCBuZXdXc0VuZCA9IGxvbmdlc3RDb21tb25TdWZmaXgoXG4gICAgICByZW1vdmVQcmVmaXgobmV3V3NGdWxsLCBuZXdXc1N0YXJ0KSxcbiAgICAgIGRlbFdzRW5kXG4gICAgKTtcbiAgICBkZWxldGlvbi52YWx1ZSA9IHJlbW92ZVN1ZmZpeChkZWxldGlvbi52YWx1ZSwgbmV3V3NFbmQpO1xuICAgIGVuZEtlZXAudmFsdWUgPSByZXBsYWNlUHJlZml4KGVuZEtlZXAudmFsdWUsIG5ld1dzRnVsbCwgbmV3V3NFbmQpO1xuXG4gICAgLy8gSWYgdGhlcmUncyBhbnkgd2hpdGVzcGFjZSBmcm9tIHRoZSBuZXcgdGV4dCB0aGF0IEhBU04nVCBhbHJlYWR5IGJlZW5cbiAgICAvLyBhc3NpZ25lZCwgYXNzaWduIGl0IHRvIHRoZSBzdGFydDpcbiAgICBzdGFydEtlZXAudmFsdWUgPSByZXBsYWNlU3VmZml4KFxuICAgICAgc3RhcnRLZWVwLnZhbHVlLFxuICAgICAgbmV3V3NGdWxsLFxuICAgICAgbmV3V3NGdWxsLnNsaWNlKDAsIG5ld1dzRnVsbC5sZW5ndGggLSBuZXdXc0VuZC5sZW5ndGgpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChlbmRLZWVwKSB7XG4gICAgLy8gV2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dC4gUHJlc2VydmUgYWxsIHRoZSB3aGl0ZXNwYWNlIG9uXG4gICAgLy8gZW5kS2VlcCwgYW5kIGp1c3QgcmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIGRlbGV0aW9uIHRvIHRoZVxuICAgIC8vIGV4dGVudCB0aGF0IGl0IG92ZXJsYXBzIHdpdGggdGhlIHN0YXJ0IG9mIGVuZEtlZXAuXG4gICAgY29uc3QgZW5kS2VlcFdzUHJlZml4ID0gZW5kS2VlcC52YWx1ZS5tYXRjaCgvXlxccyovKVswXTtcbiAgICBjb25zdCBkZWxldGlvbldzU3VmZml4ID0gZGVsZXRpb24udmFsdWUubWF0Y2goL1xccyokLylbMF07XG4gICAgY29uc3Qgb3ZlcmxhcCA9IG1heGltdW1PdmVybGFwKGRlbGV0aW9uV3NTdWZmaXgsIGVuZEtlZXBXc1ByZWZpeCk7XG4gICAgZGVsZXRpb24udmFsdWUgPSByZW1vdmVTdWZmaXgoZGVsZXRpb24udmFsdWUsIG92ZXJsYXApO1xuICB9IGVsc2UgaWYgKHN0YXJ0S2VlcCkge1xuICAgIC8vIFdlIGFyZSBhdCB0aGUgRU5EIG9mIHRoZSB0ZXh0LiBQcmVzZXJ2ZSBhbGwgdGhlIHdoaXRlc3BhY2Ugb25cbiAgICAvLyBzdGFydEtlZXAsIGFuZCBqdXN0IHJlbW92ZSB3aGl0ZXNwYWNlIGZyb20gdGhlIHN0YXJ0IG9mIGRlbGV0aW9uIHRvXG4gICAgLy8gdGhlIGV4dGVudCB0aGF0IGl0IG92ZXJsYXBzIHdpdGggdGhlIGVuZCBvZiBzdGFydEtlZXAuXG4gICAgY29uc3Qgc3RhcnRLZWVwV3NTdWZmaXggPSBzdGFydEtlZXAudmFsdWUubWF0Y2goL1xccyokLylbMF07XG4gICAgY29uc3QgZGVsZXRpb25Xc1ByZWZpeCA9IGRlbGV0aW9uLnZhbHVlLm1hdGNoKC9eXFxzKi8pWzBdO1xuICAgIGNvbnN0IG92ZXJsYXAgPSBtYXhpbXVtT3ZlcmxhcChzdGFydEtlZXBXc1N1ZmZpeCwgZGVsZXRpb25Xc1ByZWZpeCk7XG4gICAgZGVsZXRpb24udmFsdWUgPSByZW1vdmVQcmVmaXgoZGVsZXRpb24udmFsdWUsIG92ZXJsYXApO1xuICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IHdvcmRXaXRoU3BhY2VEaWZmID0gbmV3IERpZmYoKTtcbndvcmRXaXRoU3BhY2VEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gU2xpZ2h0bHkgZGlmZmVyZW50IHRvIHRoZSB0b2tlbml6ZUluY2x1ZGluZ1doaXRlc3BhY2UgcmVnZXggdXNlZCBhYm92ZSBpblxuICAvLyB0aGF0IHRoaXMgb25lIHRyZWF0cyBlYWNoIGluZGl2aWR1YWwgbmV3bGluZSBhcyBhIGRpc3RpbmN0IHRva2VucywgcmF0aGVyXG4gIC8vIHRoYW4gbWVyZ2luZyB0aGVtIGludG8gb3RoZXIgc3Vycm91bmRpbmcgd2hpdGVzcGFjZS4gVGhpcyB3YXMgcmVxdWVzdGVkXG4gIC8vIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9rcGRlY2tlci9qc2RpZmYvaXNzdWVzLzE4MCAmXG4gIC8vICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9rcGRlY2tlci9qc2RpZmYvaXNzdWVzLzIxMVxuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYChcXFxccj9cXFxcbil8WyR7ZXh0ZW5kZWRXb3JkQ2hhcnN9XSt8W15cXFxcU1xcXFxuXFxcXHJdK3xbXiR7ZXh0ZW5kZWRXb3JkQ2hhcnN9XWAsICd1ZycpO1xuICByZXR1cm4gdmFsdWUubWF0Y2gocmVnZXgpIHx8IFtdO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBkaWZmV29yZHNXaXRoU3BhY2Uob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHdvcmRXaXRoU3BhY2VEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFBQTtBQUFBO0FBQW9KLG1DQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUE7QUFFcEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUUsaUJBQWlCLEdBQUcsMkdBQTJHOztBQUVySTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsMkJBQTJCLEdBQUcsSUFBSUMsTUFBTTtBQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBO0FBQUtILGlCQUFpQixnQkFBQUcsTUFBQSxDQUFhSCxpQkFBaUIsUUFBSyxJQUFJLENBQUM7QUFFckcsSUFBTUksUUFBUTtBQUFBO0FBQUFDLE9BQUEsQ0FBQUQsUUFBQTtBQUFBO0FBQUc7QUFBSUU7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSSxDQUFDLENBQUM7QUFDbENGLFFBQVEsQ0FBQ0csTUFBTSxHQUFHLFVBQVNDLElBQUksRUFBRUMs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 \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 920f0feeb..68b72e29a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -10,207 +10,208 @@ Object.defineProperty(exports, "Diff", { return _base["default"]; } }); -Object.defineProperty(exports, "diffChars", { +Object.defineProperty(exports, "applyPatch", { enumerable: true, get: function get() { - return _character.diffChars; + return _apply.applyPatch; } }); -Object.defineProperty(exports, "diffWords", { +Object.defineProperty(exports, "applyPatches", { enumerable: true, get: function get() { - return _word.diffWords; + return _apply.applyPatches; } }); -Object.defineProperty(exports, "diffWordsWithSpace", { +Object.defineProperty(exports, "canonicalize", { enumerable: true, get: function get() { - return _word.diffWordsWithSpace; + return _json.canonicalize; } }); -Object.defineProperty(exports, "diffLines", { +Object.defineProperty(exports, "convertChangesToDMP", { enumerable: true, get: function get() { - return _line.diffLines; + return _dmp.convertChangesToDMP; } }); -Object.defineProperty(exports, "diffTrimmedLines", { +Object.defineProperty(exports, "convertChangesToXML", { enumerable: true, get: function get() { - return _line.diffTrimmedLines; + return _xml.convertChangesToXML; } }); -Object.defineProperty(exports, "diffSentences", { +Object.defineProperty(exports, "createPatch", { enumerable: true, get: function get() { - return _sentence.diffSentences; + return _create.createPatch; } }); -Object.defineProperty(exports, "diffCss", { +Object.defineProperty(exports, "createTwoFilesPatch", { enumerable: true, get: function get() { - return _css.diffCss; + return _create.createTwoFilesPatch; } }); -Object.defineProperty(exports, "diffJson", { +Object.defineProperty(exports, "diffArrays", { enumerable: true, get: function get() { - return _json.diffJson; + return _array.diffArrays; } }); -Object.defineProperty(exports, "canonicalize", { +Object.defineProperty(exports, "diffChars", { enumerable: true, get: function get() { - return _json.canonicalize; + return _character.diffChars; } }); -Object.defineProperty(exports, "diffArrays", { +Object.defineProperty(exports, "diffCss", { enumerable: true, get: function get() { - return _array.diffArrays; + return _css.diffCss; } }); -Object.defineProperty(exports, "applyPatch", { +Object.defineProperty(exports, "diffJson", { enumerable: true, get: function get() { - return _apply.applyPatch; + return _json.diffJson; } }); -Object.defineProperty(exports, "applyPatches", { +Object.defineProperty(exports, "diffLines", { enumerable: true, get: function get() { - return _apply.applyPatches; + return _line.diffLines; } }); -Object.defineProperty(exports, "parsePatch", { +Object.defineProperty(exports, "diffSentences", { enumerable: true, get: function get() { - return _parse.parsePatch; + return _sentence.diffSentences; } }); -Object.defineProperty(exports, "merge", { +Object.defineProperty(exports, "diffTrimmedLines", { enumerable: true, get: function get() { - return _merge.merge; + return _line.diffTrimmedLines; } }); -Object.defineProperty(exports, "structuredPatch", { +Object.defineProperty(exports, "diffWords", { enumerable: true, get: function get() { - return _create.structuredPatch; + return _word.diffWords; } }); -Object.defineProperty(exports, "createTwoFilesPatch", { +Object.defineProperty(exports, "diffWordsWithSpace", { enumerable: true, get: function get() { - return _create.createTwoFilesPatch; + return _word.diffWordsWithSpace; } }); -Object.defineProperty(exports, "createPatch", { +Object.defineProperty(exports, "formatPatch", { enumerable: true, get: function get() { - return _create.createPatch; + return _create.formatPatch; } }); -Object.defineProperty(exports, "convertChangesToDMP", { +Object.defineProperty(exports, "merge", { enumerable: true, get: function get() { - return _dmp.convertChangesToDMP; + return _merge.merge; } }); -Object.defineProperty(exports, "convertChangesToXML", { +Object.defineProperty(exports, "parsePatch", { enumerable: true, get: function get() { - return _xml.convertChangesToXML; + return _parse.parsePatch; + } +}); +Object.defineProperty(exports, "reversePatch", { + enumerable: true, + get: function get() { + return _reverse.reversePatch; + } +}); +Object.defineProperty(exports, "structuredPatch", { + enumerable: true, + get: function get() { + return _create.structuredPatch; } }); - /*istanbul ignore end*/ var /*istanbul ignore start*/ _base = _interopRequireDefault(require("./diff/base")) /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _character = require("./diff/character") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _word = require("./diff/word") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _line = require("./diff/line") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _sentence = require("./diff/sentence") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _css = require("./diff/css") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _json = require("./diff/json") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _array = require("./diff/array") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _apply = require("./patch/apply") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _parse = require("./patch/parse") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _merge = require("./patch/merge") /*istanbul ignore end*/ ; - +var +/*istanbul ignore start*/ +_reverse = require("./patch/reverse") +/*istanbul ignore end*/ +; var /*istanbul ignore start*/ _create = require("./patch/create") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _dmp = require("./convert/dmp") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _xml = require("./convert/xml") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } /*istanbul ignore end*/ -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBTZWUgTElDRU5TRSBmaWxlIGZvciB0ZXJtcyBvZiB1c2UgKi9cblxuLypcbiAqIFRleHQgZGlmZiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBBUElTOlxuICogSnNEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBKc0RpZmYuZGlmZldvcmRzOiBXb3JkIChhcyBkZWZpbmVkIGJ5IFxcYiByZWdleCkgZGlmZiB3aGljaCBpZ25vcmVzIHdoaXRlc3BhY2VcbiAqIEpzRGlmZi5kaWZmTGluZXM6IExpbmUgYmFzZWQgZGlmZlxuICpcbiAqIEpzRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2gsIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsIGNyZWF0ZVBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGFwcGx5UGF0Y2gsXG4gIGFwcGx5UGF0Y2hlcyxcbiAgcGFyc2VQYXRjaCxcbiAgbWVyZ2UsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYXJhY3RlciIsIl93b3JkIiwiX2xpbmUiLCJfc2VudGVuY2UiLCJfY3NzIiwiX2pzb24iLCJfYXJyYXkiLCJfYXBwbHkiLCJfcGFyc2UiLCJfbWVyZ2UiLCJfcmV2ZXJzZSIsIl9jcmVhdGUiLCJfZG1wIiwiX3htbCIsImUiLCJfX2VzTW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUFLLElBQUEsR0FBQUwsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFNLEtBQUEsR0FBQU4sT0FBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFTLE1BQUEsR0FBQVQsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFXLFFBQUEsR0FBQVgsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUFhLElBQUEsR0FBQWIsT0FBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUFjLElBQUEsR0FBQWQsT0FBQTtBQUFBO0FBQUE7QUFBa0QsbUNBQUFELHVCQUFBZ0IsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/lib/patch/apply.js b/lib/patch/apply.js index 21c76ddb7..ad40633b5 100644 --- a/lib/patch/apply.js +++ b/lib/patch/apply.js @@ -6,35 +6,39 @@ Object.defineProperty(exports, "__esModule", { }); exports.applyPatch = applyPatch; exports.applyPatches = applyPatches; - /*istanbul ignore end*/ var /*istanbul ignore start*/ +_string = require("../util/string") +/*istanbul ignore end*/ +; +var +/*istanbul ignore start*/ +_lineEndings = require("./line-endings") +/*istanbul ignore end*/ +; +var +/*istanbul ignore start*/ _parse = require("./parse") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _distanceIterator = _interopRequireDefault(require("../util/distance-iterator")) /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } - +/*istanbul ignore start*/ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } /*istanbul ignore end*/ function applyPatch(source, uniDiff) { /*istanbul ignore start*/ var /*istanbul ignore end*/ options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - if (typeof uniDiff === 'string') { uniDiff = /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _parse /*istanbul ignore end*/ @@ -44,160 +48,318 @@ function applyPatch(source, uniDiff) { /*istanbul ignore end*/ (uniDiff); } - if (Array.isArray(uniDiff)) { if (uniDiff.length > 1) { throw new Error('applyPatch only works with a single input.'); } - uniDiff = uniDiff[0]; - } // Apply the diff to the input - - - var lines = source.split(/\r\n|[\n\v\f\r\x85]/), - delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], - hunks = uniDiff.hunks, - compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) - /*istanbul ignore start*/ - { - return ( + } + if (options.autoConvertLineEndings || options.autoConvertLineEndings == null) { + if ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + hasOnlyWinLineEndings) + /*istanbul ignore end*/ + (source) && + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _lineEndings + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + isUnix) + /*istanbul ignore end*/ + (uniDiff)) { + uniDiff = + /*istanbul ignore start*/ + (0, /*istanbul ignore end*/ - line === patchContent - ); - }, - errorCount = 0, - fuzzFactor = options.fuzzFactor || 0, - minLine = 0, - offset = 0, - removeEOFNL, - addEOFNL; - /** - * Checks if the hunk exactly fits on the provided location - */ - - - function hunkFits(hunk, toPos) { - for (var j = 0; j < hunk.lines.length; j++) { - var line = hunk.lines[j], - operation = line.length > 0 ? line[0] : ' ', - content = line.length > 0 ? line.substr(1) : line; + /*istanbul ignore start*/ + _lineEndings + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + unixToWin) + /*istanbul ignore end*/ + (uniDiff); + } else if ( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _string + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + hasOnlyUnixLineEndings) + /*istanbul ignore end*/ + (source) && + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _lineEndings + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + isWin) + /*istanbul ignore end*/ + (uniDiff)) { + uniDiff = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _lineEndings + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + winToUnix) + /*istanbul ignore end*/ + (uniDiff); + } + } - if (operation === ' ' || operation === '-') { - // Context sanity check - if (!compareLine(toPos + 1, lines[toPos], operation, content)) { - errorCount++; + // Apply the diff to the input + var lines = source.split('\n'), + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + line === patchContent + ); + }, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0; + if (fuzzFactor < 0 || !Number.isInteger(fuzzFactor)) { + throw new Error('fuzzFactor must be a non-negative integer'); + } - if (errorCount > fuzzFactor) { - return false; - } - } + // Special case for empty patch. + if (!hunks.length) { + return source; + } - toPos++; + // Before anything else, handle EOFNL insertion/removal. If the patch tells us to make a change + // to the EOFNL that is redundant/impossible - i.e. to remove a newline that's not there, or add a + // newline that already exists - then we either return false and fail to apply the patch (if + // fuzzFactor is 0) or simply ignore the problem and do nothing (if fuzzFactor is >0). + // If we do need to remove/add a newline at EOF, this will always be in the final hunk: + var prevLine = '', + removeEOFNL = false, + addEOFNL = false; + for (var i = 0; i < hunks[hunks.length - 1].lines.length; i++) { + var line = hunks[hunks.length - 1].lines[i]; + if (line[0] == '\\') { + if (prevLine[0] == '+') { + removeEOFNL = true; + } else if (prevLine[0] == '-') { + addEOFNL = true; } } + prevLine = line; + } + if (removeEOFNL) { + if (addEOFNL) { + // This means the final line gets changed but doesn't have a trailing newline in either the + // original or patched version. In that case, we do nothing if fuzzFactor > 0, and if + // fuzzFactor is 0, we simply validate that the source file has no trailing newline. + if (!fuzzFactor && lines[lines.length - 1] == '') { + return false; + } + } else if (lines[lines.length - 1] == '') { + lines.pop(); + } else if (!fuzzFactor) { + return false; + } + } else if (addEOFNL) { + if (lines[lines.length - 1] != '') { + lines.push(''); + } else if (!fuzzFactor) { + return false; + } + } - return true; - } // Search best fit offsets for each hunk based on the previous ones - - - for (var i = 0; i < hunks.length; i++) { - var hunk = hunks[i], - maxLine = lines.length - hunk.oldLines, - localOffset = 0, - toPos = offset + hunk.oldStart - 1; - var iterator = + /** + * Checks if the hunk can be made to fit at the provided location with at most `maxErrors` + * insertions, substitutions, or deletions, while ensuring also that: + * - lines deleted in the hunk match exactly, and + * - wherever an insertion operation or block of insertion operations appears in the hunk, the + * immediately preceding and following lines of context match exactly + * + * `toPos` should be set such that lines[toPos] is meant to match hunkLines[0]. + * + * If the hunk can be applied, returns an object with properties `oldLineLastI` and + * `replacementLines`. Otherwise, returns null. + */ + function applyHunk(hunkLines, toPos, maxErrors) { /*istanbul ignore start*/ - (0, + var /*istanbul ignore end*/ - + hunkLinesI = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + /*istanbul ignore start*/ + var + /*istanbul ignore end*/ + lastContextLineMatched = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; /*istanbul ignore start*/ - _distanceIterator + var /*istanbul ignore end*/ - [ + patchedLines = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : []; /*istanbul ignore start*/ - "default" + var /*istanbul ignore end*/ - ])(toPos, minLine, maxLine); + patchedLinesLength = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0; + var nConsecutiveOldContextLines = 0; + var nextContextLineMustMatch = false; + for (; hunkLinesI < hunkLines.length; hunkLinesI++) { + var hunkLine = hunkLines[hunkLinesI], + operation = hunkLine.length > 0 ? hunkLine[0] : ' ', + content = hunkLine.length > 0 ? hunkLine.substr(1) : hunkLine; + if (operation === '-') { + if (compareLine(toPos + 1, lines[toPos], operation, content)) { + toPos++; + nConsecutiveOldContextLines = 0; + } else { + if (!maxErrors || lines[toPos] == null) { + return null; + } + patchedLines[patchedLinesLength] = lines[toPos]; + return applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1); + } + } + if (operation === '+') { + if (!lastContextLineMatched) { + return null; + } + patchedLines[patchedLinesLength] = content; + patchedLinesLength++; + nConsecutiveOldContextLines = 0; + nextContextLineMustMatch = true; + } + if (operation === ' ') { + nConsecutiveOldContextLines++; + patchedLines[patchedLinesLength] = lines[toPos]; + if (compareLine(toPos + 1, lines[toPos], operation, content)) { + patchedLinesLength++; + lastContextLineMatched = true; + nextContextLineMustMatch = false; + toPos++; + } else { + if (nextContextLineMustMatch || !maxErrors) { + return null; + } - for (; localOffset !== undefined; localOffset = iterator()) { - if (hunkFits(hunk, toPos + localOffset)) { - hunk.offset = offset += localOffset; - break; + // Consider 3 possibilities in sequence: + // 1. lines contains a *substitution* not included in the patch context, or + // 2. lines contains an *insertion* not included in the patch context, or + // 3. lines contains a *deletion* not included in the patch context + // The first two options are of course only possible if the line from lines is non-null - + // i.e. only option 3 is possible if we've overrun the end of the old file. + return lines[toPos] && (applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength + 1) || applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1)) || applyHunk(hunkLines, toPos, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength); + } } } - if (localOffset === undefined) { - return false; - } // Set lower text limit to end of the current hunk, so next ones don't try - // to fit over already patched text - - - minLine = hunk.offset + hunk.oldStart + hunk.oldLines; - } // Apply patch hunks - - - var diffOffset = 0; + // Before returning, trim any unmodified context lines off the end of patchedLines and reduce + // toPos (and thus oldLineLastI) accordingly. This allows later hunks to be applied to a region + // that starts in this hunk's trailing context. + patchedLinesLength -= nConsecutiveOldContextLines; + toPos -= nConsecutiveOldContextLines; + patchedLines.length = patchedLinesLength; + return { + patchedLines: patchedLines, + oldLineLastI: toPos - 1 + }; + } + var resultLines = []; + // Search best fit offsets for each hunk based on the previous ones + var prevHunkOffset = 0; for (var _i = 0; _i < hunks.length; _i++) { - var _hunk = hunks[_i], - _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; - - diffOffset += _hunk.newLines - _hunk.oldLines; - - for (var j = 0; j < _hunk.lines.length; j++) { - var line = _hunk.lines[j], - operation = line.length > 0 ? line[0] : ' ', - content = line.length > 0 ? line.substr(1) : line, - delimiter = _hunk.linedelimiters[j]; - - if (operation === ' ') { - _toPos++; - } else if (operation === '-') { - lines.splice(_toPos, 1); - delimiters.splice(_toPos, 1); - /* istanbul ignore else */ - } else if (operation === '+') { - lines.splice(_toPos, 0, content); - delimiters.splice(_toPos, 0, delimiter); - _toPos++; - } else if (operation === '\\') { - var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; - - if (previousOperation === '+') { - removeEOFNL = true; - } else if (previousOperation === '-') { - addEOFNL = true; + var hunk = hunks[_i]; + var hunkResult = + /*istanbul ignore start*/ + void 0 + /*istanbul ignore end*/ + ; + var maxLine = lines.length - hunk.oldLines + fuzzFactor; + var toPos = + /*istanbul ignore start*/ + void 0 + /*istanbul ignore end*/ + ; + for (var maxErrors = 0; maxErrors <= fuzzFactor; maxErrors++) { + toPos = hunk.oldStart + prevHunkOffset - 1; + var iterator = + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _distanceIterator + /*istanbul ignore end*/ + [ + /*istanbul ignore start*/ + "default" + /*istanbul ignore end*/ + ])(toPos, minLine, maxLine); + for (; toPos !== undefined; toPos = iterator()) { + hunkResult = applyHunk(hunk.lines, toPos, maxErrors); + if (hunkResult) { + break; } } + if (hunkResult) { + break; + } + } + if (!hunkResult) { + return false; } - } // Handle EOFNL insertion/removal + // Copy everything from the end of where we applied the last hunk to the start of this hunk + for (var _i2 = minLine; _i2 < toPos; _i2++) { + resultLines.push(lines[_i2]); + } - if (removeEOFNL) { - while (!lines[lines.length - 1]) { - lines.pop(); - delimiters.pop(); + // Add the lines produced by applying the hunk: + for (var _i3 = 0; _i3 < hunkResult.patchedLines.length; _i3++) { + var _line = hunkResult.patchedLines[_i3]; + resultLines.push(_line); } - } else if (addEOFNL) { - lines.push(''); - delimiters.push('\n'); - } - for (var _k = 0; _k < lines.length - 1; _k++) { - lines[_k] = lines[_k] + delimiters[_k]; - } + // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + minLine = hunkResult.oldLineLastI + 1; - return lines.join(''); -} // Wrapper that supports multiple file patches via callbacks. + // Note the offset between where the patch said the hunk should've applied and where we + // applied it, so we can adjust future hunks accordingly: + prevHunkOffset = toPos + 1 - hunk.oldStart; + } + // Copy over the rest of the lines from the old text + for (var _i4 = minLine; _i4 < lines.length; _i4++) { + resultLines.push(lines[_i4]); + } + return resultLines.join('\n'); +} +// Wrapper that supports multiple file patches via callbacks. function applyPatches(uniDiff, options) { if (typeof uniDiff === 'string') { uniDiff = /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _parse /*istanbul ignore end*/ @@ -207,32 +369,25 @@ function applyPatches(uniDiff, options) { /*istanbul ignore end*/ (uniDiff); } - var currentIndex = 0; - function processIndex() { var index = uniDiff[currentIndex++]; - if (!index) { return options.complete(); } - options.loadFile(index, function (err, data) { if (err) { return options.complete(err); } - var updatedContent = applyPatch(data, index, options); options.patched(index, updatedContent, function (err) { if (err) { return options.complete(err); } - processIndex(); }); }); } - processIndex(); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUNEOztBQUVELE1BQUlnRCxZQUFZLEdBQUcsQ0FBbkI7O0FBQ0EsV0FBU0MsWUFBVCxHQUF3QjtBQUN0QixRQUFJQyxLQUFLLEdBQUdsRCxPQUFPLENBQUNnRCxZQUFZLEVBQWIsQ0FBbkI7O0FBQ0EsUUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixhQUFPakQsT0FBTyxDQUFDa0QsUUFBUixFQUFQO0FBQ0Q7O0FBRURsRCxJQUFBQSxPQUFPLENBQUNtRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFRCxVQUFJRSxjQUFjLEdBQUd6RCxVQUFVLENBQUN3RCxJQUFELEVBQU9KLEtBQVAsRUFBY2pELE9BQWQsQ0FBL0I7QUFDQUEsTUFBQUEsT0FBTyxDQUFDdUQsT0FBUixDQUFnQk4sS0FBaEIsRUFBdUJLLGNBQXZCLEVBQXVDLFVBQVNGLEdBQVQsRUFBYztBQUNuRCxZQUFJQSxHQUFKLEVBQVM7QUFDUCxpQkFBT3BELE9BQU8sQ0FBQ2tELFFBQVIsQ0FBaUJFLEdBQWpCLENBQVA7QUFDRDs7QUFFREosUUFBQUEsWUFBWTtBQUNiLE9BTkQ7QUFPRCxLQWJEO0FBY0Q7O0FBQ0RBLEVBQUFBLFlBQVk7QUFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyaW5nIiwicmVxdWlyZSIsIl9saW5lRW5kaW5ncyIsIl9wYXJzZSIsIl9kaXN0YW5jZUl0ZXJhdG9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJfX2VzTW9kdWxlIiwiYXBwbHlQYXRjaCIsInNvdXJjZSIsInVuaURpZmYiLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicGFyc2VQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiYXV0b0NvbnZlcnRMaW5lRW5kaW5ncyIsImhhc09ubHlXaW5MaW5lRW5kaW5ncyIsImlzVW5peCIsInVuaXhUb1dpbiIsImhhc09ubHlVbml4TGluZUVuZGluZ3MiLCJpc1dpbiIsIndpblRvVW5peCIsImxpbmVzIiwic3BsaXQiLCJodW5rcyIsImNvbXBhcmVMaW5lIiwibGluZU51bWJlciIsImxpbmUiLCJvcGVyYXRpb24iLCJwYXRjaENvbnRlbnQiLCJmdXp6RmFjdG9yIiwibWluTGluZSIsIk51bWJlciIsImlzSW50ZWdlciIsInByZXZMaW5lIiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImkiLCJwb3AiLCJwdXNoIiwiYXBwbHlIdW5rIiwiaHVua0xpbmVzIiwidG9Qb3MiLCJtYXhFcnJvcnMiLCJodW5rTGluZXNJIiwibGFzdENvbnRleHRMaW5lTWF0Y2hlZCIsInBhdGNoZWRMaW5lcyIsInBhdGNoZWRMaW5lc0xlbmd0aCIsIm5Db25zZWN1dGl2ZU9sZENvbnRleHRMaW5lcyIsIm5leHRDb250ZXh0TGluZU11c3RNYXRjaCIsImh1bmtMaW5lIiwiY29udGVudCIsInN1YnN0ciIsIm9sZExpbmVMYXN0SSIsInJlc3VsdExpbmVzIiwicHJldkh1bmtPZmZzZXQiLCJodW5rIiwiaHVua1Jlc3VsdCIsIm1heExpbmUiLCJvbGRMaW5lcyIsIm9sZFN0YXJ0IiwiaXRlcmF0b3IiLCJkaXN0YW5jZUl0ZXJhdG9yIiwiam9pbiIsImFwcGx5UGF0Y2hlcyIsImN1cnJlbnRJbmRleCIsInByb2Nlc3NJbmRleCIsImluZGV4IiwiY29tcGxldGUiLCJsb2FkRmlsZSIsImVyciIsImRhdGEiLCJ1cGRhdGVkQ29udGVudCIsInBhdGNoZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcGF0Y2gvYXBwbHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoYXNPbmx5V2luTGluZUVuZGluZ3MsIGhhc09ubHlVbml4TGluZUVuZGluZ3N9IGZyb20gJy4uL3V0aWwvc3RyaW5nJztcbmltcG9ydCB7aXNXaW4sIGlzVW5peCwgdW5peFRvV2luLCB3aW5Ub1VuaXh9IGZyb20gJy4vbGluZS1lbmRpbmdzJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYXV0b0NvbnZlcnRMaW5lRW5kaW5ncyB8fCBvcHRpb25zLmF1dG9Db252ZXJ0TGluZUVuZGluZ3MgPT0gbnVsbCkge1xuICAgIGlmIChoYXNPbmx5V2luTGluZUVuZGluZ3Moc291cmNlKSAmJiBpc1VuaXgodW5pRGlmZikpIHtcbiAgICAgIHVuaURpZmYgPSB1bml4VG9XaW4odW5pRGlmZik7XG4gICAgfSBlbHNlIGlmIChoYXNPbmx5VW5peExpbmVFbmRpbmdzKHNvdXJjZSkgJiYgaXNXaW4odW5pRGlmZikpIHtcbiAgICAgIHVuaURpZmYgPSB3aW5Ub1VuaXgodW5pRGlmZik7XG4gICAgfVxuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgnXFxuJyksXG4gICAgICBodW5rcyA9IHVuaURpZmYuaHVua3MsXG5cbiAgICAgIGNvbXBhcmVMaW5lID0gb3B0aW9ucy5jb21wYXJlTGluZSB8fCAoKGxpbmVOdW1iZXIsIGxpbmUsIG9wZXJhdGlvbiwgcGF0Y2hDb250ZW50KSA9PiBsaW5lID09PSBwYXRjaENvbnRlbnQpLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDA7XG5cbiAgaWYgKGZ1enpGYWN0b3IgPCAwIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZ1enpGYWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmdXp6RmFjdG9yIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcicpO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBwYXRjaC5cbiAgaWYgKCFodW5rcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gQmVmb3JlIGFueXRoaW5nIGVsc2UsIGhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbC4gSWYgdGhlIHBhdGNoIHRlbGxzIHVzIHRvIG1ha2UgYSBjaGFuZ2VcbiAgLy8gdG8gdGhlIEVPRk5MIHRoYXQgaXMgcmVkdW5kYW50L2ltcG9zc2libGUgLSBpLmUuIHRvIHJlbW92ZSBhIG5ld2xpbmUgdGhhdCdzIG5vdCB0aGVyZSwgb3IgYWRkIGFcbiAgLy8gbmV3bGluZSB0aGF0IGFscmVhZHkgZXhpc3RzIC0gdGhlbiB3ZSBlaXRoZXIgcmV0dXJuIGZhbHNlIGFuZCBmYWlsIHRvIGFwcGx5IHRoZSBwYXRjaCAoaWZcbiAgLy8gZnV6ekZhY3RvciBpcyAwKSBvciBzaW1wbHkgaWdub3JlIHRoZSBwcm9ibGVtIGFuZCBkbyBub3RoaW5nIChpZiBmdXp6RmFjdG9yIGlzID4wKS5cbiAgLy8gSWYgd2UgZG8gbmVlZCB0byByZW1vdmUvYWRkIGEgbmV3bGluZSBhdCBFT0YsIHRoaXMgd2lsbCBhbHdheXMgYmUgaW4gdGhlIGZpbmFsIGh1bms6XG4gIGxldCBwcmV2TGluZSA9ICcnLFxuICAgICAgcmVtb3ZlRU9GTkwgPSBmYWxzZSxcbiAgICAgIGFkZEVPRk5MID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3NbaHVua3MubGVuZ3RoIC0gMV0ubGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBsaW5lID0gaHVua3NbaHVua3MubGVuZ3RoIC0gMV0ubGluZXNbaV07XG4gICAgaWYgKGxpbmVbMF0gPT0gJ1xcXFwnKSB7XG4gICAgICBpZiAocHJldkxpbmVbMF0gPT0gJysnKSB7XG4gICAgICAgIHJlbW92ZUVPRk5MID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAocHJldkxpbmVbMF0gPT0gJy0nKSB7XG4gICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHJldkxpbmUgPSBsaW5lO1xuICB9XG4gIGlmIChyZW1vdmVFT0ZOTCkge1xuICAgIGlmIChhZGRFT0ZOTCkge1xuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgZmluYWwgbGluZSBnZXRzIGNoYW5nZWQgYnV0IGRvZXNuJ3QgaGF2ZSBhIHRyYWlsaW5nIG5ld2xpbmUgaW4gZWl0aGVyIHRoZVxuICAgICAgLy8gb3JpZ2luYWwgb3IgcGF0Y2hlZCB2ZXJzaW9uLiBJbiB0aGF0IGNhc2UsIHdlIGRvIG5vdGhpbmcgaWYgZnV6ekZhY3RvciA+IDAsIGFuZCBpZlxuICAgICAgLy8gZnV6ekZhY3RvciBpcyAwLCB3ZSBzaW1wbHkgdmFsaWRhdGUgdGhhdCB0aGUgc291cmNlIGZpbGUgaGFzIG5vIHRyYWlsaW5nIG5ld2xpbmUuXG4gICAgICBpZiAoIWZ1enpGYWN0b3IgJiYgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gPT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGluZXNbbGluZXMubGVuZ3RoIC0gMV0gPT0gJycpIHtcbiAgICAgIGxpbmVzLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAoIWZ1enpGYWN0b3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYWRkRU9GTkwpIHtcbiAgICBpZiAobGluZXNbbGluZXMubGVuZ3RoIC0gMV0gIT0gJycpIHtcbiAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgIH0gZWxzZSBpZiAoIWZ1enpGYWN0b3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGNhbiBiZSBtYWRlIHRvIGZpdCBhdCB0aGUgcHJvdmlkZWQgbG9jYXRpb24gd2l0aCBhdCBtb3N0IGBtYXhFcnJvcnNgXG4gICAqIGluc2VydGlvbnMsIHN1YnN0aXR1dGlvbnMsIG9yIGRlbGV0aW9ucywgd2hpbGUgZW5zdXJpbmcgYWxzbyB0aGF0OlxuICAgKiAtIGxpbmVzIGRlbGV0ZWQgaW4gdGhlIGh1bmsgbWF0Y2ggZXhhY3RseSwgYW5kXG4gICAqIC0gd2hlcmV2ZXIgYW4gaW5zZXJ0aW9uIG9wZXJhdGlvbiBvciBibG9jayBvZiBpbnNlcnRpb24gb3BlcmF0aW9ucyBhcHBlYXJzIGluIHRoZSBodW5rLCB0aGVcbiAgICogICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYW5kIGZvbGxvd2luZyBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIGV4YWN0bHlcbiAgICpcbiAgICogYHRvUG9zYCBzaG91bGQgYmUgc2V0IHN1Y2ggdGhhdCBsaW5lc1t0b1Bvc10gaXMgbWVhbnQgdG8gbWF0Y2ggaHVua0xpbmVzWzBdLlxuICAgKlxuICAgKiBJZiB0aGUgaHVuayBjYW4gYmUgYXBwbGllZCwgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGBvbGRMaW5lTGFzdElgIGFuZFxuICAgKiBgcmVwbGFjZW1lbnRMaW5lc2AuIE90aGVyd2lzZSwgcmV0dXJucyBudWxsLlxuICAgKi9cbiAgZnVuY3Rpb24gYXBwbHlIdW5rKFxuICAgIGh1bmtMaW5lcyxcbiAgICB0b1BvcyxcbiAgICBtYXhFcnJvcnMsXG4gICAgaHVua0xpbmVzSSA9IDAsXG4gICAgbGFzdENvbnRleHRMaW5lTWF0Y2hlZCA9IHRydWUsXG4gICAgcGF0Y2hlZExpbmVzID0gW10sXG4gICAgcGF0Y2hlZExpbmVzTGVuZ3RoID0gMCxcbiAgKSB7XG4gICAgbGV0IG5Db25zZWN1dGl2ZU9sZENvbnRleHRMaW5lcyA9IDA7XG4gICAgbGV0IG5leHRDb250ZXh0TGluZU11c3RNYXRjaCA9IGZhbHNlO1xuICAgIGZvciAoOyBodW5rTGluZXNJIDwgaHVua0xpbmVzLmxlbmd0aDsgaHVua0xpbmVzSSsrKSB7XG4gICAgICBsZXQgaHVua0xpbmUgPSBodW5rTGluZXNbaHVua0xpbmVzSV0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGh1bmtMaW5lLmxlbmd0aCA+IDAgPyBodW5rTGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChodW5rTGluZS5sZW5ndGggPiAwID8gaHVua0xpbmUuc3Vic3RyKDEpIDogaHVua0xpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgaWYgKGNvbXBhcmVMaW5lKHRvUG9zICsgMSwgbGluZXNbdG9Qb3NdLCBvcGVyYXRpb24sIGNvbnRlbnQpKSB7XG4gICAgICAgICAgdG9Qb3MrKztcbiAgICAgICAgICBuQ29uc2VjdXRpdmVPbGRDb250ZXh0TGluZXMgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghbWF4RXJyb3JzIHx8IGxpbmVzW3RvUG9zXSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGF0Y2hlZExpbmVzW3BhdGNoZWRMaW5lc0xlbmd0aF0gPSBsaW5lc1t0b1Bvc107XG4gICAgICAgICAgcmV0dXJuIGFwcGx5SHVuayhcbiAgICAgICAgICAgIGh1bmtMaW5lcyxcbiAgICAgICAgICAgIHRvUG9zICsgMSxcbiAgICAgICAgICAgIG1heEVycm9ycyAtIDEsXG4gICAgICAgICAgICBodW5rTGluZXNJLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBwYXRjaGVkTGluZXMsXG4gICAgICAgICAgICBwYXRjaGVkTGluZXNMZW5ndGggKyAxLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGlmICghbGFzdENvbnRleHRMaW5lTWF0Y2hlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHBhdGNoZWRMaW5lc1twYXRjaGVkTGluZXNMZW5ndGhdID0gY29udGVudDtcbiAgICAgICAgcGF0Y2hlZExpbmVzTGVuZ3RoKys7XG4gICAgICAgIG5Db25zZWN1dGl2ZU9sZENvbnRleHRMaW5lcyA9IDA7XG4gICAgICAgIG5leHRDb250ZXh0TGluZU11c3RNYXRjaCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcgJykge1xuICAgICAgICBuQ29uc2VjdXRpdmVPbGRDb250ZXh0TGluZXMrKztcbiAgICAgICAgcGF0Y2hlZExpbmVzW3BhdGNoZWRMaW5lc0xlbmd0aF0gPSBsaW5lc1t0b1Bvc107XG4gICAgICAgIGlmIChjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIHBhdGNoZWRMaW5lc0xlbmd0aCsrO1xuICAgICAgICAgIGxhc3RDb250ZXh0TGluZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgICAgIG5leHRDb250ZXh0TGluZU11c3RNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgIHRvUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG5leHRDb250ZXh0TGluZU11c3RNYXRjaCB8fCAhbWF4RXJyb3JzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb25zaWRlciAzIHBvc3NpYmlsaXRpZXMgaW4gc2VxdWVuY2U6XG4gICAgICAgICAgLy8gMS4gbGluZXMgY29udGFpbnMgYSAqc3Vic3RpdHV0aW9uKiBub3QgaW5jbHVkZWQgaW4gdGhlIHBhdGNoIGNvbnRleHQsIG9yXG4gICAgICAgICAgLy8gMi4gbGluZXMgY29udGFpbnMgYW4gKmluc2VydGlvbiogbm90IGluY2x1ZGVkIGluIHRoZSBwYXRjaCBjb250ZXh0LCBvclxuICAgICAgICAgIC8vIDMuIGxpbmVzIGNvbnRhaW5zIGEgKmRlbGV0aW9uKiBub3QgaW5jbHVkZWQgaW4gdGhlIHBhdGNoIGNvbnRleHRcbiAgICAgICAgICAvLyBUaGUgZmlyc3QgdHdvIG9wdGlvbnMgYXJlIG9mIGNvdXJzZSBvbmx5IHBvc3NpYmxlIGlmIHRoZSBsaW5lIGZyb20gbGluZXMgaXMgbm9uLW51bGwgLVxuICAgICAgICAgIC8vIGkuZS4gb25seSBvcHRpb24gMyBpcyBwb3NzaWJsZSBpZiB3ZSd2ZSBvdmVycnVuIHRoZSBlbmQgb2YgdGhlIG9sZCBmaWxlLlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBsaW5lc1t0b1Bvc10gJiYgKFxuICAgICAgICAgICAgICBhcHBseUh1bmsoXG4gICAgICAgICAgICAgICAgaHVua0xpbmVzLFxuICAgICAgICAgICAgICAgIHRvUG9zICsgMSxcbiAgICAgICAgICAgICAgICBtYXhFcnJvcnMgLSAxLFxuICAgICAgICAgICAgICAgIGh1bmtMaW5lc0kgKyAxLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdGNoZWRMaW5lcyxcbiAgICAgICAgICAgICAgICBwYXRjaGVkTGluZXNMZW5ndGggKyAxXG4gICAgICAgICAgICAgICkgfHwgYXBwbHlIdW5rKFxuICAgICAgICAgICAgICAgIGh1bmtMaW5lcyxcbiAgICAgICAgICAgICAgICB0b1BvcyArIDEsXG4gICAgICAgICAgICAgICAgbWF4RXJyb3JzIC0gMSxcbiAgICAgICAgICAgICAgICBodW5rTGluZXNJLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHBhdGNoZWRMaW5lcyxcbiAgICAgICAgICAgICAgICBwYXRjaGVkTGluZXNMZW5ndGggKyAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkgfHwgYXBwbHlIdW5rKFxuICAgICAgICAgICAgICBodW5rTGluZXMsXG4gICAgICAgICAgICAgIHRvUG9zLFxuICAgICAgICAgICAgICBtYXhFcnJvcnMgLSAxLFxuICAgICAgICAgICAgICBodW5rTGluZXNJICsgMSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIHBhdGNoZWRMaW5lcyxcbiAgICAgICAgICAgICAgcGF0Y2hlZExpbmVzTGVuZ3RoXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJlZm9yZSByZXR1cm5pbmcsIHRyaW0gYW55IHVubW9kaWZpZWQgY29udGV4dCBsaW5lcyBvZmYgdGhlIGVuZCBvZiBwYXRjaGVkTGluZXMgYW5kIHJlZHVjZVxuICAgIC8vIHRvUG9zIChhbmQgdGh1cyBvbGRMaW5lTGFzdEkpIGFjY29yZGluZ2x5LiBUaGlzIGFsbG93cyBsYXRlciBodW5rcyB0byBiZSBhcHBsaWVkIHRvIGEgcmVnaW9uXG4gICAgLy8gdGhhdCBzdGFydHMgaW4gdGhpcyBodW5rJ3MgdHJhaWxpbmcgY29udGV4dC5cbiAgICBwYXRjaGVkTGluZXNMZW5ndGggLT0gbkNvbnNlY3V0aXZlT2xkQ29udGV4dExpbmVzO1xuICAgIHRvUG9zIC09IG5Db25zZWN1dGl2ZU9sZENvbnRleHRMaW5lcztcbiAgICBwYXRjaGVkTGluZXMubGVuZ3RoID0gcGF0Y2hlZExpbmVzTGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICBwYXRjaGVkTGluZXMsXG4gICAgICBvbGRMaW5lTGFzdEk6IHRvUG9zIC0gMVxuICAgIH07XG4gIH1cblxuICBjb25zdCByZXN1bHRMaW5lcyA9IFtdO1xuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgbGV0IHByZXZIdW5rT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBodW5rc1tpXTtcbiAgICBsZXQgaHVua1Jlc3VsdDtcbiAgICBsZXQgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMgKyBmdXp6RmFjdG9yO1xuICAgIGxldCB0b1BvcztcbiAgICBmb3IgKGxldCBtYXhFcnJvcnMgPSAwOyBtYXhFcnJvcnMgPD0gZnV6ekZhY3RvcjsgbWF4RXJyb3JzKyspIHtcbiAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIHByZXZIdW5rT2Zmc2V0IC0gMTtcbiAgICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuICAgICAgZm9yICg7IHRvUG9zICE9PSB1bmRlZmluZWQ7IHRvUG9zID0gaXRlcmF0b3IoKSkge1xuICAgICAgICBodW5rUmVzdWx0ID0gYXBwbHlIdW5rKGh1bmsubGluZXMsIHRvUG9zLCBtYXhFcnJvcnMpO1xuICAgICAgICBpZiAoaHVua1Jlc3VsdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaHVua1Jlc3VsdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWh1bmtSZXN1bHQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb3B5IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZW5kIG9mIHdoZXJlIHdlIGFwcGxpZWQgdGhlIGxhc3QgaHVuayB0byB0aGUgc3RhcnQgb2YgdGhpcyBodW5rXG4gICAgZm9yIChsZXQgaSA9IG1pbkxpbmU7IGkgPCB0b1BvczsgaSsrKSB7XG4gICAgICByZXN1bHRMaW5lcy5wdXNoKGxpbmVzW2ldKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGxpbmVzIHByb2R1Y2VkIGJ5IGFwcGx5aW5nIHRoZSBodW5rOlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua1Jlc3VsdC5wYXRjaGVkTGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBodW5rUmVzdWx0LnBhdGNoZWRMaW5lc1tpXTtcbiAgICAgIHJlc3VsdExpbmVzLnB1c2gobGluZSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGxvd2VyIHRleHQgbGltaXQgdG8gZW5kIG9mIHRoZSBjdXJyZW50IGh1bmssIHNvIG5leHQgb25lcyBkb24ndCB0cnlcbiAgICAvLyB0byBmaXQgb3ZlciBhbHJlYWR5IHBhdGNoZWQgdGV4dFxuICAgIG1pbkxpbmUgPSBodW5rUmVzdWx0Lm9sZExpbmVMYXN0SSArIDE7XG5cbiAgICAvLyBOb3RlIHRoZSBvZmZzZXQgYmV0d2VlbiB3aGVyZSB0aGUgcGF0Y2ggc2FpZCB0aGUgaHVuayBzaG91bGQndmUgYXBwbGllZCBhbmQgd2hlcmUgd2VcbiAgICAvLyBhcHBsaWVkIGl0LCBzbyB3ZSBjYW4gYWRqdXN0IGZ1dHVyZSBodW5rcyBhY2NvcmRpbmdseTpcbiAgICBwcmV2SHVua09mZnNldCA9IHRvUG9zICsgMSAtIGh1bmsub2xkU3RhcnQ7XG4gIH1cblxuICAvLyBDb3B5IG92ZXIgdGhlIHJlc3Qgb2YgdGhlIGxpbmVzIGZyb20gdGhlIG9sZCB0ZXh0XG4gIGZvciAobGV0IGkgPSBtaW5MaW5lOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICByZXN1bHRMaW5lcy5wdXNoKGxpbmVzW2ldKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFB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 \ No newline at end of file diff --git a/lib/patch/create.js b/lib/patch/create.js index 1d3b4c303..9096def3e 100644 --- a/lib/patch/create.js +++ b/lib/patch/create.js @@ -4,269 +4,358 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.structuredPatch = structuredPatch; -exports.formatPatch = formatPatch; -exports.createTwoFilesPatch = createTwoFilesPatch; exports.createPatch = createPatch; - +exports.createTwoFilesPatch = createTwoFilesPatch; +exports.formatPatch = formatPatch; +exports.structuredPatch = structuredPatch; /*istanbul ignore end*/ var /*istanbul ignore start*/ _line = require("../diff/line") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - +/*istanbul ignore start*/ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _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."); } - -function _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); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _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; } - +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +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 _objectSpread(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(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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*istanbul ignore end*/ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { if (!options) { options = {}; } - + if (typeof options === 'function') { + options = { + callback: options + }; + } if (typeof options.context === 'undefined') { options.context = 4; } - - var diff = - /*istanbul ignore start*/ - (0, - /*istanbul ignore end*/ - - /*istanbul ignore start*/ - _line - /*istanbul ignore end*/ - . - /*istanbul ignore start*/ - diffLines) - /*istanbul ignore end*/ - (oldStr, newStr, options); - - if (!diff) { - return; + if (options.newlineIsToken) { + throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions'); } - - diff.push({ - value: '', - lines: [] - }); // Append an empty value to make cleanup easier - - function contextLines(lines) { - return lines.map(function (entry) { - return ' ' + entry; - }); + if (!options.callback) { + return diffLinesResultToPatch( + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _line + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + diffLines) + /*istanbul ignore end*/ + (oldStr, newStr, options)); + } else { + var + /*istanbul ignore start*/ + _options = + /*istanbul ignore end*/ + options, + /*istanbul ignore start*/ + /*istanbul ignore end*/ + _callback = _options.callback; + /*istanbul ignore start*/ + (0, + /*istanbul ignore end*/ + /*istanbul ignore start*/ + _line + /*istanbul ignore end*/ + . + /*istanbul ignore start*/ + diffLines) + /*istanbul ignore end*/ + (oldStr, newStr, + /*istanbul ignore start*/ + _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + options), {}, { + callback: function callback(diff) { + var patch = diffLinesResultToPatch(diff); + _callback(patch); + } + })); } + function diffLinesResultToPatch(diff) { + // STEP 1: Build up the patch with no "\ No newline at end of file" lines and with the arrays + // of lines containing trailing newline characters. We'll tidy up later... - var hunks = []; - var oldRangeStart = 0, + if (!diff) { + return; + } + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + var hunks = []; + var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; - - /*istanbul ignore start*/ - var _loop = function _loop( - /*istanbul ignore end*/ - i) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - /*istanbul ignore start*/ - var _curRange; - - /*istanbul ignore end*/ - // If we have previous context, start with that - if (!oldRangeStart) { - var prev = diff[i - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; + /*istanbul ignore start*/ + var _loop = function _loop() + /*istanbul ignore end*/ + { + var current = diff[i], + lines = current.lines || splitLines(current.value); + current.lines = lines; + if (current.added || current.removed) { + /*istanbul ignore start*/ + var _curRange; + /*istanbul ignore end*/ + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } } - } // Output our changes - - - /*istanbul ignore start*/ - - /*istanbul ignore end*/ - - /*istanbul ignore start*/ - (_curRange = - /*istanbul ignore end*/ - curRange).push.apply( - /*istanbul ignore start*/ - _curRange - /*istanbul ignore end*/ - , - /*istanbul ignore start*/ - _toConsumableArray( - /*istanbul ignore end*/ - lines.map(function (entry) { - return (current.added ? '+' : '-') + entry; - }))); // Track the updated file position - - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - // Identical context lines. Track line changes - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= options.context * 2 && i < diff.length - 2) { - /*istanbul ignore start*/ - var _curRange2; - - /*istanbul ignore end*/ - // Overlapping - - /*istanbul ignore start*/ - - /*istanbul ignore end*/ - - /*istanbul ignore start*/ - (_curRange2 = - /*istanbul ignore end*/ - curRange).push.apply( - /*istanbul ignore start*/ - _curRange2 - /*istanbul ignore end*/ - , - /*istanbul ignore start*/ - _toConsumableArray( - /*istanbul ignore end*/ - contextLines(lines))); + // Output our changes + /*istanbul ignore start*/ + /*istanbul ignore end*/ + /*istanbul ignore start*/ + (_curRange = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); + + // Track the updated file position + if (current.added) { + newLine += lines.length; } else { - /*istanbul ignore start*/ - var _curRange3; - - /*istanbul ignore end*/ - // end the range and output - var contextSize = Math.min(lines.length, options.context); - - /*istanbul ignore start*/ - - /*istanbul ignore end*/ - - /*istanbul ignore start*/ - (_curRange3 = - /*istanbul ignore end*/ - curRange).push.apply( - /*istanbul ignore start*/ - _curRange3 - /*istanbul ignore end*/ - , - /*istanbul ignore start*/ - _toConsumableArray( - /*istanbul ignore end*/ - contextLines(lines.slice(0, contextSize)))); - - var hunk = { - oldStart: oldRangeStart, - oldLines: oldLine - oldRangeStart + contextSize, - newStart: newRangeStart, - newLines: newLine - newRangeStart + contextSize, - lines: curRange - }; - - if (i >= diff.length - 2 && lines.length <= options.context) { - // EOF is inside this hunk - var oldEOFNewline = /\n$/.test(oldStr); - var newEOFNewline = /\n$/.test(newStr); - var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; - - if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) { - // special case: old has no eol and no trailing context; no-nl can end up before adds - // however, if the old file is empty, do not output the no-nl line - curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); - } - - if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { - curRange.push('\\ No newline at end of file'); - } + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + /*istanbul ignore start*/ + var _curRange2; + /*istanbul ignore end*/ + // Overlapping + /*istanbul ignore start*/ + /*istanbul ignore end*/ + /*istanbul ignore start*/ + (_curRange2 = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange2 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + contextLines(lines))); + } else { + /*istanbul ignore start*/ + var _curRange3; + /*istanbul ignore end*/ + // end the range and output + var contextSize = Math.min(lines.length, options.context); + /*istanbul ignore start*/ + /*istanbul ignore end*/ + /*istanbul ignore start*/ + (_curRange3 = + /*istanbul ignore end*/ + curRange).push.apply( + /*istanbul ignore start*/ + _curRange3 + /*istanbul ignore end*/ + , + /*istanbul ignore start*/ + _toConsumableArray( + /*istanbul ignore end*/ + contextLines(lines.slice(0, contextSize)))); + var _hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + hunks.push(_hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; } - - hunks.push(hunk); - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; } + oldLine += lines.length; + newLine += lines.length; } - - oldLine += lines.length; - newLine += lines.length; + }; + for (var i = 0; i < diff.length; i++) + /*istanbul ignore start*/ + { + _loop(); } - }; - for (var i = 0; i < diff.length; i++) { + // Step 2: eliminate the trailing `\n` from each line of each hunk, and, where needed, add + // "\ No newline at end of file". + /*istanbul ignore end*/ + for ( + /*istanbul ignore start*/ + var _i = 0, _hunks = + /*istanbul ignore end*/ + hunks; /*istanbul ignore start*/ - _loop( + _i < _hunks.length /*istanbul ignore end*/ - i); + ; + /*istanbul ignore start*/ + _i++ + /*istanbul ignore end*/ + ) { + var hunk = + /*istanbul ignore start*/ + _hunks[_i] + /*istanbul ignore end*/ + ; + for (var _i2 = 0; _i2 < hunk.lines.length; _i2++) { + if (hunk.lines[_i2].endsWith('\n')) { + hunk.lines[_i2] = hunk.lines[_i2].slice(0, -1); + } else { + hunk.lines.splice(_i2 + 1, 0, '\\ No newline at end of file'); + _i2++; // Skip the line we just added, then continue iterating + } + } + } + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; } - - return { - oldFileName: oldFileName, - newFileName: newFileName, - oldHeader: oldHeader, - newHeader: newHeader, - hunks: hunks - }; } - function formatPatch(diff) { + if (Array.isArray(diff)) { + return diff.map(formatPatch).join('\n'); + } var ret = []; - if (diff.oldFileName == diff.newFileName) { ret.push('Index: ' + diff.oldFileName); } - ret.push('==================================================================='); ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); - for (var i = 0; i < diff.hunks.length; i++) { - var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0, + var hunk = diff.hunks[i]; + // Unified Diff Format quirk: If the chunk size is 0, // the first number is one lower than one would expect. // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 - if (hunk.oldLines === 0) { hunk.oldStart -= 1; } - if (hunk.newLines === 0) { hunk.newStart -= 1; } - ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); ret.push.apply(ret, hunk.lines); } - return ret.join('\n') + '\n'; } - function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { - return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)); + /*istanbul ignore start*/ + var _options2; + /*istanbul ignore end*/ + if (typeof options === 'function') { + options = { + callback: options + }; + } + if (! + /*istanbul ignore start*/ + ((_options2 = + /*istanbul ignore end*/ + options) !== null && _options2 !== void 0 && + /*istanbul ignore start*/ + _options2 + /*istanbul ignore end*/ + .callback)) { + var patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options); + if (!patchObj) { + return; + } + return formatPatch(patchObj); + } else { + var + /*istanbul ignore start*/ + _options3 = + /*istanbul ignore end*/ + options, + /*istanbul ignore start*/ + /*istanbul ignore end*/ + _callback2 = _options3.callback; + structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, + /*istanbul ignore start*/ + _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + options), {}, { + callback: function callback(patchObj) { + if (!patchObj) { + _callback2(); + } else { + _callback2(formatPatch(patchObj)); + } + } + })); + } } - function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsInJldCIsImFwcGx5Iiwiam9pbiIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtBQTJCLFdBQS9CLEVBQTRDO0FB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IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ== + +/** + * Split `text` into an array of lines, including the trailing newline character (where present) + */ +function splitLines(text) { + var hasTrailingNl = text.endsWith('\n'); + var result = text.split('\n').map(function (line) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + line + '\n' + ); + }); + if (hasTrailingNl) { + result.pop(); + } else { + result.push(result.pop().slice(0, -1)); + } + return result; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGluZSIsInJlcXVpcmUiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsImEiLCJfYXJyYXlMaWtlVG9BcnJheSIsInQiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXNBcnJheSIsImxlbmd0aCIsImUiLCJuIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImNvbnRleHQiLCJuZXdsaW5lSXNUb2tlbiIsIkVycm9yIiwiZGlmZkxpbmVzUmVzdWx0VG9QYXRjaCIsImRpZmZMaW5lcyIsIl9vcHRpb25zIiwiZGlmZiIsInBhdGNoIiwibGluZXMiLCJjb250ZXh0TGluZXMiLCJtYXAiLCJlbnRyeSIsImh1bmtzIiwib2xkUmFuZ2VTdGFydCIsIm5ld1JhbmdlU3RhcnQiLCJjdXJSYW5nZSIsIm9sZExpbmUiLCJuZXdMaW5lIiwiX2xvb3AiLCJjdXJyZW50Iiwic3BsaXRMaW5lcyIsImFkZGVkIiwicmVtb3ZlZCIsIl9jdXJSYW5nZSIsInByZXYiLCJfY3VyUmFuZ2UyIiwiX2N1clJhbmdlMyIsImNvbnRleHRTaXplIiwiTWF0aCIsIm1pbiIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsIl9pIiwiX2h1bmtzIiwiZW5kc1dpdGgiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsImpvaW4iLCJyZXQiLCJjcmVhdGVUd29GaWxlc1BhdGNoIiwiX29wdGlvbnMyIiwicGF0Y2hPYmoiLCJfb3B0aW9uczMiLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIiwidGV4dCIsImhhc1RyYWlsaW5nTmwiLCJyZXN1bHQiLCJzcGxpdCIsImxpbmUiLCJwb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcGF0Y2gvY3JlYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlmZkxpbmVzfSBmcm9tICcuLi9kaWZmL2xpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zID0ge2NhbGxiYWNrOiBvcHRpb25zfTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvcHRpb25zLmNvbnRleHQgPSA0O1xuICB9XG4gIGlmIChvcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCduZXdsaW5lSXNUb2tlbiBtYXkgbm90IGJlIHVzZWQgd2l0aCBwYXRjaC1nZW5lcmF0aW9uIGZ1bmN0aW9ucywgb25seSB3aXRoIGRpZmZpbmcgZnVuY3Rpb25zJyk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMuY2FsbGJhY2spIHtcbiAgICByZXR1cm4gZGlmZkxpbmVzUmVzdWx0VG9QYXRjaChkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7Y2FsbGJhY2t9ID0gb3B0aW9ucztcbiAgICBkaWZmTGluZXMoXG4gICAgICBvbGRTdHIsXG4gICAgICBuZXdTdHIsXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGNhbGxiYWNrOiAoZGlmZikgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhdGNoID0gZGlmZkxpbmVzUmVzdWx0VG9QYXRjaChkaWZmKTtcbiAgICAgICAgICBjYWxsYmFjayhwYXRjaCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlmZkxpbmVzUmVzdWx0VG9QYXRjaChkaWZmKSB7XG4gICAgLy8gU1RFUCAxOiBCdWlsZCB1cCB0aGUgcGF0Y2ggd2l0aCBubyBcIlxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcIiBsaW5lcyBhbmQgd2l0aCB0aGUgYXJyYXlzXG4gICAgLy8gICAgICAgICBvZiBsaW5lcyBjb250YWluaW5nIHRyYWlsaW5nIG5ld2xpbmUgY2hhcmFjdGVycy4gV2UnbGwgdGlkeSB1cCBsYXRlci4uLlxuXG4gICAgaWYoIWRpZmYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgICBmdW5jdGlvbiBjb250ZXh0TGluZXMobGluZXMpIHtcbiAgICAgIHJldHVybiBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuICcgJyArIGVudHJ5OyB9KTtcbiAgICB9XG5cbiAgICBsZXQgaHVua3MgPSBbXTtcbiAgICBsZXQgb2xkUmFuZ2VTdGFydCA9IDAsIG5ld1JhbmdlU3RhcnQgPSAwLCBjdXJSYW5nZSA9IFtdLFxuICAgICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZGlmZltpXSxcbiAgICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBzcGxpdExpbmVzKGN1cnJlbnQudmFsdWUpO1xuICAgICAgY3VycmVudC5saW5lcyA9IGxpbmVzO1xuXG4gICAgICBpZiAoY3VycmVudC5hZGRlZCB8fCBjdXJyZW50LnJlbW92ZWQpIHtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgICAgaWYgKCFvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgICAgY29uc3QgcHJldiA9IGRpZmZbaSAtIDFdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSBuZXdMaW5lO1xuXG4gICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgICAgICBuZXdSYW5nZVN0YXJ0IC09IGN1clJhbmdlLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdXRwdXQgb3VyIGNoYW5nZXNcbiAgICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgICAgcmV0dXJuIChjdXJyZW50LmFkZGVkID8gJysnIDogJy0nKSArIGVudHJ5O1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgICBpZiAoY3VycmVudC5hZGRlZCkge1xuICAgICAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZGVudGljYWwgY29udGV4dCBsaW5lcy4gVHJhY2sgbGluZSBjaGFuZ2VzXG4gICAgICAgIGlmIChvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgICBpZiAobGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCAqIDIgJiYgaSA8IGRpZmYubGVuZ3RoIC0gMikge1xuICAgICAgICAgICAgLy8gT3ZlcmxhcHBpbmdcbiAgICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlbmQgdGhlIHJhbmdlIGFuZCBvdXRwdXRcbiAgICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcy5zbGljZSgwLCBjb250ZXh0U2l6ZSkpKTtcblxuICAgICAgICAgICAgbGV0IGh1bmsgPSB7XG4gICAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgICBvbGRMaW5lczogKG9sZExpbmUgLSBvbGRSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgICBuZXdTdGFydDogbmV3UmFuZ2VTdGFydCxcbiAgICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgICAgbGluZXM6IGN1clJhbmdlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgICAgb2xkUmFuZ2VTdGFydCA9IDA7XG4gICAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdGVwIDI6IGVsaW1pbmF0ZSB0aGUgdHJhaWxpbmcgYFxcbmAgZnJvbSBlYWNoIGxpbmUgb2YgZWFjaCBodW5rLCBhbmQsIHdoZXJlIG5lZWRlZCwgYWRkXG4gICAgLy8gICAgICAgICBcIlxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcIi5cbiAgICBmb3IgKGNvbnN0IGh1bmsgb2YgaHVua3MpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHVuay5saW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaHVuay5saW5lc1tpXS5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgICAgICBodW5rLmxpbmVzW2ldID0gaHVuay5saW5lc1tpXS5zbGljZSgwLCAtMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaHVuay5saW5lcy5zcGxpY2UoaSArIDEsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICBpKys7IC8vIFNraXAgdGhlIGxpbmUgd2UganVzdCBhZGRlZCwgdGhlbiBjb250aW51ZSBpdGVyYXRpbmdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICAgIG9sZEhlYWRlcjogb2xkSGVhZGVyLCBuZXdIZWFkZXI6IG5ld0hlYWRlcixcbiAgICAgIGh1bmtzOiBodW5rc1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBhdGNoKGRpZmYpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlmZikpIHtcbiAgICByZXR1cm4gZGlmZi5tYXAoZm9ybWF0UGF0Y2gpLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgY29uc3QgcmV0ID0gW107XG4gIGlmIChkaWZmLm9sZEZpbGVOYW1lID09IGRpZmYubmV3RmlsZU5hbWUpIHtcbiAgICByZXQucHVzaCgnSW5kZXg6ICcgKyBkaWZmLm9sZEZpbGVOYW1lKTtcbiAgfVxuICByZXQucHVzaCgnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xuICByZXQucHVzaCgnLS0tICcgKyBkaWZmLm9sZEZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm9sZEhlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5vbGRIZWFkZXIpKTtcbiAgcmV0LnB1c2goJysrKyAnICsgZGlmZi5uZXdGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5uZXdIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYubmV3SGVhZGVyKSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaHVuayA9IGRpZmYuaHVua3NbaV07XG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgLT0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgLT0gMTtcbiAgICB9XG4gICAgcmV0LnB1c2goXG4gICAgICAnQEAgLScgKyBodW5rLm9sZFN0YXJ0ICsgJywnICsgaHVuay5vbGRMaW5lc1xuICAgICAgKyAnICsnICsgaHVuay5uZXdTdGFydCArICcsJyArIGh1bmsubmV3TGluZXNcbiAgICAgICsgJyBAQCdcbiAgICApO1xuICAgIHJldC5wdXNoLmFwcGx5KHJldCwgaHVuay5saW5lcyk7XG4gIH1cblxuICByZXR1cm4gcmV0LmpvaW4oJ1xcbicpICsgJ1xcbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUd29GaWxlc1BhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMgPSB7Y2FsbGJhY2s6IG9wdGlvbnN9O1xuICB9XG5cbiAgaWYgKCFvcHRpb25zPy5jYWxsYmFjaykge1xuICAgIGNvbnN0IHBhdGNoT2JqID0gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbiAgICBpZiAoIXBhdGNoT2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXRQYXRjaChwYXRjaE9iaik7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qge2NhbGxiYWNrfSA9IG9wdGlvbnM7XG4gICAgc3RydWN0dXJlZFBhdGNoKFxuICAgICAgb2xkRmlsZU5hbWUsXG4gICAgICBuZXdGaWxlTmFtZSxcbiAgICAgIG9sZFN0cixcbiAgICAgIG5ld1N0cixcbiAgICAgIG9sZEhlYWRlcixcbiAgICAgIG5ld0hlYWRlcixcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgY2FsbGJhY2s6IHBhdGNoT2JqID0+IHtcbiAgICAgICAgICBpZiAoIXBhdGNoT2JqKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayhmb3JtYXRQYXRjaChwYXRjaE9iaikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFNwbGl0IGB0ZXh0YCBpbnRvIGFuIGFycmF5IG9mIGxpbmVzLCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIG5ld2xpbmUgY2hhcmFjdGVyICh3aGVyZSBwcmVzZW50KVxuICovXG5mdW5jdGlvbiBzcGxpdExpbmVzKHRleHQpIHtcbiAgY29uc3QgaGFzVHJhaWxpbmdObCA9IHRleHQuZW5kc1dpdGgoJ1xcbicpO1xuICBjb25zdCByZXN1bHQgPSB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAobGluZSA9PiBsaW5lICsgJ1xcbicpO1xuICBpZiAoaGFzVHJhaWxpbmdObCkge1xuICAgIHJlc3VsdC5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucHVzaChyZXN1bHQucG9wKCkuc2xpY2UoMCwgLTEpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQUE7QUFBQTtBQUF1QyxtQ0FBQUMsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxtQkFBQUMsQ0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxDQUFBLEtBQUFFLGdCQUFBLENBQUFGLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsQ0FBQSxLQUFBSSxrQkFBQTtBQUFBLFNBQUFBLG1CQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBRiw0QkFBQUgsQ0FBQSxFQUFBTSxDQUFBLFFBQUFOLENBQUEsMkJBQUFBLENBQUEsU0FBQU8saUJBQUEsQ0FBQVAsQ0FBQSxFQUFBTSxDQUFBLE9BQUFFLENBQUEsTUFBQUMsUUFBQSxDQUFBQyxJQUFBLENBQUFWLENBQUEsRUFBQVcsS0FBQSw2QkFBQUgsQ0FBQSxJQUFBUixDQUFBLENBQUFILFdBQUEsS0FBQVcsQ0FBQSxHQUFBUixDQUFBLENBQUFILFdBQUEsQ0FBQWUsSUFBQSxhQUFBSixDQUFBLGNBQUFBLENBQUEsR0FBQUssS0FBQSxDQUFBQyxJQUFBLENBQUFkLENBQUEsb0JBQUFRLENBQUEsK0NBQUFPLElBQUEsQ0FBQVAsQ0FBQSxJQUFBRCxpQkFBQSxDQUFBUCxDQUFBLEVBQUFNLENBQUE7QUFBQSxTQUFBSixpQkFB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QUM7RUFDOUIsQ0FBQyxNQUFNO0lBQ0w7TUFBQTtNQUFBQyxTQUFBO01BQUE7TUFBbUIvQyxPQUFPO01BQUE7TUFBQTtNQUFuQkMsVUFBUSxHQUFBOEMsU0FBQSxDQUFSOUMsUUFBUTtJQUNmUixlQUFlLENBQ2JDLFdBQVcsRUFDWEMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxTQUFTO0lBQUE7SUFBQXRCLGFBQUEsQ0FBQUEsYUFBQTtJQUFBO0lBRUp1QixPQUFPO01BQ1ZDLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFFNkMsUUFBUSxFQUFJO1FBQ3BCLElBQUksQ0FBQ0EsUUFBUSxFQUFFO1VBQ2I3QyxVQUFRLENBQUMsQ0FBQztRQUNaLENBQUMsTUFBTTtVQUNMQSxVQUFRLENBQUN3QyxXQUFXLENBQUNLLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDO01BQ0Y7SUFBQyxFQUVMLENBQUM7RUFDSDtBQUNGO0FBRU8sU0FBU0UsV0FBV0EsQ0FBQ0MsUUFBUSxFQUFFckQsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUU7RUFDbkYsT0FBTzRDLG1CQUFtQixDQUFDSyxRQUFRLEVBQUVBLFFBQVEsRUFBRXJELE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxDQUFDO0FBQy9GOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNzQixVQUFVQSxDQUFDNEIsSUFBSSxFQUFFO0VBQ3hCLElBQU1DLGFBQWEsR0FBR0QsSUFBSSxDQUFDWCxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3pDLElBQU1hLE1BQU0sR0FBR0YsSUFBSSxDQUFDRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUN6QyxHQUFHLENBQUMsVUFBQTBDLElBQUk7RUFBQTtFQUFBO0lBQUE7TUFBQTtNQUFJQSxJQUFJLEdBQUc7SUFBSTtFQUFBLEVBQUM7RUFDeEQsSUFBSUgsYUFBYSxFQUFFO0lBQ2pCQyxNQUFNLENBQUNHLEdBQUcsQ0FBQyxDQUFDO0VBQ2QsQ0FBQyxNQUFNO0lBQ0xILE1BQU0sQ0FBQzdFLElBQUksQ0FBQzZFLE1BQU0sQ0FBQ0csR0FBRyxDQUFDLENBQUMsQ0FBQ2hHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN4QztFQUNBLE9BQU82RixNQUFNO0FBQ2YiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/lib/patch/line-endings.js b/lib/patch/line-endings.js new file mode 100644 index 000000000..9313ee716 --- /dev/null +++ b/lib/patch/line-endings.js @@ -0,0 +1,176 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isUnix = isUnix; +exports.isWin = isWin; +exports.unixToWin = unixToWin; +exports.winToUnix = winToUnix; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +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 _objectSpread(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(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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/*istanbul ignore end*/ +function unixToWin(patch) { + if (Array.isArray(patch)) { + return patch.map(unixToWin); + } + return ( + /*istanbul ignore start*/ + _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + patch), {}, { + hunks: patch.hunks.map(function (hunk) + /*istanbul ignore start*/ + { + return _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + hunk), {}, { + lines: hunk.lines.map(function (line, i) + /*istanbul ignore start*/ + { + var _hunk$lines; + return ( + /*istanbul ignore end*/ + line.startsWith('\\') || line.endsWith('\r') || + /*istanbul ignore start*/ + (_hunk$lines = + /*istanbul ignore end*/ + hunk.lines[i + 1]) !== null && _hunk$lines !== void 0 && + /*istanbul ignore start*/ + _hunk$lines + /*istanbul ignore end*/ + .startsWith('\\') ? line : line + '\r' + ); + }) + }); + }) + }) + ); +} +function winToUnix(patch) { + if (Array.isArray(patch)) { + return patch.map(winToUnix); + } + return ( + /*istanbul ignore start*/ + _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + patch), {}, { + hunks: patch.hunks.map(function (hunk) + /*istanbul ignore start*/ + { + return _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + hunk), {}, { + lines: hunk.lines.map(function (line) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + line.endsWith('\r') ? line.substring(0, line.length - 1) : line + ); + }) + }); + }) + }) + ); +} + +/** + * Returns true if the patch consistently uses Unix line endings (or only involves one line and has + * no line endings). + */ +function isUnix(patch) { + if (!Array.isArray(patch)) { + patch = [patch]; + } + return !patch.some(function (index) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + index.hunks.some(function (hunk) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + hunk.lines.some(function (line) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + !line.startsWith('\\') && line.endsWith('\r') + ); + }) + ); + }) + ); + }); +} + +/** + * Returns true if the patch uses Windows line endings and only Windows line endings. + */ +function isWin(patch) { + if (!Array.isArray(patch)) { + patch = [patch]; + } + return patch.some(function (index) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + index.hunks.some(function (hunk) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + hunk.lines.some(function (line) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + line.endsWith('\r') + ); + }) + ); + }) + ); + }) && patch.every(function (index) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + index.hunks.every(function (hunk) + /*istanbul ignore start*/ + { + return ( + /*istanbul ignore end*/ + hunk.lines.every(function (line, i) + /*istanbul ignore start*/ + { + var _hunk$lines2; + return ( + /*istanbul ignore end*/ + line.startsWith('\\') || line.endsWith('\r') || + /*istanbul ignore start*/ + ((_hunk$lines2 = + /*istanbul ignore end*/ + hunk.lines[i + 1]) === null || _hunk$lines2 === void 0 ? void 0 : + /*istanbul ignore start*/ + _hunk$lines2 + /*istanbul ignore end*/ + .startsWith('\\')) + ); + }) + ); + }) + ); + }); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1bml4VG9XaW4iLCJwYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIl9vYmplY3RTcHJlYWQiLCJodW5rcyIsImh1bmsiLCJsaW5lcyIsImxpbmUiLCJpIiwiX2h1bmskbGluZXMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJ3aW5Ub1VuaXgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJpc1VuaXgiLCJzb21lIiwiaW5kZXgiLCJpc1dpbiIsImV2ZXJ5IiwiX2h1bmskbGluZXMyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhdGNoL2xpbmUtZW5kaW5ncy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdW5peFRvV2luKHBhdGNoKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdGNoKSkge1xuICAgIHJldHVybiBwYXRjaC5tYXAodW5peFRvV2luKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ucGF0Y2gsXG4gICAgaHVua3M6IHBhdGNoLmh1bmtzLm1hcChodW5rID0+ICh7XG4gICAgICAuLi5odW5rLFxuICAgICAgbGluZXM6IGh1bmsubGluZXMubWFwKFxuICAgICAgICAobGluZSwgaSkgPT5cbiAgICAgICAgICAobGluZS5zdGFydHNXaXRoKCdcXFxcJykgfHwgbGluZS5lbmRzV2l0aCgnXFxyJykgfHwgaHVuay5saW5lc1tpICsgMV0/LnN0YXJ0c1dpdGgoJ1xcXFwnKSlcbiAgICAgICAgICAgID8gbGluZVxuICAgICAgICAgICAgOiBsaW5lICsgJ1xccidcbiAgICAgIClcbiAgICB9KSlcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpblRvVW5peChwYXRjaCkge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXRjaCkpIHtcbiAgICByZXR1cm4gcGF0Y2gubWFwKHdpblRvVW5peCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnBhdGNoLFxuICAgIGh1bmtzOiBwYXRjaC5odW5rcy5tYXAoaHVuayA9PiAoe1xuICAgICAgLi4uaHVuayxcbiAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsaW5lID0+IGxpbmUuZW5kc1dpdGgoJ1xccicpID8gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGggLSAxKSA6IGxpbmUpXG4gICAgfSkpXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXRjaCBjb25zaXN0ZW50bHkgdXNlcyBVbml4IGxpbmUgZW5kaW5ncyAob3Igb25seSBpbnZvbHZlcyBvbmUgbGluZSBhbmQgaGFzXG4gKiBubyBsaW5lIGVuZGluZ3MpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNVbml4KHBhdGNoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShwYXRjaCkpIHsgcGF0Y2ggPSBbcGF0Y2hdOyB9XG4gIHJldHVybiAhcGF0Y2guc29tZShcbiAgICBpbmRleCA9PiBpbmRleC5odW5rcy5zb21lKFxuICAgICAgaHVuayA9PiBodW5rLmxpbmVzLnNvbWUoXG4gICAgICAgIGxpbmUgPT4gIWxpbmUuc3RhcnRzV2l0aCgnXFxcXCcpICYmIGxpbmUuZW5kc1dpdGgoJ1xccicpXG4gICAgICApXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0Y2ggdXNlcyBXaW5kb3dzIGxpbmUgZW5kaW5ncyBhbmQgb25seSBXaW5kb3dzIGxpbmUgZW5kaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2luKHBhdGNoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShwYXRjaCkpIHsgcGF0Y2ggPSBbcGF0Y2hdOyB9XG4gIHJldHVybiBwYXRjaC5zb21lKGluZGV4ID0+IGluZGV4Lmh1bmtzLnNvbWUoaHVuayA9PiBodW5rLmxpbmVzLnNvbWUobGluZSA9PiBsaW5lLmVuZHNXaXRoKCdcXHInKSkpKVxuICAgICYmIHBhdGNoLmV2ZXJ5KFxuICAgICAgaW5kZXggPT4gaW5kZXguaHVua3MuZXZlcnkoXG4gICAgICAgIGh1bmsgPT4gaHVuay5saW5lcy5ldmVyeShcbiAgICAgICAgICAobGluZSwgaSkgPT4gbGluZS5zdGFydHNXaXRoKCdcXFxcJykgfHwgbGluZS5lbmRzV2l0aCgnXFxyJykgfHwgaHVuay5saW5lc1tpICsgMV0/LnN0YXJ0c1dpdGgoJ1xcXFwnKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxTQUFTQSxDQUFDQyxLQUFLLEVBQUU7RUFDL0IsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEtBQUssQ0FBQ0csR0FBRyxDQUFDSixTQUFTLENBQUM7RUFDN0I7RUFFQTtJQUFBO0lBQUFLLGFBQUEsQ0FBQUEsYUFBQTtJQUFBO0lBQ0tKLEtBQUs7TUFDUkssS0FBSyxFQUFFTCxLQUFLLENBQUNLLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLFVBQUFHLElBQUk7TUFBQTtNQUFBO1FBQUEsT0FBQUYsYUFBQSxDQUFBQSxhQUFBO1FBQUE7UUFDdEJFLElBQUk7VUFDUEMsS0FBSyxFQUFFRCxJQUFJLENBQUNDLEtBQUssQ0FBQ0osR0FBRyxDQUNuQixVQUFDSyxJQUFJLEVBQUVDLENBQUM7VUFBQTtVQUFBO1lBQUEsSUFBQUMsV0FBQTtZQUFBO2NBQUE7Y0FDTEYsSUFBSSxDQUFDRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUlILElBQUksQ0FBQ0ksUUFBUSxDQUFDLElBQUksQ0FBQztjQUFBO2NBQUEsQ0FBQUYsV0FBQTtjQUFBO2NBQUlKLElBQUksQ0FBQ0MsS0FBSyxDQUFDRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQUFDLFdBQUE7Y0FBakI7Y0FBQUE7Y0FBQTtjQUFBLENBQW1CQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQ2hGSCxJQUFJLEdBQ0pBLElBQUksR0FBRztZQUFJO1VBQUEsQ0FDbkI7UUFBQztNQUFBLENBQ0Q7SUFBQztFQUFBO0FBRVA7QUFFTyxTQUFTSyxTQUFTQSxDQUFDYixLQUFL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 \ No newline at end of file diff --git a/lib/patch/merge.js b/lib/patch/merge.js index b46faaaba..113ace7c8 100644 --- a/lib/patch/merge.js +++ b/lib/patch/merge.js @@ -6,71 +6,63 @@ Object.defineProperty(exports, "__esModule", { }); exports.calcLineCount = calcLineCount; exports.merge = merge; - /*istanbul ignore end*/ var /*istanbul ignore start*/ _create = require("./create") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _parse = require("./parse") /*istanbul ignore end*/ ; - var /*istanbul ignore start*/ _array = require("../util/array") /*istanbul ignore end*/ ; - -/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - +/*istanbul ignore start*/ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _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."); } - -function _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); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _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; } - +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } +function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /*istanbul ignore end*/ function calcLineCount(hunk) { - /*istanbul ignore start*/ - var _calcOldNewLineCount = - /*istanbul ignore end*/ - calcOldNewLineCount(hunk.lines), - oldLines = _calcOldNewLineCount.oldLines, - newLines = _calcOldNewLineCount.newLines; - + var + /*istanbul ignore start*/ + _calcOldNewLineCount = + /*istanbul ignore end*/ + calcOldNewLineCount(hunk.lines), + /*istanbul ignore start*/ + /*istanbul ignore end*/ + oldLines = _calcOldNewLineCount.oldLines, + /*istanbul ignore start*/ + /*istanbul ignore end*/ + newLines = _calcOldNewLineCount.newLines; if (oldLines !== undefined) { hunk.oldLines = oldLines; } else { delete hunk.oldLines; } - if (newLines !== undefined) { hunk.newLines = newLines; } else { delete hunk.newLines; } } - function merge(mine, theirs, base) { mine = loadPatch(mine, base); theirs = loadPatch(theirs, base); - var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + var ret = {}; + + // For index we just let it pass through as it doesn't have any necessary meaning. // Leaving sanity checks on this to the API consumer that may know more about the // meaning in their own context. - if (mine.index || theirs.index) { ret.index = mine.index || theirs.index; } - if (mine.newFileName || theirs.newFileName) { if (!fileNameChanged(mine)) { // No header or no change in ours, use theirs (and ours if theirs does not exist) @@ -92,21 +84,18 @@ function merge(mine, theirs, base) { ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); } } - ret.hunks = []; var mineIndex = 0, - theirsIndex = 0, - mineOffset = 0, - theirsOffset = 0; - + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { var mineCurrent = mine.hunks[mineIndex] || { - oldStart: Infinity - }, - theirsCurrent = theirs.hunks[theirsIndex] || { - oldStart: Infinity - }; - + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; if (hunkBefore(mineCurrent, theirsCurrent)) { // This patch does not overlap with any of the others, yay. ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); @@ -132,10 +121,8 @@ function merge(mine, theirs, base) { ret.hunks.push(mergedHunk); } } - return ret; } - function loadPatch(param, base) { if (typeof param === 'string') { if (/^@@/m.test(param) || /^Index:/m.test(param)) { @@ -143,7 +130,6 @@ function loadPatch(param, base) { /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _parse /*istanbul ignore end*/ @@ -154,16 +140,13 @@ function loadPatch(param, base) { (param)[0] ); } - if (!base) { throw new Error('Must provide a base reference or pass in a patch'); } - return ( /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _create /*istanbul ignore end*/ @@ -174,14 +157,11 @@ function loadPatch(param, base) { (undefined, undefined, base, param) ); } - return param; } - function fileNameChanged(patch) { return patch.newFileName && patch.newFileName !== patch.oldFileName; } - function selectField(index, mine, theirs) { if (mine === theirs) { return mine; @@ -193,11 +173,9 @@ function selectField(index, mine, theirs) { }; } } - function hunkBefore(test, check) { return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; } - function cloneHunk(hunk, offset) { return { oldStart: hunk.oldStart, @@ -207,42 +185,38 @@ function cloneHunk(hunk, offset) { lines: hunk.lines }; } - function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { // This will generally result in a conflicted hunk, but there are cases where the context // is the only overlap where we can successfully merge the content here. var mine = { - offset: mineOffset, - lines: mineLines, - index: 0 - }, - their = { - offset: theirOffset, - lines: theirLines, - index: 0 - }; // Handle any leading content + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; + // Handle any leading content insertLeading(hunk, mine, their); - insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + insertLeading(hunk, their, mine); + // Now in the overlap content. Scan through and select the best changes from each. while (mine.index < mine.lines.length && their.index < their.lines.length) { var mineCurrent = mine.lines[mine.index], - theirCurrent = their.lines[their.index]; - + theirCurrent = their.lines[their.index]; if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { // Both modified ... mutualChange(hunk, mine, their); } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { /*istanbul ignore start*/ var _hunk$lines; - /*istanbul ignore end*/ // Mine inserted - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines = /*istanbul ignore end*/ @@ -258,14 +232,10 @@ function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { /*istanbul ignore start*/ var _hunk$lines2; - /*istanbul ignore end*/ // Theirs inserted - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines2 = /*istanbul ignore end*/ @@ -293,25 +263,22 @@ function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { // Context mismatch conflict(hunk, collectChange(mine), collectChange(their)); } - } // Now push anything that may be remaining - + } + // Now push anything that may be remaining insertTrailing(hunk, mine); insertTrailing(hunk, their); calcLineCount(hunk); } - function mutualChange(hunk, mine, their) { var myChanges = collectChange(mine), - theirChanges = collectChange(their); - + theirChanges = collectChange(their); if (allRemoves(myChanges) && allRemoves(theirChanges)) { // Special case for remove changes that are supersets of one another if ( /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _array /*istanbul ignore end*/ @@ -322,13 +289,9 @@ function mutualChange(hunk, mine, their) { (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { /*istanbul ignore start*/ var _hunk$lines3; - /*istanbul ignore end*/ - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines3 = /*istanbul ignore end*/ @@ -341,13 +304,11 @@ function mutualChange(hunk, mine, their) { _toConsumableArray( /*istanbul ignore end*/ myChanges)); - return; } else if ( /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _array /*istanbul ignore end*/ @@ -358,13 +319,9 @@ function mutualChange(hunk, mine, their) { (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { /*istanbul ignore start*/ var _hunk$lines4; - /*istanbul ignore end*/ - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines4 = /*istanbul ignore end*/ @@ -377,14 +334,12 @@ function mutualChange(hunk, mine, their) { _toConsumableArray( /*istanbul ignore end*/ theirChanges)); - return; } } else if ( /*istanbul ignore start*/ (0, /*istanbul ignore end*/ - /*istanbul ignore start*/ _array /*istanbul ignore end*/ @@ -395,13 +350,9 @@ function mutualChange(hunk, mine, their) { (myChanges, theirChanges)) { /*istanbul ignore start*/ var _hunk$lines5; - /*istanbul ignore end*/ - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines5 = /*istanbul ignore end*/ @@ -414,27 +365,19 @@ function mutualChange(hunk, mine, their) { _toConsumableArray( /*istanbul ignore end*/ myChanges)); - return; } - conflict(hunk, myChanges, theirChanges); } - function removal(hunk, mine, their, swap) { var myChanges = collectChange(mine), - theirChanges = collectContext(their, myChanges); - + theirChanges = collectContext(their, myChanges); if (theirChanges.merged) { /*istanbul ignore start*/ var _hunk$lines6; - /*istanbul ignore end*/ - /*istanbul ignore start*/ - /*istanbul ignore end*/ - /*istanbul ignore start*/ (_hunk$lines6 = /*istanbul ignore end*/ @@ -451,7 +394,6 @@ function removal(hunk, mine, their, swap) { conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); } } - function conflict(hunk, mine, their) { hunk.conflict = true; hunk.lines.push({ @@ -460,7 +402,6 @@ function conflict(hunk, mine, their) { theirs: their }); } - function insertLeading(hunk, insert, their) { while (insert.offset < their.offset && insert.index < insert.lines.length) { var line = insert.lines[insert.index++]; @@ -468,25 +409,22 @@ function insertLeading(hunk, insert, their) { insert.offset++; } } - function insertTrailing(hunk, insert) { while (insert.index < insert.lines.length) { var line = insert.lines[insert.index++]; hunk.lines.push(line); } } - function collectChange(state) { var ret = [], - operation = state.lines[state.index][0]; - + operation = state.lines[state.index][0]; while (state.index < state.lines.length) { - var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + var line = state.lines[state.index]; + // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. if (operation === '-' && line[0] === '+') { operation = '+'; } - if (operation === line[0]) { ret.push(line); state.index++; @@ -494,39 +432,35 @@ function collectChange(state) { break; } } - return ret; } - function collectContext(state, matchChanges) { var changes = [], - merged = [], - matchIndex = 0, - contextChanges = false, - conflicted = false; - + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; while (matchIndex < matchChanges.length && state.index < state.lines.length) { var change = state.lines[state.index], - match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + match = matchChanges[matchIndex]; + // Once we've hit our add, then we are done if (match[0] === '+') { break; } - contextChanges = contextChanges || change[0] !== ' '; merged.push(match); - matchIndex++; // Consume any additions in the other block as a conflict to attempt - // to pull in the remaining context after this + matchIndex++; + // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this if (change[0] === '+') { conflicted = true; - while (change[0] === '+') { changes.push(change); change = state.lines[++state.index]; } } - if (match.substr(1) === change.substr(1)) { changes.push(change); state.index++; @@ -534,44 +468,35 @@ function collectContext(state, matchChanges) { conflicted = true; } } - if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { conflicted = true; } - if (conflicted) { return changes; } - while (matchIndex < matchChanges.length) { merged.push(matchChanges[matchIndex++]); } - return { merged: merged, changes: changes }; } - function allRemoves(changes) { return changes.reduce(function (prev, change) { return prev && change[0] === '-'; }, true); } - function skipRemoveSuperset(state, removeChanges, delta) { for (var i = 0; i < delta; i++) { var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); - if (state.lines[state.index + i] !== ' ' + changeContent) { return false; } } - state.index += delta; return true; } - function calcOldNewLineCount(lines) { var oldLines = 0; var newLines = 0; @@ -579,7 +504,6 @@ function calcOldNewLineCount(lines) { if (typeof line !== 'string') { var myCount = calcOldNewLineCount(line.mine); var theirCount = calcOldNewLineCount(line.theirs); - if (oldLines !== undefined) { if (myCount.oldLines === theirCount.oldLines) { oldLines += myCount.oldLines; @@ -587,7 +511,6 @@ function calcOldNewLineCount(lines) { oldLines = undefined; } } - if (newLines !== undefined) { if (myCount.newLines === theirCount.newLines) { newLines += myCount.newLines; @@ -599,7 +522,6 @@ function calcOldNewLineCount(lines) { if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { newLines++; } - if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { oldLines++; } @@ -610,4 +532,4 @@ function calcOldNewLineCount(lines) { newLines: newLines }; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndD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QUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3JlYXRlIiwicmVxdWlyZSIsIl9wYXJzZSIsIl9hcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiYSIsIl9hcnJheUxpa2VUb0FycmF5IiwidCIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiaXNBcnJheSIsImxlbmd0aCIsImUiLCJuIiwiY2FsY0xpbmVDb3VudCIsImh1bmsiLCJfY2FsY09sZE5ld0xpbmVDb3VudCIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJwYXJzZVBhdGNoIiwiRXJyb3IiLCJzdHJ1Y3R1cmVkUGF0Y2giLCJwYXRjaCIsImNvbmZsaWN0IiwiY2hlY2siLCJvZmZzZXQiLCJtaW5lTGluZXMiLCJ0aGVpck9mZnNldCIsInRoZWlyTGluZXMiLCJ0aGVpciIsImluc2VydExlYWRpbmciLCJ0aGVpckN1cnJlbnQiLCJtdXR1YWxDaGFuZ2UiLCJfaHVuayRsaW5lcyIsImFwcGx5IiwiY29sbGVjdENoYW5nZSIsIl9odW5rJGxpbmVzMiIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJfaHVuayRsaW5lczMiLCJfaHVuayRsaW5lczQiLCJhcnJheUVxdWFsIiwiX2h1bmskbGluZXM1Iiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiX2h1bmskbGluZXM2IiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCgvXkBAL20pLnRlc3QocGFyYW0pIHx8ICgoL15JbmRleDovbSkudGVzdChwYXJhbSkpKSB7XG4gICAgICByZXR1cm4gcGFyc2VQYXRjaChwYXJhbSlbMF07XG4gICAgfVxuXG4gICAgaWYgKCFiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgcHJvdmlkZSBhIGJhc2UgcmVmZXJlbmNlIG9yIHBhc3MgaW4gYSBwYXRjaCcpO1xuICAgIH1cbiAgICByZXR1cm4gc3RydWN0dXJlZFBhdGNoKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBiYXNlLCBwYXJhbSk7XG4gIH1cblxuICByZXR1cm4gcGFyYW07XG59XG5cbmZ1bmN0aW9uIGZpbGVOYW1lQ2hhbmdlZChwYXRjaCkge1xuICByZXR1cm4gcGF0Y2gubmV3RmlsZU5hbWUgJiYgcGF0Y2gubmV3RmlsZU5hbWUgIT09IHBhdGNoLm9sZEZpbGVOYW1lO1xufVxuXG5mdW5jdGlvbiBzZWxlY3RGaWVsZChpbmRleCwgbWluZSwgdGhlaXJzKSB7XG4gIGlmIChtaW5lID09PSB0aGVpcnMpIHtcbiAgICByZXR1cm4gbWluZTtcbiAgfSBlbHNlIHtcbiAgICBpbmRleC5jb25mbGljdCA9IHRydWU7XG4gICAgcmV0dXJuIHttaW5lLCB0aGVpcnN9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGh1bmtCZWZvcmUodGVzdCwgY2hlY2spIHtcbiAgcmV0dXJuIHRlc3Qub2xkU3RhcnQgPCBjaGVjay5vbGRTdGFydFxuICAgICYmICh0ZXN0Lm9sZFN0YXJ0ICsgdGVzdC5vbGRMaW5lcykgPCBjaGVjay5vbGRTdGFydDtcbn1cblxuZnVuY3Rpb24gY2xvbmVIdW5rKGh1bmssIG9mZnNldCkge1xuICByZXR1cm4ge1xuICAgIG9sZFN0YXJ0OiBodW5rLm9sZFN0YXJ0LCBvbGRMaW5lczogaHVuay5vbGRMaW5lcyxcbiAgICBuZXdTdGFydDogaHVuay5uZXdTdGFydCArIG9mZnNldCwgbmV3TGluZXM6IGh1bmsubmV3TGluZXMsXG4gICAgbGluZXM6IGh1bmsubGluZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VMaW5lcyhodW5rLCBtaW5lT2Zmc2V0LCBtaW5lTGluZXMsIHRoZWlyT2Zmc2V0LCB0aGVpckxpbmVzKSB7XG4gIC8vIFRoaXMgd2lsbCBnZW5lcmFsbHkgcmVzdWx0IGluIGEgY29uZmxpY3RlZCBodW5rLCBidXQgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0XG4gIC8vIGlzIHRoZSBvbmx5IG92ZXJsYXAgd2hlcmUgd2UgY2FuIHN1Y2Nlc3NmdWxseSBtZXJnZSB0aGUgY29udGVudCBoZXJlLlxuICBsZXQgbWluZSA9IHtvZmZzZXQ6IG1pbmVPZmZzZXQsIGxpbmVzOiBtaW5lTGluZXMsIGluZGV4OiAwfSxcbiAgICAgIHRoZWlyID0ge29mZnNldDogdGhlaXJPZmZzZXQsIGxpbmVzOiB0aGVpckxpbmVzLCBpbmRleDogMH07XG5cbiAgLy8gSGFuZGxlIGFueSBsZWFkaW5nIGNvbnRlbnRcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCBtaW5lLCB0aGVpcik7XG4gIGluc2VydExlYWRpbmcoaHVuaywgdGhlaXIsIG1pbmUpO1xuXG4gIC8vIE5vdyBpbiB0aGUgb3ZlcmxhcCBjb250ZW50LiBTY2FuIHRocm91Z2ggYW5kIHNlbGVjdCB0aGUgYmVzdCBjaGFuZ2VzIGZyb20gZWFjaC5cbiAgd2hpbGUgKG1pbmUuaW5kZXggPCBtaW5lLmxpbmVzLmxlbmd0aCAmJiB0aGVpci5pbmRleCA8IHRoZWlyLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUubGluZXNbbWluZS5pbmRleF0sXG4gICAgICAgIHRoZWlyQ3VycmVudCA9IHRoZWlyLmxpbmVzW3RoZWlyLmluZGV4XTtcblxuICAgIGlmICgobWluZUN1cnJlbnRbMF0gPT09ICctJyB8fCBtaW5lQ3VycmVudFswXSA9PT0gJysnKVxuICAgICAgICAmJiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgfHwgdGhlaXJDdXJyZW50WzBdID09PSAnKycpKSB7XG4gICAgICAvLyBCb3RoIG1vZGlmaWVkIC4uLlxuICAgICAgbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnKycgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgaW5zZXJ0ZWRcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gY29sbGVjdENoYW5nZShtaW5lKSk7XG4gICAgfSBlbHNlIGlmICh0aGVpckN1cnJlbnRbMF0gPT09ICcrJyAmJiBtaW5lQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBUaGVpcnMgaW5zZXJ0ZWRcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gY29sbGVjdENoYW5nZSh0aGVpcikpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICctJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSByZW1vdmVkIG9yIGVkaXRlZFxuICAgICAgcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyAmJiBtaW5lQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBUaGVpciByZW1vdmVkIG9yIGVkaXRlZFxuICAgICAgcmVtb3ZhbChodW5rLCB0aGVpciwgbWluZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudCA9PT0gdGhlaXJDdXJyZW50KSB7XG4gICAgICAvLyBDb250ZXh0IGlkZW50aXR5XG4gICAgICBodW5rLmxpbmVzLnB1c2gobWluZUN1cnJlbnQpO1xuICAgICAgbWluZS5pbmRleCsrO1xuICAgICAgdGhlaXIuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udGV4dCBtaXNtYXRjaFxuICAgICAgY29uZmxpY3QoaHVuaywgY29sbGVjdENoYW5nZShtaW5lKSwgY29sbGVjdENoYW5nZSh0aGVpcikpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vdyBwdXNoIGFueXRoaW5nIHRoYXQgbWF5IGJlIHJlbWFpbmluZ1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCBtaW5lKTtcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgdGhlaXIpO1xuXG4gIGNhbGNMaW5lQ291bnQoaHVuayk7XG59XG5cbmZ1bmN0aW9uIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcikge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UodGhlaXIpO1xuXG4gIGlmIChhbGxSZW1vdmVzKG15Q2hhbmdlcykgJiYgYWxsUmVtb3Zlcyh0aGVpckNoYW5nZXMpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciByZW1vdmUgY2hhbmdlcyB0aGF0IGFyZSBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXJcbiAgICBpZiAoYXJyYXlTdGFydHNXaXRoKG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQodGhlaXIsIG15Q2hhbmdlcywgbXlDaGFuZ2VzLmxlbmd0aCAtIHRoZWlyQ2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChhcnJheVN0YXJ0c1dpdGgodGhlaXJDaGFuZ2VzLCBteUNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldChtaW5lLCB0aGVpckNoYW5nZXMsIHRoZWlyQ2hhbmdlcy5sZW5ndGggLSBteUNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhcnJheUVxdWFsKG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKSkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25mbGljdChodW5rLCBteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIsIHN3YXApIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q29udGV4dCh0aGVpciwgbXlDaGFuZ2VzKTtcbiAgaWYgKHRoZWlyQ2hhbmdlcy5tZXJnZWQpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcy5tZXJnZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZsaWN0KGh1bmssIHN3YXAgPyB0aGVpckNoYW5nZXMgOiBteUNoYW5nZXMsIHN3YXAgPyBteUNoYW5nZXMgOiB0aGVpckNoYW5nZXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbmZsaWN0KGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGh1bmsuY29uZmxpY3QgPSB0cnVlO1xuICBodW5rLmxpbmVzLnB1c2goe1xuICAgIGNvbmZsaWN0OiB0cnVlLFxuICAgIG1pbmU6IG1pbmUsXG4gICAgdGhlaXJzOiB0aGVpclxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0TGVhZGluZyhodW5rLCBpbnNlcnQsIHRoZWlyKSB7XG4gIHdoaWxlIChpbnNlcnQub2Zmc2V0IDwgdGhlaXIub2Zmc2V0ICYmIGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICAgIGluc2VydC5vZmZzZXQrKztcbiAgfVxufVxuZnVuY3Rpb24gaW5zZXJ0VHJhaWxpbmcoaHVuaywgaW5zZXJ0KSB7XG4gIHdoaWxlIChpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0Q2hhbmdlKHN0YXRlKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIG9wZXJhdGlvbiA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XVswXTtcbiAgd2hpbGUgKHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF07XG5cbiAgICAvLyBHcm91cCBhZGRpdGlvbnMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgYWZ0ZXIgc3VidHJhY3Rpb25zIGFuZCB0cmVhdCB0aGVtIGFzIG9uZSBcImF0b21pY1wiIG1vZGlmeSBjaGFuZ2UuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJy0nICYmIGxpbmVbMF0gPT09ICcrJykge1xuICAgICAgb3BlcmF0aW9uID0gJysnO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRpb24gPT09IGxpbmVbMF0pIHtcbiAgICAgIHJldC5wdXNoKGxpbmUpO1xuICAgICAgc3RhdGUuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RDb250ZXh0KHN0YXRlLCBtYXRjaENoYW5nZXMpIHtcbiAgbGV0IGNoYW5nZXMgPSBbXSxcbiAgICAgIG1lcmdlZCA9IFtdLFxuICAgICAgbWF0Y2hJbmRleCA9IDAsXG4gICAgICBjb250ZXh0Q2hhbmdlcyA9IGZhbHNlLFxuICAgICAgY29uZmxpY3RlZCA9IGZhbHNlO1xuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGhcbiAgICAgICAgJiYgc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgY2hhbmdlID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdLFxuICAgICAgICBtYXRjaCA9IG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XTtcblxuICAgIC8vIE9uY2Ugd2UndmUgaGl0IG91ciBhZGQsIHRoZW4gd2UgYXJlIGRvbmVcbiAgICBpZiAobWF0Y2hbMF0gPT09ICcrJykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29udGV4dENoYW5nZXMgPSBjb250ZXh0Q2hhbmdlcyB8fCBjaGFuZ2VbMF0gIT09ICcgJztcblxuICAgIG1lcmdlZC5wdXNoKG1hdGNoKTtcbiAgICBtYXRjaEluZGV4Kys7XG5cbiAgICAvLyBDb25zdW1lIGFueSBhZGRpdGlvbnMgaW4gdGhlIG90aGVyIGJsb2NrIGFzIGEgY29uZmxpY3QgdG8gYXR0ZW1wdFxuICAgIC8vIHRvIHB1bGwgaW4gdGhlIHJlbWFpbmluZyBjb250ZXh0IGFmdGVyIHRoaXNcbiAgICBpZiAoY2hhbmdlWzBdID09PSAnKycpIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuXG4gICAgICB3aGlsZSAoY2hhbmdlWzBdID09PSAnKycpIHtcbiAgICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgIGNoYW5nZSA9IHN0YXRlLmxpbmVzWysrc3RhdGUuaW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXRjaC5zdWJzdHIoMSkgPT09IGNoYW5nZS5zdWJzdHIoMSkpIHtcbiAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgc3RhdGUuaW5kZXgrKztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF0gfHwgJycpWzBdID09PSAnKydcbiAgICAgICYmIGNvbnRleHRDaGFuZ2VzKSB7XG4gICAgY29uZmxpY3RlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoY29uZmxpY3RlZCkge1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG5cbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoKSB7XG4gICAgbWVyZ2VkLnB1c2gobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXgrK10pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXJnZWQsXG4gICAgY2hhbmdlc1xuICB9O1xufVxuXG5mdW5jdGlvbiBhbGxSZW1vdmVzKGNoYW5nZXMpIHtcbiAgcmV0dXJuIGNoYW5nZXMucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGNoYW5nZSkge1xuICAgIHJldHVybiBwcmV2ICYmIGNoYW5nZVswXSA9PT0gJy0nO1xuICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIHNraXBSZW1vdmVTdXBlcnNldChzdGF0ZSwgcmVtb3ZlQ2hhbmdlcywgZGVsdGEpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWx0YTsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZUNvbnRlbnQgPSByZW1vdmVDaGFuZ2VzW3JlbW92ZUNoYW5nZXMubGVuZ3RoIC0gZGVsdGEgKyBpXS5zdWJzdHIoMSk7XG4gICAgaWYgKHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4ICsgaV0gIT09ICcgJyArIGNoYW5nZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5pbmRleCArPSBkZWx0YTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNhbGNPbGROZXdMaW5lQ291bnQobGluZXMpIHtcbiAgbGV0IG9sZExpbmVzID0gMDtcbiAgbGV0IG5ld0xpbmVzID0gMDtcblxuICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICBpZiAodHlwZW9mIGxpbmUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbXlDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS5taW5lKTtcbiAgICAgIGxldCB0aGVpckNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLnRoZWlycyk7XG5cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm9sZExpbmVzID09PSB0aGVpckNvdW50Lm9sZExpbmVzKSB7XG4gICAgICAgICAgb2xkTGluZXMgKz0gbXlDb3VudC5vbGRMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbGRMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5uZXdMaW5lcyA9PT0gdGhlaXJDb3VudC5uZXdMaW5lcykge1xuICAgICAgICAgIG5ld0xpbmVzICs9IG15Q291bnQubmV3TGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3TGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICcrJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG5ld0xpbmVzKys7XG4gICAgICB9XG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJy0nIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgb2xkTGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7b2xkTGluZXMsIG5ld0xpbmVzfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFBQTtBQUFBO0FBQTBELG1DQUFBRyxtQkFBQUMsQ0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxDQUFBLEtBQUFFLGdCQUFBLENBQUFGLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsQ0FBQSxLQUFBSSxrQkFBQTtBQUFBLFNBQUFBLG1CQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBRiw0QkFBQUgsQ0FBQSxFQUFBTSxDQUFBLFFBQUFOLENBQUEsMkJBQUFBLENBQUEsU0FBQU8saUJBQUEsQ0FBQVAsQ0FBQSxFQUFBTSxDQUFBLE9BQUFFLENBQUEsTUFBQUMsUUFBQSxDQUFBQyxJQUFBLENBQUFWLENBQUEsRUFBQVcsS0FBQSw2QkFBQUgsQ0FBQSxJQUFBUixDQUFBLENBQUFZLFdBQUEsS0FBQUosQ0FBQSxHQUFBUixDQUFBLENBQUFZLFdBQUEsQ0FBQUMsSUFBQSxhQUFBTCxDQUFBLGNBQUFBLENBQUEsR0FBQU0sS0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsb0JBQUFRLENBQUEsK0NBQUFRLElBQUEsQ0FBQVIsQ0FBQSxJQUFBRCxpQkFBQSxDQUFBUCxDQUFBLEVBQUFNLENBQUE7QUFBQSxTQUFBSixpQkFBQUYsQ0FBQSw4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 \ No newline at end of file diff --git a/lib/patch/parse.js b/lib/patch/parse.js old mode 100644 new mode 100755 index f15010480..7f4cf7129 --- a/lib/patch/parse.js +++ b/lib/patch/parse.js @@ -5,123 +5,110 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.parsePatch = parsePatch; - /*istanbul ignore end*/ function parsePatch(uniDiff) { - /*istanbul ignore start*/ - var - /*istanbul ignore end*/ - options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), - delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], - list = [], - i = 0; - + var diffstr = uniDiff.split(/\n/), + list = [], + i = 0; function parseIndex() { var index = {}; - list.push(index); // Parse diff metadata + list.push(index); + // Parse diff metadata while (i < diffstr.length) { - var line = diffstr[i]; // File header found, end parsing diff metadata + var line = diffstr[i]; + // File header found, end parsing diff metadata if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { break; - } // Diff index - + } + // Diff index var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); - if (header) { index.index = header[1]; } - i++; - } // Parse file headers if they are defined. Unified diff requires them, but - // there's no technical issues to have an isolated hunk without file header - + } + // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + parseFileHeader(index); parseFileHeader(index); - parseFileHeader(index); // Parse hunks + // Parse hunks index.hunks = []; - while (i < diffstr.length) { var _line = diffstr[i]; - - if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + if (/^(Index:\s|diff\s|\-\-\-\s|\+\+\+\s|===================================================================)/.test(_line)) { break; } else if (/^@@/.test(_line)) { index.hunks.push(parseHunk()); - } else if (_line && options.strict) { - // Ignore unexpected content unless in strict mode + } else if (_line) { throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); } else { i++; } } - } // Parses the --- and +++ headers, if none are found, no lines - // are consumed. - + } + // Parses the --- and +++ headers, if none are found, no lines + // are consumed. function parseFileHeader(index) { - var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); - + var fileHeader = /^(---|\+\+\+)\s+(.*)\r?$/.exec(diffstr[i]); if (fileHeader) { var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; var data = fileHeader[2].split('\t', 2); var fileName = data[0].replace(/\\\\/g, '\\'); - if (/^".*"$/.test(fileName)) { fileName = fileName.substr(1, fileName.length - 2); } - index[keyPrefix + 'FileName'] = fileName; index[keyPrefix + 'Header'] = (data[1] || '').trim(); i++; } - } // Parses a hunk - // This assumes that we are at the start of a hunk. - + } + // Parses a hunk + // This assumes that we are at the start of a hunk. function parseHunk() { var chunkHeaderIndex = i, - chunkHeaderLine = diffstr[i++], - chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); var hunk = { oldStart: +chunkHeader[1], oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2], newStart: +chunkHeader[3], newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4], - lines: [], - linedelimiters: [] - }; // Unified Diff Format quirk: If the chunk size is 0, + lines: [] + }; + + // Unified Diff Format quirk: If the chunk size is 0, // the first number is one lower than one would expect. // https://www.artima.com/weblogs/viewpost.jsp?thread=164293 - if (hunk.oldLines === 0) { hunk.oldStart += 1; } - if (hunk.newLines === 0) { hunk.newStart += 1; } - var addCount = 0, - removeCount = 0; - - for (; i < diffstr.length; i++) { - // Lines starting with '---' could be mistaken for the "remove line" operation - // But they could be the header for the next file. Therefore prune such cases out. - if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { - break; - } - + removeCount = 0; + for (; i < diffstr.length && (removeCount < hunk.oldLines || addCount < hunk.newLines || + /*istanbul ignore start*/ + (_diffstr$i = + /*istanbul ignore end*/ + diffstr[i]) !== null && _diffstr$i !== void 0 && + /*istanbul ignore start*/ + _diffstr$i + /*istanbul ignore end*/ + .startsWith('\\')); i++) { + /*istanbul ignore start*/ + var _diffstr$i; + /*istanbul ignore end*/ var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; - if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { hunk.lines.push(diffstr[i]); - hunk.linedelimiters.push(delimiters[i] || '\n'); - if (operation === '+') { addCount++; } else if (operation === '-') { @@ -131,37 +118,34 @@ function parsePatch(uniDiff) { removeCount++; } } else { - break; + throw new Error( + /*istanbul ignore start*/ + "Hunk at line ".concat( + /*istanbul ignore end*/ + chunkHeaderIndex + 1, " contained invalid line ").concat(diffstr[i])); } - } // Handle the empty block count case - + } + // Handle the empty block count case if (!addCount && hunk.newLines === 1) { hunk.newLines = 0; } - if (!removeCount && hunk.oldLines === 1) { hunk.oldLines = 0; - } // Perform optional sanity checking - - - if (options.strict) { - if (addCount !== hunk.newLines) { - throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); - } - - if (removeCount !== hunk.oldLines) { - throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); - } } + // Perform sanity checking + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } return hunk; } - while (i < diffstr.length) { parseIndex(); } - return list; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsImRpZmZzdHIiLCJzcGxpdCIsImxpc3QiLCJpIiwicGFyc2VJbmRleCIsImluZGV4IiwicHVzaCIsImxlbmd0aCIsImxpbmUiLCJ0ZXN0IiwiaGVhZGVyIiwiZXhlYyIsInBhcnNlRmlsZUhlYWRlciIsImh1bmtzIiwicGFyc2VIdW5rIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwiZmlsZUhlYWRlciIsImtleVByZWZpeCIsImRhdGEiLCJmaWxlTmFtZSIsInJlcGxhY2UiLCJzdWJzdHIiLCJ0cmltIiwiY2h1bmtIZWFkZXJJbmRleCIsImNodW5rSGVhZGVyTGluZSIsImNodW5rSGVhZGVyIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwibGluZXMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiX2RpZmZzdHIkaSIsInN0YXJ0c1dpdGgiLCJvcGVyYXRpb24iLCJjb25jYXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcGF0Y2gvcGFyc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0Y2godW5pRGlmZikge1xuICBsZXQgZGlmZnN0ciA9IHVuaURpZmYuc3BsaXQoL1xcbi8pLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcbiAgICAgIGlmICgoL14oSW5kZXg6XFxzfGRpZmZcXHN8XFwtXFwtXFwtXFxzfFxcK1xcK1xcK1xcc3w9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KS8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKVxccj8kLykuZXhlYyhkaWZmc3RyW2ldKTtcbiAgICBpZiAoZmlsZUhlYWRlcikge1xuICAgICAgbGV0IGtleVByZWZpeCA9IGZpbGVIZWFkZXJbMV0gPT09ICctLS0nID8gJ29sZCcgOiAnbmV3JztcbiAgICAgIGNvbnN0IGRhdGEgPSBmaWxlSGVhZGVyWzJdLnNwbGl0KCdcXHQnLCAyKTtcbiAgICAgIGxldCBmaWxlTmFtZSA9IGRhdGFbMF0ucmVwbGFjZSgvXFxcXFxcXFwvZywgJ1xcXFwnKTtcbiAgICAgIGlmICgoL15cIi4qXCIkLykudGVzdChmaWxlTmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMSwgZmlsZU5hbWUubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnRmlsZU5hbWUnXSA9IGZpbGVOYW1lO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gKGRhdGFbMV0gfHwgJycpLnRyaW0oKTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzJdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbMl0sXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6IHR5cGVvZiBjaHVua0hlYWRlcls0XSA9PT0gJ3VuZGVmaW5lZCcgPyAxIDogK2NodW5rSGVhZGVyWzRdLFxuICAgICAgbGluZXM6IFtdXG4gICAgfTtcblxuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0ICs9IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0ICs9IDE7XG4gICAgfVxuXG4gICAgbGV0IGFkZENvdW50ID0gMCxcbiAgICAgICAgcmVtb3ZlQ291bnQgPSAwO1xuICAgIGZvciAoXG4gICAgICA7XG4gICAgICBpIDwgZGlmZnN0ci5sZW5ndGggJiYgKHJlbW92ZUNvdW50IDwgaHVuay5vbGRMaW5lcyB8fCBhZGRDb3VudCA8IGh1bmsubmV3TGluZXMgfHwgZGlmZnN0cltpXT8uc3RhcnRzV2l0aCgnXFxcXCcpKTtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJyB8fCBvcGVyYXRpb24gPT09ICctJyB8fCBvcGVyYXRpb24gPT09ICcgJyB8fCBvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBodW5rLmxpbmVzLnB1c2goZGlmZnN0cltpXSk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSHVuayBhdCBsaW5lICR7Y2h1bmtIZWFkZXJJbmRleCArIDF9IGNvbnRhaW5lZCBpbnZhbGlkIGxpbmUgJHtkaWZmc3RyW2ldfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWRkZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVtb3ZlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh1bms7XG4gIH1cblxuICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgcGFyc2VJbmRleCgpO1xuICB9XG5cbiAgcmV0dXJuIGxpc3Q7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVUEsQ0FBQ0MsT0FBTyxFQUFFO0VBQ2xDLElBQUlDLE9BQU8sR0FBR0QsT0FBTyxDQUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzdCQyxJQUFJLEdBQUcsRUFBRTtJQUNUQyxDQUFDLEdBQUcsQ0FBQztFQUVULFNBQVNDLFVBQVVBLENBQUEsRUFBRztJQUNwQixJQUFJQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2RILElBQUksQ0FBQ0ksSUFBSSxDQUFDRCxLQUFLLENBQUM7O0lBRWhCO0lBQ0EsT0FBT0YsQ0FBQyxHQUFHSCxPQUFPLENBQUNPLE1BQU0sRUFBRTtNQUN6QixJQUFJQyxJQUFJLEdBQUdSLE9BQU8sQ0FBQ0csQ0FBQyxDQUFDOztNQUVyQjtNQUNBLElBQUssdUJBQXVCLENBQUVNLElBQUksQ0FBQ0QsSUFBSSxDQUFDLEVBQUU7UUFDeEM7TUFDRjs7TUFFQTtNQUNBLElBQUlFLE1BQU0sR0FBSSwwQ0FBMEMsQ0FBRUMsSUFBSSxDQUFDSCxJQUFJLENBQUM7TUFDcEUsSUFBSUUsTUFBTSxFQUFFO1FBQ1ZMLEtBQUssQ0FBQ0EsS0FBSyxHQUFHSyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ3pCO01BRUFQLENBQUMsRUFBRTtJQUNMOztJQUVBO0lBQ0E7SUFDQVMsZUFB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 \ No newline at end of file diff --git a/lib/patch/reverse.js b/lib/patch/reverse.js new file mode 100644 index 000000000..401544e10 --- /dev/null +++ b/lib/patch/reverse.js @@ -0,0 +1,58 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.reversePatch = reversePatch; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +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 _objectSpread(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(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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/*istanbul ignore end*/ +function reversePatch(structuredPatch) { + if (Array.isArray(structuredPatch)) { + return structuredPatch.map(reversePatch).reverse(); + } + return ( + /*istanbul ignore start*/ + _objectSpread(_objectSpread({}, + /*istanbul ignore end*/ + structuredPatch), {}, { + oldFileName: structuredPatch.newFileName, + oldHeader: structuredPatch.newHeader, + newFileName: structuredPatch.oldFileName, + newHeader: structuredPatch.oldHeader, + hunks: structuredPatch.hunks.map(function (hunk) { + return { + oldLines: hunk.newLines, + oldStart: hunk.newStart, + newLines: hunk.oldLines, + newStart: hunk.oldStart, + lines: hunk.lines.map(function (l) { + if (l.startsWith('-')) { + return ( + /*istanbul ignore start*/ + "+".concat( + /*istanbul ignore end*/ + l.slice(1)) + ); + } + if (l.startsWith('+')) { + return ( + /*istanbul ignore start*/ + "-".concat( + /*istanbul ignore end*/ + l.slice(1)) + ); + } + return l; + }) + }; + }) + }) + ); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXZlcnNlUGF0Y2giLCJzdHJ1Y3R1cmVkUGF0Y2giLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJyZXZlcnNlIiwiX29iamVjdFNwcmVhZCIsIm9sZEZpbGVOYW1lIiwibmV3RmlsZU5hbWUiLCJvbGRIZWFkZXIiLCJuZXdIZWFkZXIiLCJodW5rcyIsImh1bmsiLCJvbGRMaW5lcyIsIm5ld0xpbmVzIiwib2xkU3RhcnQiLCJuZXdTdGFydCIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJjb25jYXQiLCJzbGljZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiByZXZlcnNlUGF0Y2goc3RydWN0dXJlZFBhdGNoKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHN0cnVjdHVyZWRQYXRjaCkpIHtcbiAgICByZXR1cm4gc3RydWN0dXJlZFBhdGNoLm1hcChyZXZlcnNlUGF0Y2gpLnJldmVyc2UoKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RydWN0dXJlZFBhdGNoLFxuICAgIG9sZEZpbGVOYW1lOiBzdHJ1Y3R1cmVkUGF0Y2gubmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBzdHJ1Y3R1cmVkUGF0Y2gubmV3SGVhZGVyLFxuICAgIG5ld0ZpbGVOYW1lOiBzdHJ1Y3R1cmVkUGF0Y2gub2xkRmlsZU5hbWUsXG4gICAgbmV3SGVhZGVyOiBzdHJ1Y3R1cmVkUGF0Y2gub2xkSGVhZGVyLFxuICAgIGh1bmtzOiBzdHJ1Y3R1cmVkUGF0Y2guaHVua3MubWFwKGh1bmsgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkTGluZXM6IGh1bmsubmV3TGluZXMsXG4gICAgICAgIG9sZFN0YXJ0OiBodW5rLm5ld1N0YXJ0LFxuICAgICAgICBuZXdMaW5lczogaHVuay5vbGRMaW5lcyxcbiAgICAgICAgbmV3U3RhcnQ6IGh1bmsub2xkU3RhcnQsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxZQUFZQSxDQUFDQyxlQUFlLEVBQUU7RUFDNUMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLGVBQWUsQ0FBQyxFQUFFO0lBQ2xDLE9BQU9BLGVBQWUsQ0FBQ0csR0FBRyxDQUFDSixZQUFZLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDcEQ7RUFFQTtJQUFBO0lBQUFDLGFBQUEsQ0FBQUEsYUFBQTtJQUFBO0lBQ0tMLGVBQWU7TUFDbEJNLFdBQVcsRUFBRU4sZUFBZSxDQUFDTyxXQUFXO01BQ3hDQyxTQUFTLEVBQUVSLGVBQWUsQ0FBQ1MsU0FBUztNQUNwQ0YsV0FBVyxFQUFFUCxlQUFlLENBQUNNLFdBQVc7TUFDeENHLFNBQVMsRUFBRVQsZUFBZSxDQUFDUSxTQUFTO01BQ3BDRSxLQUFLLEVBQUVWLGVBQWUsQ0FBQ1UsS0FBSyxDQUFDUCxHQUFHLENBQUMsVUFBQVEsSUFBSSxFQUFJO1FBQ3ZDLE9BQU87VUFDTEMsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBQVE7VUFDdkJDLFFBQVEsRUFBRUgsSUFBSSxDQUFDSSxRQUFRO1VBQ3ZCRixRQUFRLEVBQUVGLElBQUksQ0FBQ0MsUUFBUTtVQUN2QkcsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBQVE7VUFDdkJFLEtBQUssRUFBRUwsSUFBSSxDQUFDSyxLQUFLLENBQUNiLEdBQUcsQ0FBQyxVQUFBYyxDQUFDLEVBQUk7WUFDekIsSUFBSUEsQ0FBQyxDQUFDQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7Y0FBRTtnQkFBQTtnQkFBQSxJQUFBQyxNQUFBO2dCQUFBO2dCQUFXRixDQUFDLENBQUNHLEtBQUssQ0FBQyxDQUFDLENBQUM7Y0FBQTtZQUFJO1lBQ2xELElBQUlILENBQUMsQ0FBQ0MsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2NBQUU7Z0JBQUE7Z0JBQUEsSUFBQUMsTUFBQTtnQkFBQTtnQkFBV0YsQ0FBQyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2NBQUE7WUFBSTtZQUNsRCxPQUFPSCxDQUFDO1VBQ1YsQ0FBQztRQUNILENBQUM7TUFDSCxDQUFDO0lBQUM7RUFBQTtBQUVOIiwiaWdub3JlTGlzdCI6W119 \ No newline at end of file diff --git a/lib/util/array.js b/lib/util/array.js index aecf67ac8..3ac5a3a3f 100644 --- a/lib/util/array.js +++ b/lib/util/array.js @@ -6,27 +6,22 @@ Object.defineProperty(exports, "__esModule", { }); exports.arrayEqual = arrayEqual; exports.arrayStartsWith = arrayStartsWith; - /*istanbul ignore end*/ function arrayEqual(a, b) { if (a.length !== b.length) { return false; } - return arrayStartsWith(a, b); } - function arrayStartsWith(array, start) { if (start.length > array.length) { return false; } - for (var i = 0; i < start.length; i++) { if (start[i] !== array[i]) { return false; } } - return true; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJheUVxdWFsIiwiYSIsImIiLCJsZW5ndGgiLCJhcnJheVN0YXJ0c1dpdGgiLCJhcnJheSIsInN0YXJ0IiwiaSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBTyxTQUFTQSxVQUFVQSxDQUFDQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUMvQixJQUFJRCxDQUFDLENBQUNFLE1BQU0sS0FBS0QsQ0FBQyxDQUFDQyxNQUFNLEVBQUU7SUFDekIsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxPQUFPQyxlQUFlLENBQUNILENBQUMsRUFBRUMsQ0FBQyxDQUFDO0FBQzlCO0FBRU8sU0FBU0UsZUFBZUEsQ0FBQ0MsS0FBSyxFQUFFQyxLQUFLLEVBQUU7RUFDNUMsSUFBSUEsS0FBSyxDQUFDSCxNQUFNLEdBQUdFLEtBQUssQ0FBQ0YsTUFBTSxFQUFFO0lBQy9CLE9BQU8sS0FBSztFQUNkO0VBRUEsS0FBSyxJQUFJSSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdELEtBQUssQ0FBQ0gsTUFBTSxFQUFFSSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxJQUFJRCxLQUFLLENBQUNDLENBQUMsQ0FBQyxLQUFLRixLQUFLLENBQUNFLENBQUMsQ0FBQyxFQUFFO01BQ3pCLE9BQU8sS0FBSztJQUNkO0VBQ0Y7RUFFQSxPQUFPLElBQUk7QUFDYiIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/lib/util/distance-iterator.js b/lib/util/distance-iterator.js index 57c06a3f9..8a763179a 100644 --- a/lib/util/distance-iterator.js +++ b/lib/util/distance-iterator.js @@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = _default; - /*istanbul ignore end*/ // Iterator that traverses in the range of [min, max], stepping // by distance from a given start position. I.e. for [0, 4], with @@ -16,42 +15,40 @@ _default /*istanbul ignore end*/ (start, minLine, maxLine) { var wantForward = true, - backwardExhausted = false, - forwardExhausted = false, - localOffset = 1; + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; return function iterator() { if (wantForward && !forwardExhausted) { if (backwardExhausted) { localOffset++; } else { wantForward = false; - } // Check if trying to fit beyond text length, and if not, check it fits - // after offset location (or desired location on first iteration) - + } + // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) if (start + localOffset <= maxLine) { - return localOffset; + return start + localOffset; } - forwardExhausted = true; } - if (!backwardExhausted) { if (!forwardExhausted) { wantForward = true; - } // Check if trying to fit before text beginning, and if not, check it fits - // before offset location - + } + // Check if trying to fit before text beginning, and if not, check it fits + // before offset location if (minLine <= start - localOffset) { - return -localOffset++; + return start - localOffset++; } - backwardExhausted = true; return iterator(); - } // We tried to fit hunk before text beginning and beyond text length, then - // hunk can't fit on the text. Return undefined + } + // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined }; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9kaXN0YW5jZS1pdGVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJdGVyYXRvciB0aGF0IHRyYXZlcnNlcyBpbiB0aGUgcmFuZ2Ugb2YgW21pbiwgbWF4XSwgc3RlcHBpbmdcbi8vIGJ5IGRpc3RhbmNlIGZyb20gYSBnaXZlbiBzdGFydCBwb3NpdGlvbi4gSS5lLiBmb3IgWzAsIDRdLCB3aXRoXG4vLyBzdGFydCBvZiAyLCB0aGlzIHdpbGwgaXRlcmF0ZSAyLCAzLCAxLCA0LCAwLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RhcnQsIG1pbkxpbmUsIG1heExpbmUpIHtcbiAgbGV0IHdhbnRGb3J3YXJkID0gdHJ1ZSxcbiAgICAgIGJhY2t3YXJkRXhoYXVzdGVkID0gZmFsc2UsXG4gICAgICBmb3J3YXJkRXhoYXVzdGVkID0gZmFsc2UsXG4gICAgICBsb2NhbE9mZnNldCA9IDE7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGl0ZXJhdG9yKCkge1xuICAgIGlmICh3YW50Rm9yd2FyZCAmJiAhZm9yd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKGJhY2t3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIGxvY2FsT2Zmc2V0Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YW50Rm9yd2FyZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB0cnlpbmcgdG8gZml0IGJleW9uZCB0ZXh0IGxlbmd0aCwgYW5kIGlmIG5vdCwgY2hlY2sgaXQgZml0c1xuICAgICAgLy8gYWZ0ZXIgb2Zmc2V0IGxvY2F0aW9uIChvciBkZXNpcmVkIGxvY2F0aW9uIG9uIGZpcnN0IGl0ZXJhdGlvbilcbiAgICAgIGlmIChzdGFydCArIGxvY2FsT2Zmc2V0IDw9IG1heExpbmUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgbG9jYWxPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmICghZm9yd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICB3YW50Rm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmVmb3JlIHRleHQgYmVnaW5uaW5nLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBiZWZvcmUgb2Zmc2V0IGxvY2F0aW9uXG4gICAgICBpZiAobWluTGluZSA8PSBzdGFydCAtIGxvY2FsT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBzdGFydCAtIGxvY2FsT2Zmc2V0Kys7XG4gICAgICB9XG5cbiAgICAgIGJhY2t3YXJkRXhoYXVzdGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiBpdGVyYXRvcigpO1xuICAgIH1cblxuICAgIC8vIFdlIHRyaWVkIHRvIGZpdCBodW5rIGJlZm9yZSB0ZXh0IGJlZ2lubmluZyBhbmQgYmV5b25kIHRleHQgbGVuZ3RoLCB0aGVuXG4gICAgLy8gaHVuayBjYW4ndCBmaXQgb24gdGhlIHRleHQuIFJldHVybiB1bmRlZmluZWRcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDZTtBQUFBO0FBQUFBO0FBQUFBO0FBQUEsQ0FBU0MsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRTtFQUMvQyxJQUFJQyxXQUFXLEdBQUcsSUFBSTtJQUNsQkMsaUJBQWlCLEdBQUcsS0FBSztJQUN6QkMsZ0JBQWdCLEdBQUcsS0FBSztJQUN4QkMsV0FBVyxHQUFHLENBQUM7RUFFbkIsT0FBTyxTQUFTQyxRQUFRQSxDQUFBLEVBQUc7SUFDekIsSUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFnQixFQUFFO01BQ3BDLElBQUlELGlCQUFpQixFQUFFO1FBQ3JCRSxXQUFXLEVBQUU7TUFDZixDQUFDLE1BQU07UUFDTEgsV0FBVyxHQUFHLEtBQUs7TUFDckI7O01BRUE7TUFDQTtNQUNBLElBQUlILEtBQUssR0FBR00sV0FBVyxJQUFJSixPQUFPLEVBQUU7UUFDbEMsT0FBT0YsS0FBSyxHQUFHTSxXQUFXO01BQzVCO01BRUFELGdCQUFnQixHQUFHLElBQUk7SUFDekI7SUFFQSxJQUFJLENBQUNELGlCQUFpQixFQUFFO01BQ3RCLElBQUksQ0FBQ0MsZ0JBQWdCLEVBQUU7UUFDckJGLFdBQVcsR0FBRyxJQUFJO01BQ3BCOztNQUVBO01BQ0E7TUFDQSxJQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBVyxFQUFFO1FBQ2xDLE9BQU9OLEtBQUssR0FBR00sV0FBVyxFQUFFO01BQzlCO01BRUFGLGlCQUFpQixHQUFHLElBQUk7TUFDeEIsT0FBT0csUUFBUSxDQUFDLENBQUM7SUFDbkI7O0lBRUE7SUFDQTtFQUNGLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ== \ No newline at end of file diff --git a/lib/util/params.js b/lib/util/params.js index e838eb2f4..fd6ed8192 100644 --- a/lib/util/params.js +++ b/lib/util/params.js @@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.generateOptions = generateOptions; - /*istanbul ignore end*/ function generateOptions(options, defaults) { if (typeof options === 'function') { @@ -18,7 +17,6 @@ function generateOptions(options, defaults) { } } } - return defaults; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBZUEsQ0FBQ0MsT0FBTyxFQUFFQyxRQUFRLEVBQUU7RUFDakQsSUFBSSxPQUFPRCxPQUFPLEtBQUssVUFBVSxFQUFFO0lBQ2pDQyxRQUFRLENBQUNDLFFBQVEsR0FBR0YsT0FBTztFQUM3QixDQUFDLE1BQU0sSUFBSUEsT0FBTyxFQUFFO0lBQ2xCLEtBQUssSUFBSUcsSUFBSSxJQUFJSCxPQUFPLEVBQUU7TUFDeEI7TUFDQSxJQUFJQSxPQUFPLENBQUNJLGNBQWMsQ0FBQ0QsSUFBSSxDQUFDLEVBQUU7UUFDaENGLFFBQVEsQ0FBQ0UsSUFBSSxDQUFDLEdBQUdILE9BQU8sQ0FBQ0csSUFBSSxDQUFDO01BQ2hDO0lBQ0Y7RUFDRjtFQUNBLE9BQU9GLFFBQVE7QUFDakIiLCJpZ25vcmVMaXN0IjpbXX0= \ No newline at end of file diff --git a/lib/util/string.js b/lib/util/string.js new file mode 100644 index 000000000..e99c3934c --- /dev/null +++ b/lib/util/string.js @@ -0,0 +1,131 @@ +/*istanbul ignore start*/ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hasOnlyUnixLineEndings = hasOnlyUnixLineEndings; +exports.hasOnlyWinLineEndings = hasOnlyWinLineEndings; +exports.longestCommonPrefix = longestCommonPrefix; +exports.longestCommonSuffix = longestCommonSuffix; +exports.maximumOverlap = maximumOverlap; +exports.removePrefix = removePrefix; +exports.removeSuffix = removeSuffix; +exports.replacePrefix = replacePrefix; +exports.replaceSuffix = replaceSuffix; +/*istanbul ignore end*/ +function longestCommonPrefix(str1, str2) { + var i; + for (i = 0; i < str1.length && i < str2.length; i++) { + if (str1[i] != str2[i]) { + return str1.slice(0, i); + } + } + return str1.slice(0, i); +} +function longestCommonSuffix(str1, str2) { + var i; + + // Unlike longestCommonPrefix, we need a special case to handle all scenarios + // where we return the empty string since str1.slice(-0) will return the + // entire string. + if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) { + return ''; + } + for (i = 0; i < str1.length && i < str2.length; i++) { + if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) { + return str1.slice(-i); + } + } + return str1.slice(-i); +} +function replacePrefix(string, oldPrefix, newPrefix) { + if (string.slice(0, oldPrefix.length) != oldPrefix) { + throw Error( + /*istanbul ignore start*/ + "string ".concat( + /*istanbul ignore end*/ + JSON.stringify(string), " doesn't start with prefix ").concat(JSON.stringify(oldPrefix), "; this is a bug")); + } + return newPrefix + string.slice(oldPrefix.length); +} +function replaceSuffix(string, oldSuffix, newSuffix) { + if (!oldSuffix) { + return string + newSuffix; + } + if (string.slice(-oldSuffix.length) != oldSuffix) { + throw Error( + /*istanbul ignore start*/ + "string ".concat( + /*istanbul ignore end*/ + JSON.stringify(string), " doesn't end with suffix ").concat(JSON.stringify(oldSuffix), "; this is a bug")); + } + return string.slice(0, -oldSuffix.length) + newSuffix; +} +function removePrefix(string, oldPrefix) { + return replacePrefix(string, oldPrefix, ''); +} +function removeSuffix(string, oldSuffix) { + return replaceSuffix(string, oldSuffix, ''); +} +function maximumOverlap(string1, string2) { + return string2.slice(0, overlapCount(string1, string2)); +} + +// Nicked from https://stackoverflow.com/a/60422853/1709587 +function overlapCount(a, b) { + // Deal with cases where the strings differ in length + var startA = 0; + if (a.length > b.length) { + startA = a.length - b.length; + } + var endB = b.length; + if (a.length < b.length) { + endB = a.length; + } + // Create a back-reference for each index + // that should be followed in case of a mismatch. + // We only need B to make these references: + var map = Array(endB); + var k = 0; // Index that lags behind j + map[0] = 0; + for (var j = 1; j < endB; j++) { + if (b[j] == b[k]) { + map[j] = map[k]; // skip over the same character (optional optimisation) + } else { + map[j] = k; + } + while (k > 0 && b[j] != b[k]) { + k = map[k]; + } + if (b[j] == b[k]) { + k++; + } + } + // Phase 2: use these references while iterating over A + k = 0; + for (var i = startA; i < a.length; i++) { + while (k > 0 && a[i] != b[k]) { + k = map[k]; + } + if (a[i] == b[k]) { + k++; + } + } + return k; +} + +/** + * Returns true if the string consistently uses Windows line endings. + */ +function hasOnlyWinLineEndings(string) { + return string.includes('\r\n') && !string.match(/(?=10.0.0": - version "20.10.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" - integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== - dependencies: - undici-types "~5.26.4" - -"@types/qs@*": - version "6.9.13" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.13.tgz#c7e2406bdc6bd512f8a3651632568c72d43eb1e7" - integrity sha512-iLR+1vTTJ3p0QaOUq6ACbY1mzKTODFDT/XedZI8BksOotFmL4ForwDfRQ/DZeuTHR7/2i4lI1D203gdfxuqTlA== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/retry@0.12.2": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" - integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.15.5": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.36": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - dependencies: - "@types/node" "*" - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accepts@~1.3.4, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -accepts@~1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^6.0.7: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@~3.1.1, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async@1.x: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@^3.2.3, async@~3.2.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -babel-eslint@^10.0.1: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.1.tgz#cd8750e0b7da30ec2f66007b6151792f02e1138e" - integrity sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.0" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@^1.19.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" - integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= - dependencies: - continuable-cache "^0.3.1" - error "^7.0.0" - raw-body "~1.1.0" - safe-json-parse "~1.0.1" - -bonjour-service@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -brace-expansion@^1.0.0, brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - -bytes@1: - version "1.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" - integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001587: - version "1.0.30001599" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz#571cf4f3f1506df9bf41fcbb6d10d5d017817bce" - integrity sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA== - -chai@^4.2.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" - -chalk@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0, chalk@^4.1.2, chalk@~4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" - optionalDependencies: - fsevents "~2.1.1" - -chokidar@^3.4.0, chokidar@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^3.5.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.10: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -continuable-cache@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" - integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= - -convert-source-map@^1.1.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -core-js-compat@^3.31.0, core-js-compat@^3.36.0: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== - dependencies: - browserslist "^4.23.0" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@~2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - -date-format@^4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" - integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== - -dateformat@~4.6.2: - version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.2.6, debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" - -deep-for-each@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/deep-for-each/-/deep-for-each-3.0.0.tgz#0f5d463cb93755c41fccff42145874e9e077fd61" - integrity sha512-pPN+0f8jlnNP+z90qqOdxGghJU5XM6oBDhvAR+qdQzjCg5pk/7VPPvKK1GqoXEFkHza6ZS+Otzzvmr0g3VUaKw== - dependencies: - lodash.isplainobject "^4.0.6" - -deep-is@^0.1.3, deep-is@~0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serialize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.4.668: - version "1.4.710" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.710.tgz#d0ec4ea8a97df4c5eaeb8c69d45bf81f248b3855" - integrity sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -engine.io-parser@~5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb" - integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ== - -engine.io@~6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" - integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== - dependencies: - "@types/cookie" "^0.4.1" - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - cors "~2.8.5" - debug "~4.3.1" - engine.io-parser "~5.2.1" - ws "~8.11.0" - -enhanced-resolve@^5.15.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -error@^7.0.0: - version "7.0.2" - resolved "https://registry.npmjs.org/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" - integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= - dependencies: - string-template "~0.2.1" - xtend "~4.0.0" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-module-lexer@^1.2.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.2.tgz#ba1a62255ff9b41023aaf9bd08c016a5f1a3fef3" - integrity sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw== - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@1.7.x: - version "1.7.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.7.1.tgz#30ecfcf66ca98dc67cd2fd162abeb6eafa8ce6fc" - dependencies: - esprima "^1.2.2" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.5.0" - optionalDependencies: - source-map "~0.2.0" - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^5.12.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -eslint@^8.44.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@2.5.x: - version "2.5.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.5.0.tgz#f387a46fd344c1b1a39baf8c20bfb43b6d0058cc" - -esprima@^1.2.2: - version "1.2.5" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter2@~0.4.13: - version "0.4.14" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= - -eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend@^3.0.0, extend@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-levenshtein@~1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz#0178dcdee023b92905193af0959e8a7639cfdcb9" - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-sync-cmp@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" - -fileset@0.2.x: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" - integrity sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc= - dependencies: - glob "5.x" - minimatch "2.x" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -findup-sync@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" - integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^4.0.2" - resolve-dir "^1.0.1" - -findup-sync@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-5.0.0.tgz#54380ad965a7edca00cc8f63113559aadc541bd2" - integrity sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.3" - micromatch "^4.0.4" - resolve-dir "^1.0.1" - -fined@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== - dependencies: - is-buffer "~2.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.2.7: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -follow-redirects@^1.0.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -gaze@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -getobject@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/getobject/-/getobject-1.0.2.tgz#25ec87a50370f6dcc3c6ba7ef43c4c16215c4c89" - integrity sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg== - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-parent@~5.1.0, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@5.x: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^10.3.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^7.1.2, glob@^7.1.3, glob@^7.1.7, glob@^7.2.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~7.1.1, glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globule@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" - dependencies: - glob "~7.1.1" - lodash "~4.17.4" - minimatch "~3.0.2" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -grunt-babel@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/grunt-babel/-/grunt-babel-8.0.0.tgz#92ef63aafadf938c488dc2f926ac9846e0c93d1b" - integrity sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ== - -grunt-cli@^1.4.3, grunt-cli@~1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.4.3.tgz#22c9f1a3d2780bf9b0d206e832e40f8f499175ff" - integrity sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ== - dependencies: - grunt-known-options "~2.0.0" - interpret "~1.1.0" - liftup "~3.0.1" - nopt "~4.0.1" - v8flags "~3.2.0" - -grunt-contrib-clean@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-2.0.1.tgz#062e8019d31bfca35af8929a2ee1063c6c46dd2d" - integrity sha512-uRvnXfhiZt8akb/ZRDHJpQQtkkVkqc/opWO4Po/9ehC2hPxgptB9S6JHDC/Nxswo4CJSM0iFPT/Iym3cEMWzKA== - dependencies: - async "^3.2.3" - rimraf "^2.6.2" - -grunt-contrib-copy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573" - dependencies: - chalk "^1.1.1" - file-sync-cmp "^0.1.0" - -grunt-contrib-uglify@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-5.2.2.tgz#447c0b58451a1fca20768371e07e723a870dfe98" - integrity sha512-ITxiWxrjjP+RZu/aJ5GLvdele+sxlznh+6fK9Qckio5ma8f7Iv8woZjRkGfafvpuygxNefOJNc+hfjjBayRn2Q== - dependencies: - chalk "^4.1.2" - maxmin "^3.0.0" - uglify-js "^3.16.1" - uri-path "^1.0.0" - -grunt-contrib-watch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4" - integrity sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg== - dependencies: - async "^2.6.0" - gaze "^1.1.0" - lodash "^4.17.10" - tiny-lr "^1.1.1" - -grunt-eslint@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/grunt-eslint/-/grunt-eslint-24.3.0.tgz#2b82d107f6963de91daf58cf8311221a806a6de5" - integrity sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ== - dependencies: - chalk "^4.1.2" - eslint "^8.44.0" - -grunt-exec@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz#881f868d64098788fddaf22fa25d8572a9d64dc7" - integrity sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg== - -grunt-karma@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/grunt-karma/-/grunt-karma-4.0.2.tgz#9a8b7b4ea4b0b537c1412d51477181d55bf96f09" - integrity sha512-4+iBBkXZjHHMDAG5kpHCdDUqlSEBJ6sqouLMRf0p+QB8wGMs300DtaCQphHqd7pM3gpXoGVT3yRRsT7KOZpJMA== - dependencies: - lodash "^4.17.10" - -grunt-known-options@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-2.0.0.tgz#cac641e897f9a0a680b8c9839803d35f3325103c" - integrity sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA== - -grunt-legacy-log-utils@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz#49a8c7dc74051476dcc116c32faf9db8646856ef" - integrity sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw== - dependencies: - chalk "~4.1.0" - lodash "~4.17.19" - -grunt-legacy-log@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz#1c6eaf92371ea415af31ea84ce50d434ef6d39c4" - integrity sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA== - dependencies: - colors "~1.1.2" - grunt-legacy-log-utils "~2.1.0" - hooker "~0.2.3" - lodash "~4.17.19" - -grunt-legacy-util@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz#0f929d13a2faf9988c9917c82bff609e2d9ba255" - integrity sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w== - dependencies: - async "~3.2.0" - exit "~0.1.2" - getobject "~1.0.0" - hooker "~0.2.3" - lodash "~4.17.21" - underscore.string "~3.3.5" - which "~2.0.2" - -grunt-mocha-istanbul@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/grunt-mocha-istanbul/-/grunt-mocha-istanbul-5.0.2.tgz#23929a8b3f45a66c5fab1f6146e62b58418b7882" - integrity sha1-I5Kaiz9Fpmxfqx9hRuYrWEGLeII= - -grunt-mocha-test@^0.13.3: - version "0.13.3" - resolved "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.13.3.tgz#9028472b615bda6ddeaa7b30a5a164e9805de005" - integrity sha512-zQGEsi3d+ViPPi7/4jcj78afKKAKiAA5n61pknQYi25Ugik+aNOuRmiOkmb8mN2CeG8YxT+YdT1H1Q7B/eNkoQ== - dependencies: - hooker "^0.2.3" - mkdirp "^0.5.0" - -grunt-webpack@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/grunt-webpack/-/grunt-webpack-6.0.0.tgz#e16ad946a90b788430157369e3a92b87d90efa3d" - integrity sha512-FtRVTGJGuV9Ic/OrCR80p5u601e0ekvTyHo7vnwVo3XlvRh5wR1ATAVT9FnnobHqZnQ/DeF84W97si5+roUWEA== - dependencies: - deep-for-each "^3.0.0" - lodash "^4.17.21" - -grunt@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.6.1.tgz#0b4dd1524f26676dcf45d8f636b8d9061a8ede16" - integrity sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA== - dependencies: - dateformat "~4.6.2" - eventemitter2 "~0.4.13" - exit "~0.1.2" - findup-sync "~5.0.0" - glob "~7.1.6" - grunt-cli "~1.4.3" - grunt-known-options "~2.0.0" - grunt-legacy-log "~3.0.0" - grunt-legacy-util "~2.0.1" - iconv-lite "~0.6.3" - js-yaml "~3.14.0" - minimatch "~3.0.4" - nopt "~3.0.6" - -gzip-size@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.0.1: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -homedir-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= - dependencies: - parse-passwd "^1.0.0" - -hooker@^0.2.3, hooker@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^2.4.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@~0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -interpret@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-network-error@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" - integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-windows@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isbinaryfile@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@babel/cli@npm:^7.24.1": + version: 7.24.8 + resolution: "@babel/cli@npm:7.24.8" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" + chokidar: "npm:^3.4.0" + commander: "npm:^6.2.0" + convert-source-map: "npm:^2.0.0" + fs-readdir-recursive: "npm:^1.1.0" + glob: "npm:^7.2.0" + make-dir: "npm:^2.1.0" + slash: "npm:^2.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + dependenciesMeta: + "@nicolo-ribaudo/chokidar-2": + optional: true + chokidar: + optional: true + bin: + babel: ./bin/babel.js + babel-external-helpers: ./bin/babel-external-helpers.js + checksum: 10c0/b7f464ccb00db60aed63d71e980df823900d20c740bc2d9eb36c3abd4b3e2402cc438818382344085ef6603aeea2e6ee19af8f0ecb934966eccf077b87af7c7c + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": "npm:^7.24.7" + picocolors: "npm:^1.0.0" + checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/compat-data@npm:7.25.2" + checksum: 10c0/5bf1f14d6e5f0d37c19543e99209ff4a94bb97915e1ce01e5334a144aa08cd56b6e62ece8135dac77e126723d63d4d4b96fc603a12c43b88c28f4b5e070270c5 + languageName: node + linkType: hard + +"@babel/core@npm:^7.24.1": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.0" + "@babel/helper-compilation-targets": "npm:^7.25.2" + "@babel/helper-module-transforms": "npm:^7.25.2" + "@babel/helpers": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.0" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.2" + "@babel/types": "npm:^7.25.2" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/generator@npm:7.25.0" + dependencies: + "@babel/types": "npm:^7.25.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/d0e2dfcdc8bdbb5dded34b705ceebf2e0bc1b06795a1530e64fb6a3ccf313c189db7f60c1616effae48114e1a25adc75855bc4496f3779a396b3377bae718ce7 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + dependencies: + "@babel/types": "npm:^7.24.7" + checksum: 10c0/4679f7df4dffd5b3e26083ae65228116c3da34c3fff2c11ae11b259a61baec440f51e30fd236f7a0435b9d471acd93d0bc5a95df8213cbf02b1e083503d81b9a + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/0ed84abf848c79fb1cd4c1ddac12c771d32c1904d87fc3087f33cfdeb0c2e0db4e7892b74b407d9d8d0c000044f3645a7391a781f788da8410c290bb123a1f13 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": "npm:^7.25.2" + "@babel/helper-validator-option": "npm:^7.24.8" + browserslist: "npm:^4.23.1" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.24.7": + version: 7.25.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + "@babel/helper-member-expression-to-functions": "npm:^7.24.8" + "@babel/helper-optimise-call-expression": "npm:^7.24.7" + "@babel/helper-replace-supers": "npm:^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2f8ac36cfeb45d462432acea64c78312cc9180dda7aa9337b77017961e373c323065362d2452f3d6f8bffeb254ff3f7346ac1b25c8ad7b81db813a95924f4053 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0": + version: 7.25.2 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + regexpu-core: "npm:^5.3.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/85a7e3639c118856fb1113f54fb7e3bf7698171ddfd0cd6fccccd5426b3727bc1434fe7f69090441dcde327feef9de917e00d35e47ab820047057518dd675317 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.2": + version: 0.6.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/f777fe0ee1e467fdaaac059c39ed203bdc94ef2465fb873316e9e1acfc511a276263724b061e3b0af2f6d7ad3ff174f2bb368fde236a860e0f650fda43d7e022 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" + dependencies: + "@babel/traverse": "npm:^7.24.8" + "@babel/types": "npm:^7.24.8" + checksum: 10c0/7e14a5acc91f6cd26305a4441b82eb6f616bd70b096a4d2099a968f16b26d50207eec0b9ebfc466fefd62bd91587ac3be878117cdfec819b7151911183cb0e5a + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": "npm:^7.24.7" + "@babel/helper-simple-access": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.2" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" + dependencies: + "@babel/types": "npm:^7.24.7" + checksum: 10c0/ca6a9884705dea5c95a8b3ce132d1e3f2ae951ff74987d400d1d9c215dae9c0f9e29924d8f8e131e116533d182675bc261927be72f6a9a2968eaeeaa51eb1d0f + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.24.7, @babel/helper-remap-async-to-generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + "@babel/helper-wrap-function": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0d17b5f7bb6a607edc9cc62fff8056dd9f341bf2f919884f97b99170d143022a5e7ae57922c4891e4fc360ad291e708d2f8cd8989f1d3cd7a17600159984f5a6 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.24.7, @babel/helper-replace-supers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-replace-supers@npm:7.25.0" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.24.8" + "@babel/helper-optimise-call-expression": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b4b6650ab3d56c39a259367cd97f8df2f21c9cebb3716fea7bca40a150f8847bfb82f481e98927c7c6579b48a977b5a8f77318a1c6aeb497f41ecd6dbc3fdfef + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/e3a9b8ac9c262ac976a1bcb5fe59694db5e6f0b4f9e7bdba5c7693b8b5e28113c23bdaa60fe8d3ec32a337091b67720b2053bcb3d5655f5406536c3d0584242b + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-wrap-function@npm:7.25.0" + dependencies: + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/d54601a98384c191cbc1ff07b03a19e288ef8d5c6bfafe270b2a303d96e7304eb296002921ed464cc1b105a547d1db146eb86b0be617924dee1ba1b379cdc216 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helpers@npm:7.25.0" + dependencies: + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.24.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + languageName: node + linkType: hard + +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.7.0": + version: 7.25.3 + resolution: "@babel/parser@npm:7.25.3" + dependencies: + "@babel/types": "npm:^7.25.2" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/874b01349aedb805d6694f867a752fdc7469778fad76aca4548d2cc6ce96087c3ba5fb917a6f8d05d2d1a74aae309b5f50f1a4dba035f5a2c9fcfe6e106d2c4e + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/traverse": "npm:^7.25.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/814b4d3f102e7556a5053d1acf57ef601cfcff39a2c81b8cdc6a5c842e3cb9838f5925d1466a5f1e6416e74c9c83586a3c07fbd7fb8610a396c2becdf9ae5790 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9645a1f47b3750acadb1353c02e71cc712d072aafe5ce115ed3a886bc14c5d9200cfb0b5b5e60e813baa549b800cf798f8714019fd246c699053cf68c428e426 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ed1ce1c90cac46c01825339fd0f2a96fa071b016fb819d8dfaf8e96300eae30e74870cb47e4dc80d4ce2fb287869f102878b4f3b35bc927fec8b1d0d76bcf612 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/aeb6e7aa363a47f815cf956ea1053c5dd8b786a17799f065c9688ba4b0051fe7565d258bbe9400bfcbfb3114cb9fda66983e10afe4d750bc70ff75403e15dd36 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/traverse": "npm:^7.25.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/45988025537a9d4a27b610fd696a18fd9ba9336621a69b4fb40560eeb10c79657f85c92a37f30c7c8fb29c22970eea0b373315795a891f1a05549a6cfe5a6bfe + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b82c53e095274ee71c248551352d73441cf65b3b3fc0107258ba4e9aef7090772a425442b3ed1c396fa207d0efafde8929c87a17d3c885b3ca2021316e87e246 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eccc54d0f03c96d0eec7a6e2fa124dadbc7298345b62ffc4238f173308c4325b5598f139695ff05a95cf78412ef6903599e4b814496612bf39aad4715a16375b + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6ac05a54e5582f34ac6d5dc26499e227227ec1c7fa6fc8de1f3d40c275f140d3907f79bbbd49304da2d7008a5ecafb219d0b71d78ee3290ca22020d878041245 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-remap-async-to-generator": "npm:^7.25.0" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/traverse": "npm:^7.25.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5348c3a33d16e0d62f13482c6fa432185ba096d58880b08d42450f7db662d6b03e6149d495c8620897dcd3da35061068cbd6c09da7d0ec95743e55a788809e4e + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-remap-async-to-generator": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/83c82e243898875af8457972a26ab29baf8a2078768ee9f35141eb3edff0f84b165582a2ff73e90a9e08f5922bf813dbf15a85c1213654385198f4591c0dc45d + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/113e86de4612ae91773ff5cb6b980f01e1da7e26ae6f6012127415d7ae144e74987bc23feb97f63ba4bc699331490ddea36eac004d76a20d5369e4cc6a7f61cd + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/382931c75a5d0ea560387e76cb57b03461300527e4784efcb2fb62f36c1eb0ab331327b6034def256baa0cad9050925a61f9c0d56261b6afd6a29c3065fb0bd4 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/75018a466c7ede3d2397e158891c224ba7fca72864506ce067ddbc02fc65191d44da4d6379c996d0c7f09019e26b5c3f5f1d3a639cd98366519723886f0689d0 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/b0ade39a3d09dce886f79dbd5907c3d99b48167eddb6b9bbde24a0598129654d7017e611c20494cdbea48b07ac14397cd97ea34e3754bbb2abae4e698128eccb + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-classes@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + "@babel/helper-compilation-targets": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-replace-supers": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.0" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4451dccf8a7979427ae042afe381233f30764a8072faf0de1337a4fc297c6d7cb40df9e28931ac096e5b56392d0cd97d3ce10aee68288150a8701624d362a791 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/template": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/25636dbc1f605c0b8bc60aa58628a916b689473d11551c9864a855142e36742fe62d4a70400ba3b74902338e77fb3d940376c0a0ba154b6b7ec5367175233b49 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/804968c1d5f5072c717505296c1e5d5ec33e90550423de66de82bbcb78157156e8470bbe77a04ab8c710a88a06360a30103cf223ac7eff4829adedd6150de5ce + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/793f14c9494972d294b7e7b97b747f47874b6d57d7804d3443c701becf5db192c9311be6a1835c07664486df1f5c60d33196c36fb7e11a53015e476b4c145b33 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/75ff7ec1117ac500e77bf20a144411d39c0fdd038f108eec061724123ce6d1bb8d5bd27968e466573ee70014f8be0043361cdb0ef388f8a182d1d97ad67e51b9 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.0" + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/1c9b57ddd9b33696e88911d0e7975e1573ebc46219c4b30eb1dc746cbb71aedfac6f6dab7fdfdec54dd58f31468bf6ab56b157661ea4ffe58f906d71f89544c8 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eeda48372efd0a5103cb22dadb13563c975bce18ae85daafbb47d57bb9665d187da9d4fe8d07ac0a6e1288afcfcb73e4e5618bf75ff63fddf9736bfbf225203b + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ace3e11c94041b88848552ba8feb39ae4d6cad3696d439ff51445bd2882d8b8775d85a26c2c0edb9b5e38c9e6013cc11b0dea89ec8f93c7d9d7ee95e3645078c + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4e144d7f1c57bc63b4899dbbbdfed0880f2daa75ea9c7251c7997f106e4b390dc362175ab7830f11358cb21f6b972ca10a43a2e56cd789065f7606b082674c0c + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-for-of@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/77629b1173e55d07416f05ba7353caa09d2c2149da2ca26721ab812209b63689d1be45116b68eadc011c49ced59daf5320835b15245eb7ae93ae0c5e8277cfc0 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/plugin-transform-function-name@npm:7.25.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/traverse": "npm:^7.25.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e74912174d5e33d1418b840443c2e226a7b76cc017c1ed20ee30a566e4f1794d4a123be03180da046241576e8b692731807ba1f52608922acf1cb2cb6957593f + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/17c72cd5bf3e90e722aabd333559275f3309e3fa0b9cea8c2944ab83ae01502c71a2be05da5101edc02b3fc8df15a8dbb9b861cbfcc8a52bf5e797cf01d3a40a + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/plugin-transform-literals@npm:7.25.2" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0796883217b0885d37e7f6d350773be349e469a812b6bf11ccf862a6edf65103d3e7c849529d65381b441685c12e756751d8c2489a0fd3f8139bb5ef93185f58 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dbe882eb9053931f2ab332c50fc7c2a10ef507d6421bd9831adbb4cb7c9f8e1e5fbac4fbd2e007f6a1bf1df1843547559434012f118084dc0bf42cda3b106272 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e789ae359bdf2d20e90bedef18dfdbd965c9ebae1cee398474a0c349590fda7c8b874e1a2ceee62e47e5e6ec1730e76b0f24e502164357571854271fc12cc684 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6df7de7fce34117ca4b2fa07949b12274c03668cbfe21481c4037b6300796d50ae40f4f170527b61b70a67f26db906747797e30dbd0d9809a441b6e220b5728f + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.24.1, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" + dependencies: + "@babel/helper-module-transforms": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-simple-access": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f1cf552307ebfced20d3907c1dd8be941b277f0364aa655e2b5fee828c84c54065745183104dae86f1f93ea0406db970a463ef7ceaaed897623748e99640e5a7 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.0" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fca6198da71237e4bb1274b3b67a0c81d56013c9535361242b6bfa87d70a9597854aadb45d4d8203369be4a655e158be2a5d20af0040b1f8d1bfc47db3ad7b68 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7791d290121db210e4338b94b4a069a1a79e4c7a8d7638d8159a97b281851bbed3048dac87a4ae718ad963005e6c14a5d28e6db2eeb2b04e031cee92fb312f85 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/41a0b0f2d0886318237440aa3b489f6d0305361d8671121777d9ff89f9f6de9d0c02ce93625049061426c8994064ef64deae8b819d1b14c00374a6a2336fb5d9 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-new-target@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2540808a35e1a978e537334c43dab439cf24c93e7beb213a2e71902f6710e60e0184316643790c0a6644e7a8021e52f7ab8165e6b3e2d6651be07bdf517b67df + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7243c8ff734ed5ef759dd8768773c4b443c12e792727e759a1aec2c7fa2bfdd24f1ecb42e292a7b3d8bd3d7f7b861cf256a8eb4ba144fc9cc463892c303083d9 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e18e09ca5a6342645d00ede477731aa6e8714ff357efc9d7cda5934f1703b3b6fb7d3298dce3ce3ba53e9ff1158eab8f1aadc68874cc21a6099d33a1ca457789 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9ad64bc003f583030f9da50614b485852f8edac93f8faf5d1cd855201a4852f37c5255ae4daf70dd4375bdd4874e16e39b91f680d4668ec219ba05441ce286eb + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-super@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-replace-supers": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/770cebb4b4e1872c216b17069db9a13b87dfee747d359dc56d9fcdd66e7544f92dc6ab1861a4e7e0528196aaff2444e4f17dc84efd8eaf162d542b4ba0943869 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1e2f10a018f7d03b3bde6c0b70d063df8d5dd5209861d4467726cf834f5e3d354e2276079dc226aa8e6ece35f5c9b264d64b8229a8bb232829c01e561bcfb07a + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ffbe1aad7dec7c9aa2bf6ceb4b2f91f96815b2784f2879bde80e46934f59d64a12cb2c6262e40897c4754d77d2c35d8a5cfed63044fdebf94978b1ed3d14b17 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-parameters@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/53bf190d6926771545d5184f1f5f3f5144d0f04f170799ad46a43f683a01fab8d5fe4d2196cf246774530990c31fe1f2b9f0def39f0a5ddbb2340b924f5edf01 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b7bf923b738fbe3ad6c33b260e0a7451be288edfe4ef516303fa787a1870cd87533bfbf61abb779c22ed003c2fc484dec2436fe75a48756f686c0241173d364 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + "@babel/helper-create-class-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c6fa7defb90b1b0ed46f24ff94ff2e77f44c1f478d1090e81712f33cf992dda5ba347016f030082a2f770138bac6f4a9c2c1565e9f767a125901c77dd9c239ba + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/52564b58f3d111dc02d241d5892a4b01512e98dfdf6ef11b0ed62f8b11b0acacccef0fc229b44114fe8d1a57a8b70780b11bdd18b807d3754a781a07d8f57433 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d2dc2c788fdae9d97217e70d46ba8ca9db0035c398dc3e161552b0c437113719a75c04f201f9c91ddc8d28a1da60d0b0853f616dead98a396abb9c845c44892b + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2229de2768615e7f5dc0bbc55bc121b5678fd6d2febd46c74a58e42bb894d74cd5955c805880f4e02d0e1cf94f6886270eda7fafc1be9305a1ec3b9fd1d063f5 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/41b155bdbb3be66618358488bf7731b3b2e8fff2de3dbfd541847720a9debfcec14db06a117abedd03c9cd786db20a79e2a86509a4f19513f6e1b610520905cf + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-spread@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/facba1553035f76b0d2930d4ada89a8cd0f45b79579afd35baefbfaf12e3b86096995f4b0c402cf9ee23b3f2ea0a4460c3b1ec0c192d340962c948bb223d4e66 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5a74ed2ed0a3ab51c3d15fcaf09d9e2fe915823535c7a4d7b019813177d559b69677090e189ec3d5d08b619483eb5ad371fbcfbbff5ace2a76ba33ee566a1109 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3630f966257bcace122f04d3157416a09d40768c44c3a800855da81146b009187daa21859d1c3b7d13f4e19e8888e60613964b175b2275d451200fb6d8d6cfe6 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2f570a4fbbdc5fd85f48165a97452826560051e3b8efb48c3bb0a0a33ee8485633439e7b71bfe3ef705583a1df43f854f49125bd759abdedc195b2cf7e60012a + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8b18e2e66af33471a6971289492beff5c240e56727331db1d34c4338a6a368a82a7ed6d57ec911001b6d65643aed76531e1e7cac93265fb3fb2717f54d845e69 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bc57656eb94584d1b74a385d378818ac2b3fca642e3f649fead8da5fb3f9de22f8461185936915dfb33d5a9104e62e7a47828331248b09d28bb2d59e9276de3e + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/83f72a345b751566b601dc4d07e9f2c8f1bc0e0c6f7abb56ceb3095b3c9d304de73f85f2f477a09f8cc7edd5e65afd0ff9e376cdbcbea33bc0c28f3705b38fd9 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7457c0ee8e80a80cb6fdc1fe54ab115b52815627616ce9151be8ef292fc99d04a910ec24f11382b4f124b89374264396892b086886bd2a9c2317904d87c9b21b + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.24.1": + version: 7.25.3 + resolution: "@babel/preset-env@npm:7.25.3" + dependencies: + "@babel/compat-data": "npm:^7.25.2" + "@babel/helper-compilation-targets": "npm:^7.25.2" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-validator-option": "npm:^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.3" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.0" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + "@babel/plugin-syntax-import-assertions": "npm:^7.24.7" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.24.7" + "@babel/plugin-transform-class-static-block": "npm:^7.24.7" + "@babel/plugin-transform-classes": "npm:^7.25.0" + "@babel/plugin-transform-computed-properties": "npm:^7.24.7" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-dotall-regex": "npm:^7.24.7" + "@babel/plugin-transform-duplicate-keys": "npm:^7.24.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.0" + "@babel/plugin-transform-dynamic-import": "npm:^7.24.7" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.24.7" + "@babel/plugin-transform-export-namespace-from": "npm:^7.24.7" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-function-name": "npm:^7.25.1" + "@babel/plugin-transform-json-strings": "npm:^7.24.7" + "@babel/plugin-transform-literals": "npm:^7.25.2" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" + "@babel/plugin-transform-member-expression-literals": "npm:^7.24.7" + "@babel/plugin-transform-modules-amd": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.0" + "@babel/plugin-transform-modules-umd": "npm:^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-new-target": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-object-super": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-property-literals": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-reserved-words": "npm:^7.24.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" + "@babel/plugin-transform-spread": "npm:^7.24.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" + "@babel/plugin-transform-template-literals": "npm:^7.24.7" + "@babel/plugin-transform-typeof-symbol": "npm:^7.24.8" + "@babel/plugin-transform-unicode-escapes": "npm:^7.24.7" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.24.7" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.24.7" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.4" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.37.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9287dc2e296fe2aa3367d84c2a799db17c9d1e48bba86525f47c6f51f5ba2e2cce454f45f4ae2ef928f9077c0640b04556b55b94835675ceeca94a0c5133205e + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/register@npm:^7.23.7": + version: 7.24.6 + resolution: "@babel/register@npm:7.24.6" + dependencies: + clone-deep: "npm:^4.0.1" + find-cache-dir: "npm:^2.0.0" + make-dir: "npm:^2.1.0" + pirates: "npm:^4.0.6" + source-map-support: "npm:^0.5.16" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e0c6d6c8945dd792f83dc7bd6be468246b3aedd62b32620e56a3f3328389b577a6261d4338a9de9519f4eadddfef5aa0fdc1f92082c778dedddcc5854e357f09 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.8.4": + version: 7.25.0 + resolution: "@babel/runtime@npm:7.25.0" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/bd3faf246170826cef2071a94d7b47b49d532351360ecd17722d03f6713fd93a3eb3dbd9518faa778d5e8ccad7392a7a604e56bd37aaad3f3aa68d619ccd983d + languageName: node + linkType: hard + +"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/parser": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.7.0": + version: 7.25.3 + resolution: "@babel/traverse@npm:7.25.3" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.2" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/4c8a1966fa90b53a783a4afd2fcdaa6ab1a912e6621dca9fcc6633e80ccb9491620e88caf73b537da4e16cefd537b548c87d7087868d5b0066414dea375c0e9b + languageName: node + linkType: hard + +"@babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0": + version: 7.25.2 + resolution: "@babel/types@npm:7.25.2" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/e489435856be239f8cc1120c90a197e4c2865385121908e5edb7223cfdff3768cba18f489adfe0c26955d9e7bbb1fb10625bc2517505908ceb0af848989bd864 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@colors/colors@npm:^1.6.0": + version: 1.6.0 + resolution: "@colors/colors@npm:1.6.0" + checksum: 10c0/9328a0778a5b0db243af54455b79a69e3fb21122d6c15ef9e9fcc94881d8d17352d8b2b2590f9bdd46fac5c2d6c1636dcfc14358a20c70e22daf89e1a759b629 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.6.1": + version: 4.11.0 + resolution: "@eslint-community/regexpp@npm:4.11.0" + checksum: 10c0/0f6328869b2741e2794da4ad80beac55cba7de2d3b44f796a60955b0586212ec75e6b0253291fd4aad2100ad471d1480d8895f2b54f1605439ba4c875e05e523 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.0": + version: 8.57.0 + resolution: "@eslint/js@npm:8.57.0" + checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.14": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@jsonjoy.com/base64@npm:^1.1.1": + version: 1.1.2 + resolution: "@jsonjoy.com/base64@npm:1.1.2" + peerDependencies: + tslib: 2 + checksum: 10c0/88717945f66dc89bf58ce75624c99fe6a5c9a0c8614e26d03e406447b28abff80c69fb37dabe5aafef1862cf315071ae66e5c85f6018b437d95f8d13d235e6eb + languageName: node + linkType: hard + +"@jsonjoy.com/json-pack@npm:^1.0.3": + version: 1.0.4 + resolution: "@jsonjoy.com/json-pack@npm:1.0.4" + dependencies: + "@jsonjoy.com/base64": "npm:^1.1.1" + "@jsonjoy.com/util": "npm:^1.1.2" + hyperdyperid: "npm:^1.2.0" + thingies: "npm:^1.20.0" + peerDependencies: + tslib: 2 + checksum: 10c0/c06e57c33d3c18ab31af163e04f77cb759f68386c41375d1e1bd6c28beb1a3cc82217cc3b26f4c94b7385ed28a61e59b01498cf4cec562fd9e464b17eab0cf16 + languageName: node + linkType: hard + +"@jsonjoy.com/util@npm:^1.1.2, @jsonjoy.com/util@npm:^1.3.0": + version: 1.3.0 + resolution: "@jsonjoy.com/util@npm:1.3.0" + peerDependencies: + tslib: 2 + checksum: 10c0/892bbe2073bb20bf392dd4dfed77881c6f7ae6a0cc5802e537fe3cbeeadde7738de5369f2d4529156efc5e98d9d43b15c85906ddb79140e322f1b26eaaf854df + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 10c0/14a0112bd59615eef9e3446fea018045720cd3da85a98f801a685a818b0d96ef2a1f7227e8d271def546b2e2a0fe91ef915ba9dc912ab7967d2317b1a051d66b + languageName: node + linkType: hard + +"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": + version: 2.1.8-no-fsevents.3 + resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" + checksum: 10c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.20.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-android-arm64@npm:4.20.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.20.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.20.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.20.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.20.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.20.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.20.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.20.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.20.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.20.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.20.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.20.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.20.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.20.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.20.0": + version: 4.20.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.20.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@socket.io/component-emitter@npm:~3.1.0": + version: 3.1.2 + resolution: "@socket.io/component-emitter@npm:3.1.2" + checksum: 10c0/c4242bad66f67e6f7b712733d25b43cbb9e19a595c8701c3ad99cbeb5901555f78b095e24852f862fffb43e96f1d8552e62def885ca82ae1bb05da3668fd87d7 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.13": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.5.4": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 10c0/f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 + languageName: node + linkType: hard + +"@types/cors@npm:^2.8.12": + version: 2.8.17 + resolution: "@types/cors@npm:2.8.17" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/457364c28c89f3d9ed34800e1de5c6eaaf344d1bb39af122f013322a50bc606eb2aa6f63de4e41a7a08ba7ef454473926c94a830636723da45bf786df032696d + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.0 + resolution: "@types/eslint@npm:9.6.0" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/69301356bc73b85e381ae00931291de2e96d1cc49a112c592c74ee32b2f85412203dea6a333b4315fd9839bb14f364f265cbfe7743fc5a78492ee0326dd6a2c1 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.19.5 + resolution: "@types/express-serve-static-core@npm:4.19.5" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/ba8d8d976ab797b2602c60e728802ff0c98a00f13d420d82770f3661b67fa36ea9d3be0b94f2ddd632afe1fbc6e41620008b01db7e4fabdd71a2beb5539b0725 + languageName: node + linkType: hard + +"@types/express@npm:*, @types/express@npm:^4.17.21": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.14 + resolution: "@types/http-proxy@npm:1.17.14" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/c4bffd87be9aff7e879c05bd2c28716220e0eb39788e3f8d314eee665324ad8f5f0919041cbd710254d553cd9cea023f8b776d4b1ec31d2188eac60af18c3022 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:>=10.0.0": + version: 22.1.0 + resolution: "@types/node@npm:22.1.0" + dependencies: + undici-types: "npm:~6.13.0" + checksum: 10c0/553dafcb842b889c036d43b390d464e8ffcf3ca455ddd5b1a1ef98396381eafbeb0c112a15cc6bf9662b72bc25fc45efc4b6f604760e1e84c410f1b7936c488b + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.15 + resolution: "@types/qs@npm:6.9.15" + checksum: 10c0/49c5ff75ca3adb18a1939310042d273c9fc55920861bd8e5100c8a923b3cda90d759e1a95e18334092da1c8f7b820084687770c83a1ccef04fb2c6908117c823 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + +"@types/retry@npm:0.12.2": + version: 0.12.2 + resolution: "@types/retry@npm:0.12.2" + checksum: 10c0/07481551a988cc90b423351919928b9ddcd14e3f5591cac3ab950851bb20646e55a10e89141b38bc3093d2056d4df73700b22ff2612976ac86a6367862381884 + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.4": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.15.5": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/26ec864d3a626ea627f8b09c122b623499d2221bbf2f470127f4c9ebfe92bd8a6bb5157001372d4c4bd0dd37a1691620217d9dc4df5aa8f779f3fd996b1c60ae + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.36": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.10": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3fd77c9e4e05c24ce42bfc7647f7506b08c40a40fe2aea236ef6d4e96fc7cb4006a81ed1b28ec9c457e177a74a72924f4768b7b4652680b42dfd52bc380e15f9 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10c0/ba7f2b96c6e67e249df6156d02c69eb5f1bd18d5005303cdc42accb053bebbbde673826e54db0437c9748e97abd218366a1d13fa46859b23cde611b6b409998c + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: 10c0/0270724afb4601237410f7fd845ab58ccda1d5456a8783aadfb16eaaf3f2c9610c28e4a5bcb6ad880cde5183c82f7f116d5ccfc2310502439d33f14b6888b48a + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + checksum: 10c0/0546350724d285ae3c26e6fc444be4c3b5fb824f3be0ec8ceb474179dc3f4430336dd2e36a44b3e3a1a6815960e5eec98cd9b3a8ec66dc53d86daedd3296a6a2 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-opt": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + "@webassemblyjs/wast-printer": "npm:1.12.1" + checksum: 10c0/972f5e6c522890743999e0ed45260aae728098801c6128856b310dd21f1ee63435fc7b518e30e0ba1cdafd0d1e38275829c1e4451c3536a1d9e726e07a5bba0b + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/1e257288177af9fa34c69cab94f4d9036ebed611f77f3897c988874e75182eeeec759c79b89a7a49dd24624fc2d3d48d5580b62b67c4a1c9bfbdcd266b281c16 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + checksum: 10c0/992a45e1f1871033c36987459436ab4e6430642ca49328e6e32a13de9106fe69ae6c0ac27d7050efd76851e502d11cd1ac0e06b55655dfa889ad82f11a2712fb + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/e85cec1acad07e5eb65b92d37c8e6ca09c6ca50d7ca58803a1532b452c7321050a0328c49810c337cc2dfd100c5326a54d5ebd1aa5c339ebe6ef10c250323a0e + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/39bf746eb7a79aa69953f194943bbc43bebae98bd7cadd4d8bc8c0df470ca6bf9d2b789effaa180e900fab4e2691983c1f7d41571458bd2a26267f2f0c73705a + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:1.0.x": + version: 1.0.9 + resolution: "abbrev@npm:1.0.9" + checksum: 10c0/214632e37c68f71d61d2ee920644a11c7b0cee08ddde96961b02ebe95ad86de0d56bd6762ff337bd9cf6e5c1431ce724babd28c110fce4b20d35f6fa87944d00 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 10c0/5926eaaead2326d5a86f322ff1b617b0f698aa61dc719a5baa0e9d955c9885cc71febac3fb5bacff71bbf2c4f9c12db2056883c68c53eb962c048b952e1e013d + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^6.0.7": + version: 6.4.2 + resolution: "acorn@npm:6.4.2" + bin: + acorn: bin/acorn + checksum: 10c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b + languageName: node + linkType: hard + +"acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + languageName: node + linkType: hard + +"ajv@npm:^6.10.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.9.1": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + +"amdefine@npm:>=0.0.4": + version: 1.0.1 + resolution: "amdefine@npm:1.0.1" + checksum: 10c0/ba8aa5d4ff5248b2ed067111e72644b36b5b7ae88d9a5a2c4223dddb3bdc9102db67291e0b414f59f12c6479ac6a365886bac72c7965e627cbc732e0962dd1ab + languageName: node + linkType: hard + +"ansi-colors@npm:3.2.3": + version: 3.2.3 + resolution: "ansi-colors@npm:3.2.3" + checksum: 10c0/bd742873b50f9c0c1e849194bbcc2d0e7cf9100ab953446612bb5b93b3bdbfc170da27f91af1c03442f4cb45040b0a17a866a0270021f90f958888b34d95cb73 + languageName: node + linkType: hard + +"ansi-escapes@npm:^3.2.0": + version: 3.2.0 + resolution: "ansi-escapes@npm:3.2.0" + checksum: 10c0/084e1ce38139ad2406f18a8e7efe2b850ddd06ce3c00f633392d1ce67756dab44fe290e573d09ef3c9a0cb13c12881e0e35a8f77a017d39a0a4ab85ae2fae04f + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b + languageName: node + linkType: hard + +"ansi-regex@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-regex@npm:3.0.1" + checksum: 10c0/d108a7498b8568caf4a46eea4f1784ab4e0dfb2e3f3938c697dee21443d622d765c958f2b7e2b9f6b9e55e2e2af0584eaa9915d51782b89a841c28e744e7a167 + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: 10c0/d36d34234d077e8770169d980fed7b2f3724bfa2a01da150ccd75ef9707c80e883d27cdf7a0eac2f145ac1d10a785a8a855cffd05b85f778629a0db62e7033da + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^2.2.1": + version: 2.2.1 + resolution: "ansi-styles@npm:2.2.1" + checksum: 10c0/7c68aed4f1857389e7a12f85537ea5b40d832656babbf511cc7ecd9efc52889b9c3e5653a71a6aade783c3c5e0aa223ad4ff8e83c27ac8a666514e6c79068cab + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:~3.1.1, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-each@npm:^1.0.1": + version: 1.0.1 + resolution: "array-each@npm:1.0.1" + checksum: 10c0/b5951ac450b560849143722d6785672ae71f5e9b061f11e7e2f775513a952e583e8bcedbba538a08049e235f5583756efec440fc6740a9b47b411cb487f65a9b + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + languageName: node + linkType: hard + +"array-slice@npm:^1.0.0": + version: 1.1.0 + resolution: "array-slice@npm:1.1.0" + checksum: 10c0/dfefd705905f428b6c4cace2a787f308b5a64db5411e33cdf8ff883b6643f1703e48ac152b74eea482f8f6765fdf78b5277e2bad7840be2b4d5c23777db3266f + languageName: node + linkType: hard + +"array.prototype.reduce@npm:^1.0.6": + version: 1.0.7 + resolution: "array.prototype.reduce@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-array-method-boxes-properly: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10c0/97aac907d7b15088d5b991bad79de96f95ea0d47a701a034e2dc816e0aabaed2fb401d7fe65ab6fda05eafa58319aa2d1bac404f515e162b81b3b61a51224db2 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b + languageName: node + linkType: hard + +"astral-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "astral-regex@npm:1.0.0" + checksum: 10c0/ca460207a19d84c65671e1a85940101522d42f31a450cdb8f93b3464e6daeaf4b58a362826a6c11c57e6cd1976403d197abb0447cfc2087993a29b35c6d63b63 + languageName: node + linkType: hard + +"async@npm:1.x": + version: 1.5.2 + resolution: "async@npm:1.5.2" + checksum: 10c0/9ee84592c393aad1047d1223004317ecc65a9a3f76101e0f4614a0818eac962e666510353400a3c9ea158df540579a293f486f3578e918c5e90a0f5ed52e8aea + languageName: node + linkType: hard + +"async@npm:^2.6.0": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: "npm:^4.17.14" + checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 + languageName: node + linkType: hard + +"async@npm:^3.2.3, async@npm:~3.2.0": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"babel-eslint@npm:^10.0.1": + version: 10.1.0 + resolution: "babel-eslint@npm:10.1.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + "@babel/parser": "npm:^7.7.0" + "@babel/traverse": "npm:^7.7.0" + "@babel/types": "npm:^7.7.0" + eslint-visitor-keys: "npm:^1.0.0" + resolve: "npm:^1.12.0" + peerDependencies: + eslint: ">= 4.12.1" + checksum: 10c0/a1596111871ce3615410a2ffb87ab8383b35a8c8e1942b47130cb12bca2578c8eb9d8e56c3c84f44d7abe716684f6794f2e6c1e5b4e6d09f171ae51670be44b9 + languageName: node + linkType: hard + +"babel-loader@npm:^9.1.3": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: "npm:^4.0.0" + schema-utils: "npm:^4.0.0" + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b2217bc8d5976cf8142453ed44daabf0b2e0e75518f24eac83b54a8892e87a88f1bd9089daa92fd25df979ecd0acfd29b6bc28c4182c1c46344cee15ef9bce84 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.4": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + core-js-compat: "npm:^3.38.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/3a69220471b07722c2ae6537310bf26b772514e12b601398082965459c838be70a0ca70b0662f0737070654ff6207673391221d48599abb4a2b27765206d9f79 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/bc541037cf7620bc84ddb75a1c0ce3288f90e7d2799c070a53f8a495c8c8ae0316447becb06f958dd25dcce2a2fce855d318ecfa48036a1ddb218d55aa38a744 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base64id@npm:2.0.0, base64id@npm:~2.0.0": + version: 2.0.0 + resolution: "base64id@npm:2.0.0" + checksum: 10c0/6919efd237ed44b9988cbfc33eca6f173a10e810ce50292b271a1a421aac7748ef232a64d1e6032b08f19aae48dce6ee8f66c5ae2c9e5066c82b884861d4d453 + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"body-parser@npm:1.20.2, body-parser@npm:^1.19.0": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" + dependencies: + bytes: "npm:3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.11.0" + raw-body: "npm:2.5.2" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10c0/06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 + languageName: node + linkType: hard + +"body@npm:^5.1.0": + version: 5.1.0 + resolution: "body@npm:5.1.0" + dependencies: + continuable-cache: "npm:^0.3.1" + error: "npm:^7.0.0" + raw-body: "npm:~1.1.0" + safe-json-parse: "npm:~1.0.1" + checksum: 10c0/38eaf2b625fb88f05ecfcb07d98ba0f9c6a3f46c418ce6a9f1ebbdbb1735f22374da2414468fb9fdd1f28324992731647fd468b75d6cbe9135823528f06ae130 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.2.1": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.0.0, brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browser-stdout@npm:1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 + languageName: node + linkType: hard + +"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: "npm:^1.0.30001646" + electron-to-chromium: "npm:^1.5.4" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" + bin: + browserslist: cli.js + checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"bundle-name@npm:^4.1.0": + version: 4.1.0 + resolution: "bundle-name@npm:4.1.0" + dependencies: + run-applescript: "npm:^7.0.0" + checksum: 10c0/8e575981e79c2bcf14d8b1c027a3775c095d362d1382312f444a7c861b0e21513c0bd8db5bd2b16e50ba0709fa622d4eab6b53192d222120305e68359daece29 + languageName: node + linkType: hard + +"bytes@npm:1": + version: 1.0.0 + resolution: "bytes@npm:1.0.0" + checksum: 10c0/46f38408f9bf41c7c82b4e8118ab22f3f83fcebeecc4b93a71867608a3f6f25ab446d72438054daf0059234f2522e3711a241a06a0836f9b5e3e025d2da8d9af + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001649 + resolution: "caniuse-lite@npm:1.0.30001649" + checksum: 10c0/0ca2f3776324acfc36d72a575e72ffd1408b91f0ac462a6f0aa08ea24d0d16e83f85f652e19d40e6d6d82ab0fb588740f948e7c88d2818fe6bcd68f70ca33acf + languageName: node + linkType: hard + +"chai@npm:^4.2.0": + version: 4.5.0 + resolution: "chai@npm:4.5.0" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.1.0" + checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d + languageName: node + linkType: hard + +"chalk@npm:^1.1.1": + version: 1.1.3 + resolution: "chalk@npm:1.1.3" + dependencies: + ansi-styles: "npm:^2.2.1" + escape-string-regexp: "npm:^1.0.2" + has-ansi: "npm:^2.0.0" + strip-ansi: "npm:^3.0.0" + supports-color: "npm:^2.0.0" + checksum: 10c0/28c3e399ec286bb3a7111fd4225ebedb0d7b813aef38a37bca7c498d032459c265ef43404201d5fbb8d888d29090899c95335b4c0cda13e8b126ff15c541cef8 + languageName: node + linkType: hard + +"chalk@npm:^2.0.1, chalk@npm:^2.1.0, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2, chalk@npm:~4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 + languageName: node + linkType: hard + +"chokidar@npm:3.3.0": + version: 3.3.0 + resolution: "chokidar@npm:3.3.0" + dependencies: + anymatch: "npm:~3.1.1" + braces: "npm:~3.0.2" + fsevents: "npm:~2.1.1" + glob-parent: "npm:~5.1.0" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.2.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/5db1f4353499f17dc4c3c397197fd003383c2d802df88ab52d41413c357754d7c894557c85e887bfa11bfac3c220677efae2bf4e5686d301571255d7c737077b + languageName: node + linkType: hard + +"chokidar@npm:^3.4.0, chokidar@npm:^3.5.1, chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-cursor@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-cursor@npm:2.1.0" + dependencies: + restore-cursor: "npm:^2.0.0" + checksum: 10c0/09ee6d8b5b818d840bf80ec9561eaf696672197d3a02a7daee2def96d5f52ce6e0bbe7afca754ccf14f04830b5a1b4556273e983507d5029f95bba3016618eda + languageName: node + linkType: hard + +"cli-width@npm:^2.0.0": + version: 2.2.1 + resolution: "cli-width@npm:2.2.1" + checksum: 10c0/e3a6d422d657ca111c630f69ee0f1a499e8f114eea158ccb2cdbedd19711edffa217093bbd43dafb34b68d1b1a3b5334126e51d059b9ec1d19afa53b42b3ef86 + languageName: node + linkType: hard + +"cliui@npm:^5.0.0": + version: 5.0.0 + resolution: "cliui@npm:5.0.0" + dependencies: + string-width: "npm:^3.1.0" + strip-ansi: "npm:^5.2.0" + wrap-ansi: "npm:^5.1.0" + checksum: 10c0/76142bf306965850a71efd10c9755bd7f447c7c20dd652e1c1ce27d987f862a3facb3cceb2909cef6f0cb363646ee7a1735e3dfdd49f29ed16d733d33e15e2f8 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"colorette@npm:^2.0.10": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"colors@npm:~1.1.2": + version: 1.1.2 + resolution: "colors@npm:1.1.2" + checksum: 10c0/21fa4c575e636d889187b4666988ff16a6464a845089ff7b5e0263883da8cfa9140029300ba67bc3e231f67a4eb610725f9e77cc1d74df47741b691a695aea11 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^6.2.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: "npm:>= 1.43.0 < 2" + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: "npm:~1.3.5" + bytes: "npm:3.0.0" + compressible: "npm:~2.0.16" + debug: "npm:2.6.9" + on-headers: "npm:~1.0.2" + safe-buffer: "npm:5.1.2" + vary: "npm:~1.1.2" + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + languageName: node + linkType: hard + +"connect@npm:^3.7.0": + version: 3.7.0 + resolution: "connect@npm:3.7.0" + dependencies: + debug: "npm:2.6.9" + finalhandler: "npm:1.1.2" + parseurl: "npm:~1.3.3" + utils-merge: "npm:1.0.1" + checksum: 10c0/f120c6116bb16a0a7d2703c0b4a0cd7ed787dc5ec91978097bf62aa967289020a9f41a9cd3c3276a7b92aaa36f382d2cd35fed7138fd466a55c8e9fdbed11ca8 + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + +"continuable-cache@npm:^0.3.1": + version: 0.3.1 + resolution: "continuable-cache@npm:0.3.1" + checksum: 10c0/389bfe22b6dee87849a0d65d9e474129c8a59b2fe5d31335d357163b47e0af000f557fd86c37ee1704f43ed54526e8582da3ced00a69c643b9400bad352de3fc + languageName: node + linkType: hard + +"convert-source-map@npm:^1.1.1": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + languageName: node + linkType: hard + +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 + languageName: node + linkType: hard + +"cookie@npm:~0.4.1": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": + version: 3.38.0 + resolution: "core-js-compat@npm:3.38.0" + dependencies: + browserslist: "npm:^4.23.3" + checksum: 10c0/9d653a448b8a491034358d2f052e63dda86f75fb65646e2d313a938212470ba1c2f5a83bf31cc583d6c87a9e8d7b0d49458447cab2ff36c4caa097ae381de336 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cors@npm:~2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: "npm:^4" + vary: "npm:^1" + checksum: 10c0/373702b7999409922da80de4a61938aabba6929aea5b6fd9096fefb9e8342f626c0ebd7507b0e8b0b311380744cc985f27edebc0a26e0ddb784b54e1085de761 + languageName: node + linkType: hard + +"cross-spawn@npm:^6.0.5": + version: 6.0.5 + resolution: "cross-spawn@npm:6.0.5" + dependencies: + nice-try: "npm:^1.0.4" + path-key: "npm:^2.0.1" + semver: "npm:^5.5.0" + shebang-command: "npm:^1.2.0" + which: "npm:^1.2.9" + checksum: 10c0/e05544722e9d7189b4292c66e42b7abeb21db0d07c91b785f4ae5fefceb1f89e626da2703744657b287e86dcd4af57b54567cef75159957ff7a8a761d9055012 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"custom-event@npm:~1.0.0": + version: 1.0.1 + resolution: "custom-event@npm:1.0.1" + checksum: 10c0/86cd8497328b1e17dcda894c8df34a73b7a99f915123940d39b33c709482b2d3a2e689cd5e79e4775eb4167227689f57a2ae2f99a3f0bc9c54c0ac1b06853bd5 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + languageName: node + linkType: hard + +"date-format@npm:^4.0.14": + version: 4.0.14 + resolution: "date-format@npm:4.0.14" + checksum: 10c0/1c67a4d77c677bb880328c81d81f5b9ed7fbf672bdaff74e5a0f7314b21188f3a829b06acf120c70cc1df876a7724e3e5c23d511e86d64656a3035a76ac3930b + languageName: node + linkType: hard + +"dateformat@npm:~4.6.2": + version: 4.6.3 + resolution: "dateformat@npm:4.6.3" + checksum: 10c0/e2023b905e8cfe2eb8444fb558562b524807a51cdfe712570f360f873271600b5c94aebffaf11efb285e2c072264a7cf243eadb68f3eba0f8cc85fb86cd25df6 + languageName: node + linkType: hard + +"debug@npm:2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:3.2.6": + version: 3.2.6 + resolution: "debug@npm:3.2.6" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/406ae034424c5570c83bb7f7baf6a2321ace5b94d6f0032ec796c686e277a55bbb575712bb9e6f204e044b1a8c31981ba97fab725a09fcdc7f85cd89daf4de30 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": + version: 4.3.6 + resolution: "debug@npm:4.3.6" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285 + languageName: node + linkType: hard + +"debug@npm:^3.1.0": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"deep-eql@npm:^4.1.3": + version: 4.1.4 + resolution: "deep-eql@npm:4.1.4" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 + languageName: node + linkType: hard + +"deep-for-each@npm:^3.0.0": + version: 3.0.0 + resolution: "deep-for-each@npm:3.0.0" + dependencies: + lodash.isplainobject: "npm:^4.0.6" + checksum: 10c0/52e5cb07b57443c38f68647be729aff7f311198d700d61a56f43851ea2473d8a97ac5f0c480adb50137ef03f3b5b8ddb9bc139286e98c81dd8686fe9f7df04cf + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.2, deep-is@npm:~0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"default-browser-id@npm:^5.0.0": + version: 5.0.0 + resolution: "default-browser-id@npm:5.0.0" + checksum: 10c0/957fb886502594c8e645e812dfe93dba30ed82e8460d20ce39c53c5b0f3e2afb6ceaec2249083b90bdfbb4cb0f34e1f73fde3d68cac00becdbcfd894156b5ead + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.2.1 + resolution: "default-browser@npm:5.2.1" + dependencies: + bundle-name: "npm:^4.1.0" + default-browser-id: "npm:^5.0.0" + checksum: 10c0/73f17dc3c58026c55bb5538749597db31f9561c0193cd98604144b704a981c95a466f8ecc3c2db63d8bfd04fb0d426904834cfc91ae510c6aeb97e13c5167c4d + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: "npm:^5.0.0" + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.2, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + languageName: node + linkType: hard + +"detect-file@npm:^1.0.0": + version: 1.0.0 + resolution: "detect-file@npm:1.0.0" + checksum: 10c0/c782a5f992047944c39d337c82f5d1d21d65d1378986d46c354df9d9ec6d5f356bca0182969c11b08b9b8a7af8727b3c2d5a9fad0b022be4a3bf4c216f63ed07 + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + languageName: node + linkType: hard + +"di@npm:^0.0.1": + version: 0.0.1 + resolution: "di@npm:0.0.1" + checksum: 10c0/fbca4cc93e8c493d50f82df3a9ecaa5d8b2935674aabddeb8f68db3ab03c942c201f9c3d920de094407392ee6f488eac16b96f500c0ea6b408634864b7b939d1 + languageName: node + linkType: hard + +"diff@npm:3.5.0": + version: 3.5.0 + resolution: "diff@npm:3.5.0" + checksum: 10c0/fc62d5ba9f6d1b8b5833380969037007913d4886997838c247c54ec6934f09ae5a07e17ae28b1f016018149d81df8ad89306f52eac1afa899e0bed49015a64d1 + languageName: node + linkType: hard + +"diff@workspace:.": + version: 0.0.0-use.local + resolution: "diff@workspace:." + dependencies: + "@babel/cli": "npm:^7.24.1" + "@babel/core": "npm:^7.24.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.1" + "@babel/preset-env": "npm:^7.24.1" + "@babel/register": "npm:^7.23.7" + "@colors/colors": "npm:^1.6.0" + babel-eslint: "npm:^10.0.1" + babel-loader: "npm:^9.1.3" + chai: "npm:^4.2.0" + eslint: "npm:^5.12.0" + grunt: "npm:^1.6.1" + grunt-babel: "npm:^8.0.0" + grunt-cli: "npm:^1.4.3" + grunt-contrib-clean: "npm:^2.0.1" + grunt-contrib-copy: "npm:^1.0.0" + grunt-contrib-uglify: "npm:^5.2.2" + grunt-contrib-watch: "npm:^1.1.0" + grunt-eslint: "npm:^24.3.0" + grunt-exec: "npm:^3.0.0" + grunt-karma: "npm:^4.0.2" + grunt-mocha-istanbul: "npm:^5.0.2" + grunt-mocha-test: "npm:^0.13.3" + grunt-webpack: "npm:^6.0.0" + istanbul: "github:kpdecker/istanbul" + karma: "npm:^6.4.3" + karma-chrome-launcher: "npm:^3.2.0" + karma-mocha: "npm:^2.0.1" + karma-mocha-reporter: "npm:^2.2.5" + karma-sourcemap-loader: "npm:^0.4.0" + karma-webpack: "npm:^5.0.1" + mocha: "npm:^7.0.0" + rollup: "npm:^4.13.0" + rollup-plugin-babel: "npm:^4.2.0" + semver: "npm:^7.6.0" + webpack: "npm:^5.90.3" + webpack-dev-server: "npm:^5.0.3" + languageName: unknown + linkType: soft + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": "npm:^2.0.1" + checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-serialize@npm:^2.2.1": + version: 2.2.1 + resolution: "dom-serialize@npm:2.2.1" + dependencies: + custom-event: "npm:~1.0.0" + ent: "npm:~2.2.0" + extend: "npm:^3.0.0" + void-elements: "npm:^2.0.0" + checksum: 10c0/ceb6e62b73c658986ca4c9b8b2fae358d8ae914eb06712d137da595a327c3bbca45a762f412a6d181f892ce5e3cffb855c2db2b64c53ad0534b2a0ad8e65b05e + languageName: node + linkType: hard + +"duplexer@npm:^0.1.1": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.4": + version: 1.5.4 + resolution: "electron-to-chromium@npm:1.5.4" + checksum: 10c0/139abf1b7281c2f3288819fb9b114f09d541ac38c9f0373f194ce2d483d82d118b8751f1b2a59b04ed0d8f414071b58508a40050fc0f23b5aa7e38d11d0cf30c + languageName: node + linkType: hard + +"emoji-regex@npm:^7.0.1": + version: 7.0.3 + resolution: "emoji-regex@npm:7.0.3" + checksum: 10c0/a8917d695c3a3384e4b7230a6a06fd2de6b3db3709116792e8b7b36ddbb3db4deb28ad3e983e70d4f2a1f9063b5dab9025e4e26e9ca08278da4fbb73e213743f + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"engine.io-parser@npm:~5.2.1": + version: 5.2.3 + resolution: "engine.io-parser@npm:5.2.3" + checksum: 10c0/ed4900d8dbef470ab3839ccf3bfa79ee518ea8277c7f1f2759e8c22a48f64e687ea5e474291394d0c94f84054749fd93f3ef0acb51fa2f5f234cc9d9d8e7c536 + languageName: node + linkType: hard + +"engine.io@npm:~6.5.2": + version: 6.5.5 + resolution: "engine.io@npm:6.5.5" + dependencies: + "@types/cookie": "npm:^0.4.1" + "@types/cors": "npm:^2.8.12" + "@types/node": "npm:>=10.0.0" + accepts: "npm:~1.3.4" + base64id: "npm:2.0.0" + cookie: "npm:~0.4.1" + cors: "npm:~2.8.5" + debug: "npm:~4.3.1" + engine.io-parser: "npm:~5.2.1" + ws: "npm:~8.17.1" + checksum: 10c0/b0994134917c5d3649fd7aea283492eaf092131e572a8d379c7c9081548b42cff756730b4641edd0d1598148dd3be253c4d634cea2ba5c59622d175d9e567469 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.17.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370 + languageName: node + linkType: hard + +"ent@npm:~2.2.0": + version: 2.2.1 + resolution: "ent@npm:2.2.1" + dependencies: + punycode: "npm:^1.4.1" + checksum: 10c0/1a8ed52210b9a688c481673a7cb82699b66bd25f6960f212a5456b635a4a9bfd42371230fe59a3134dd8c2f6ab2c8736c60cebead640d271d601c9346bed458d + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error@npm:^7.0.0": + version: 7.2.1 + resolution: "error@npm:7.2.1" + dependencies: + string-template: "npm:~0.2.1" + checksum: 10c0/91ce301017292eab20b59e27a0bc322a8f45fcf48d992761530d20c5f9c5699a2ae1822fc94298d4815fd35c2595e89139a7c6fdd3bbe9e93871e3b412186567 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + languageName: node + linkType: hard + +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + +"escape-string-regexp@npm:1.0.5, escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:1.7.x": + version: 1.7.1 + resolution: "escodegen@npm:1.7.1" + dependencies: + esprima: "npm:^1.2.2" + estraverse: "npm:^1.9.1" + esutils: "npm:^2.0.2" + optionator: "npm:^0.5.0" + source-map: "npm:~0.2.0" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: ./bin/escodegen.js + esgenerate: ./bin/esgenerate.js + checksum: 10c0/8dfcbb0f6e47d92faf35cef2df95d14298d88f198acc43f1fcf50e990646bce13647a5609aeec2e70c2e08dbe9dc44416a88bac7fb00e2a11c5b2461df5738d2 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^4.0.3": + version: 4.0.3 + resolution: "eslint-scope@npm:4.0.3" + dependencies: + esrecurse: "npm:^4.1.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-utils@npm:^1.3.1": + version: 1.4.3 + resolution: "eslint-utils@npm:1.4.3" + dependencies: + eslint-visitor-keys: "npm:^1.1.0" + checksum: 10c0/ba19a817177d5fc54ae89cd80ecc8bc24eefd640bd8b0db204f29dc79cf9621bb42d68bf31eae6c89ca1f52d748b6583214f57288f9a78d2bd368a2340abe41c + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^1.0.0, eslint-visitor-keys@npm:^1.1.0": + version: 1.3.0 + resolution: "eslint-visitor-keys@npm:1.3.0" + checksum: 10c0/10c91fdbbe36810dd4308e57f9a8bc7177188b2a70247e54e3af1fa05ebc66414ae6fd4ce3c6c6821591f43a556e9037bc6b071122e099b5f8b7d2f76df553e3 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:^5.12.0": + version: 5.16.0 + resolution: "eslint@npm:5.16.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + ajv: "npm:^6.9.1" + chalk: "npm:^2.1.0" + cross-spawn: "npm:^6.0.5" + debug: "npm:^4.0.1" + doctrine: "npm:^3.0.0" + eslint-scope: "npm:^4.0.3" + eslint-utils: "npm:^1.3.1" + eslint-visitor-keys: "npm:^1.0.0" + espree: "npm:^5.0.1" + esquery: "npm:^1.0.1" + esutils: "npm:^2.0.2" + file-entry-cache: "npm:^5.0.1" + functional-red-black-tree: "npm:^1.0.1" + glob: "npm:^7.1.2" + globals: "npm:^11.7.0" + ignore: "npm:^4.0.6" + import-fresh: "npm:^3.0.0" + imurmurhash: "npm:^0.1.4" + inquirer: "npm:^6.2.2" + js-yaml: "npm:^3.13.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.3.0" + lodash: "npm:^4.17.11" + minimatch: "npm:^3.0.4" + mkdirp: "npm:^0.5.1" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.8.2" + path-is-inside: "npm:^1.0.2" + progress: "npm:^2.0.0" + regexpp: "npm:^2.0.1" + semver: "npm:^5.5.1" + strip-ansi: "npm:^4.0.0" + strip-json-comments: "npm:^2.0.1" + table: "npm:^5.2.3" + text-table: "npm:^0.2.0" + bin: + eslint: ./bin/eslint.js + checksum: 10c0/b80161becd85523ffabb185f1604844fb2fd4d58970dc1d49f47f1fa838ef894e89a221b743016e7b7a50c5d6203dfb2452155ff5e1b4d1e8c17e677260c43d8 + languageName: node + linkType: hard + +"eslint@npm:^8.44.0": + version: 8.57.0 + resolution: "eslint@npm:8.57.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.0" + "@humanwhocodes/config-array": "npm:^0.11.14" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 + languageName: node + linkType: hard + +"espree@npm:^5.0.1": + version: 5.0.1 + resolution: "espree@npm:5.0.1" + dependencies: + acorn: "npm:^6.0.7" + acorn-jsx: "npm:^5.0.0" + eslint-visitor-keys: "npm:^1.0.0" + checksum: 10c0/738d028bd1ccf0fa872bfd8b427bfc4a985624a5a240997ee2e7ea3f281f47c6ac71356e2f563d4807908f3c53a3370e75d3f81eddde55efd10e6ab0821ce968 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:2.5.x": + version: 2.5.0 + resolution: "esprima@npm:2.5.0" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/82d3437ff39311d3e8c579d3321fba0684dea1cd251c4fea99807dc09b13a73b7ec6139f8e60aee456494d9cf5e1a7a73450e2dac5d3e90f5b47bfaad32de4b1 + languageName: node + linkType: hard + +"esprima@npm:^1.2.2": + version: 1.2.5 + resolution: "esprima@npm:1.2.5" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/634f272901b48174b84fd59ae6d9fbe03af38cfaa60501d8c0c7227d96ac53aef232e6fafda7c9760e50997f675e1c828e0b29aa39b092982960acf5e937db8f + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.0.1, esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^1.9.1": + version: 1.9.3 + resolution: "estraverse@npm:1.9.3" + checksum: 10c0/2477bab0c5cdc7534162fbb16b25282c49f434875227937726692ed105762403e9830324cc97c3ea8bf332fe91122ea321f4d4292aaf50db7a90d857e169719e + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^0.6.1": + version: 0.6.1 + resolution: "estree-walker@npm:0.6.1" + checksum: 10c0/6dabc855faa04a1ffb17b6a9121b6008ba75ab5a163ad9dc3d7fca05cfda374c5f5e91418d783496620ca75e99a73c40874d8b75f23b4117508cc8bde78e7b41 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + +"eventemitter2@npm:~0.4.13": + version: 0.4.14 + resolution: "eventemitter2@npm:0.4.14" + checksum: 10c0/62598dcf6fc2e2f0510158925f1f27508cbe9f908a9493dd67cab69457e73a62af98ad3608a095595feadf0f3d685174f324f87f98deaac4f535df70caddee12 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"events@npm:^3.2.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:~0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: "npm:^1.0.1" + checksum: 10c0/205a60497422746d1c3acbc1d65bd609b945066f239a2b785e69a7a651ac4cbeb4e08555b1ea0023abbe855e6fcb5bbf27d0b371367fdccd303d4fb2b4d66845 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"express@npm:^4.17.3": + version: 4.19.2 + resolution: "express@npm:4.19.2" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.2" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.6.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.2.0" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.1" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.7" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.11.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/e82e2662ea9971c1407aea9fc3c16d6b963e55e3830cd0ef5e00b533feda8b770af4e3be630488ef8a752d7c75c4fcefb15892868eeaafe7353cb9e3e269fdcb + languageName: node + linkType: hard + +"extend@npm:^3.0.0, extend@npm:^3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-levenshtein@npm:~1.0.0": + version: 1.0.7 + resolution: "fast-levenshtein@npm:1.0.7" + checksum: 10c0/744f4da16add90826f1292e018dae94ec16413592f6d3953679d06d41fa0a45b6721be9c22c11032a99f51e63cd4419da9fae82eb10796dfda39cd9b9e9f909b + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 10c0/3cd46d6006083b14ca61ffe9a05b8eef75ef87e9574b6f68f2e17ecf4daa7aaadeff44e3f0f7a0ef4e0f7e7c20fc07beec49ff14dc72d0b500f00386592f2d10 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + languageName: node + linkType: hard + +"faye-websocket@npm:~0.10.0": + version: 0.10.0 + resolution: "faye-websocket@npm:0.10.0" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10c0/aa82ed4a5895ae2019658858c7179921179ce546dc227594fae55896bfe2deddf080d44eaaab882afb878987f35fce57a77b6bae66524fb584fbba73d17d63af + languageName: node + linkType: hard + +"figures@npm:^2.0.0": + version: 2.0.0 + resolution: "figures@npm:2.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/5dc5a75fec3e7e04ae65d6ce51d28b3e70d4656c51b06996b6fdb2cb5b542df512e3b3c04482f5193a964edddafa5521479ff948fa84e12ff556e53e094ab4ce + languageName: node + linkType: hard + +"figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^5.0.1": + version: 5.0.1 + resolution: "file-entry-cache@npm:5.0.1" + dependencies: + flat-cache: "npm:^2.0.1" + checksum: 10c0/2480fb523a0342b8ede8b17717517f69ce6b775083d06e50e2e10ca45f16c94f1d4d95976ae627735716174033374a2d6717ba4b58569e1fea8564a1b1f2e4c1 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-sync-cmp@npm:^0.1.0": + version: 0.1.1 + resolution: "file-sync-cmp@npm:0.1.1" + checksum: 10c0/dc2b17c1c5c15b4b49c650554773523e827984818edbad62008bd73e79c334ea92fb1b7a50d1bad5ebb03a74dc91fb2ea4073f20b5ac6ed80ba70704de37ea57 + languageName: node + linkType: hard + +"fileset@npm:0.2.x": + version: 0.2.1 + resolution: "fileset@npm:0.2.1" + dependencies: + glob: "npm:5.x" + minimatch: "npm:2.x" + checksum: 10c0/b3aba7c2575ea07258d4285a7d54a0db6343854c87a5fca7184c60e43fe6d7bac789e8f1761c6cd9d8a303603220017f65f917be52d927ca8b0faa22a062484d + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"finalhandler@npm:1.1.2": + version: 1.1.2 + resolution: "finalhandler@npm:1.1.2" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + on-finished: "npm:~2.3.0" + parseurl: "npm:~1.3.3" + statuses: "npm:~1.5.0" + unpipe: "npm:~1.0.0" + checksum: 10c0/6a96e1f5caab085628c11d9fdceb82ba608d5e426c6913d4d918409baa271037a47f28fbba73279e8ad614f0b8fa71ea791d265e408d760793829edd8c2f4584 + languageName: node + linkType: hard + +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 + languageName: node + linkType: hard + +"find-cache-dir@npm:^2.0.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^2.0.0" + pkg-dir: "npm:^3.0.0" + checksum: 10c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb + languageName: node + linkType: hard + +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: "npm:^3.0.0" + pkg-dir: "npm:^7.0.0" + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + +"find-up@npm:3.0.0, find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: "npm:^7.1.0" + path-exists: "npm:^5.0.0" + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + +"findup-sync@npm:^4.0.0": + version: 4.0.0 + resolution: "findup-sync@npm:4.0.0" + dependencies: + detect-file: "npm:^1.0.0" + is-glob: "npm:^4.0.0" + micromatch: "npm:^4.0.2" + resolve-dir: "npm:^1.0.1" + checksum: 10c0/3e7de4d0afda35ecdd6260ce9d31524161817466ad6218b092dc73554848ce9618b69ec0f841dc82e320a4b3bfaba19c71c154f5b249ffed28143ba95a743d37 + languageName: node + linkType: hard + +"findup-sync@npm:~5.0.0": + version: 5.0.0 + resolution: "findup-sync@npm:5.0.0" + dependencies: + detect-file: "npm:^1.0.0" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.4" + resolve-dir: "npm:^1.0.1" + checksum: 10c0/bbdb8af8c86a0bde4445e2f738003b92e4cd2a4539a5b45199d0252f2f504aeaf19aeca1fac776c3632c60657b2659151e72c8ead29a79617459a57419a0920b + languageName: node + linkType: hard + +"fined@npm:^1.2.0": + version: 1.2.0 + resolution: "fined@npm:1.2.0" + dependencies: + expand-tilde: "npm:^2.0.2" + is-plain-object: "npm:^2.0.3" + object.defaults: "npm:^1.1.0" + object.pick: "npm:^1.2.0" + parse-filepath: "npm:^1.0.1" + checksum: 10c0/412f78bc35c450c9888844012f2a53c00c919453cab1d480e24243f12c2ca6479edee88014088351755bafd3eec56336938cbd7362c986491dffefd4ad9741f5 + languageName: node + linkType: hard + +"flagged-respawn@npm:^1.0.1": + version: 1.0.1 + resolution: "flagged-respawn@npm:1.0.1" + checksum: 10c0/4ded739606afa331d60e530cd94ea7948e3bacab8de1c084be3bbb5e37ecceec207eef1ba8fc88d14d1b975c771ac1efc1517d800027b4e05613c6c797211178 + languageName: node + linkType: hard + +"flat-cache@npm:^2.0.1": + version: 2.0.1 + resolution: "flat-cache@npm:2.0.1" + dependencies: + flatted: "npm:^2.0.0" + rimraf: "npm:2.6.3" + write: "npm:1.0.3" + checksum: 10c0/09e4d2300d05734eb2ac39ea0bb9cc6d64c0c856f6b77d2bdc7734490b4a8f860d721f59ffd5508f6938c577f8394fe7b5f6acf99a5ec4af6478d7c5c8390bcb + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat@npm:^4.1.0": + version: 4.1.1 + resolution: "flat@npm:4.1.1" + dependencies: + is-buffer: "npm:~2.0.3" + bin: + flat: cli.js + checksum: 10c0/5a94ddd3162275ddf10898d68968005388e1a3ef31a91d9dc1d53891caa1f143e4d03b9e8c88ca6b46782be19d153a9ca90899937f234c8fb3b58e7b03aa3615 + languageName: node + linkType: hard + +"flatted@npm:^2.0.0": + version: 2.0.2 + resolution: "flatted@npm:2.0.2" + checksum: 10c0/1895ac3971c3a71b0384c6d8b8ef1f217dfe7e72bc7dabc51ef532772b761e626dd7cae53a729b9e65389409d7f03fd84f1900bde4f9e719ed04e57e8510e0d4 + languageName: node + linkType: hard + +"flatted@npm:^3.2.7, flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/9ff767f0d7be6aa6870c82ac79cf0368cd73e01bbc00e9eb1c2a16fbb198ec105e3c9b6628bb98e9f3ac66fe29a957b9645bcb9a490bb7aa0d35f908b6b85071 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"for-in@npm:^1.0.1": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: 10c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 + languageName: node + linkType: hard + +"for-own@npm:^1.0.0": + version: 1.0.0 + resolution: "for-own@npm:1.0.0" + dependencies: + for-in: "npm:^1.0.1" + checksum: 10c0/ca475bc22935edf923631e9e23588edcbed33a30f0c81adc98e2c7df35db362ec4f4b569bc69051c7cfc309dfc223818c09a2f52ccd9ed77b71931c913a43a13 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.2.1 + resolution: "foreground-child@npm:3.2.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9a53a33dbd87090e9576bef65fb4a71de60f6863a8062a7b11bc1cbe3cc86d428677d7c0b9ef61cdac11007ac580006f78bd5638618d564cfd5e6fd713d6878f + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:~2.1.1": + version: 2.1.3 + resolution: "fsevents@npm:2.1.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/87b5933c5e01d17883f5c6d8c84146dc12c75e7f349b465c9e41fb4efe9992cfc6f527e30ef5f96bc24f19ca36d9e7414c0fe2dcd519f6d7649c0668efe12556 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.1.1#optional!builtin": + version: 2.1.3 + resolution: "fsevents@patch:fsevents@npm%3A2.1.3#optional!builtin::version=2.1.3&hash=31d12a" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1, function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functional-red-black-tree@npm:^1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gaze@npm:^1.1.0": + version: 1.1.3 + resolution: "gaze@npm:1.1.3" + dependencies: + globule: "npm:^1.0.0" + checksum: 10c0/5369619e23f6585e3a5efc4b8fad3b9f129fb4a88685bf0d6a98ca5ea0adb3868ede3d05643101deb03c42e15a0d36182d37f0122945935d05eddc82f4d79bfe + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"getobject@npm:~1.0.0": + version: 1.0.2 + resolution: "getobject@npm:1.0.2" + checksum: 10c0/b6b06d98a919443eba4dae27e8b53f91361c71dd542a70f2bc48f19a881156f659a2397a854c321d1c5547448d66863732d86861f89899b504358f4e4d67903f + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:5.x": + version: 5.0.15 + resolution: "glob@npm:5.0.15" + dependencies: + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:2 || 3" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/ed17b34406bedceb334a1df3502774a089ce822db07585ad2a6851d6040531540ce07407d7da5f0e0bded238114ea50302902f025e551499108076e635fcd9b1 + languageName: node + linkType: hard + +"glob@npm:7.1.3": + version: 7.1.3 + resolution: "glob@npm:7.1.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/7ffc36238ebbceb2868e2c1244a3eda7281c602b89cc785ddeb32e6b6fd2ca92adcf6ac0886e86dcd08bd40c96689865ffbf90fce49df402a49ed9ef5e3522e4 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.7, glob@npm:^7.2.0": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:~7.1.1, glob@npm:~7.1.6": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 + languageName: node + linkType: hard + +"global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: "npm:^1.0.1" + is-windows: "npm:^1.0.1" + resolve-dir: "npm:^1.0.0" + checksum: 10c0/7d91ecf78d4fcbc966b2d89c1400df273afea795bc8cadf39857ee1684e442065621fd79413ff5fcd9e90c6f1b2dc0123e644fa0b7811f987fd54c6b9afad858 + languageName: node + linkType: hard + +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: "npm:^2.0.2" + homedir-polyfill: "npm:^1.0.1" + ini: "npm:^1.3.4" + is-windows: "npm:^1.0.1" + which: "npm:^1.2.14" + checksum: 10c0/d8037e300f1dc04d5d410d16afa662e71bfad22dcceba6c9727bb55cc273b8988ca940b3402f62e5392fd261dd9924a9a73a865ef2000219461f31f3fc86be06 + languageName: node + linkType: hard + +"globals@npm:^11.1.0, globals@npm:^11.7.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globule@npm:^1.0.0": + version: 1.3.4 + resolution: "globule@npm:1.3.4" + dependencies: + glob: "npm:~7.1.1" + lodash: "npm:^4.17.21" + minimatch: "npm:~3.0.2" + checksum: 10c0/10204e914adae6f7ac0c499849b6e306d73cdd3547fd0c3a43db5f4afe36027fa8afa0707306c33b29d73d90fe0d357cd1c946c58ff20da9e52226abad20335a + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"growl@npm:1.10.5": + version: 1.10.5 + resolution: "growl@npm:1.10.5" + checksum: 10c0/a6a8f4df1269ac321f9e41c310552f3568768160942b6c9a7c116fcff1e3921f6a48fb7520689660412f7d1e5d46f76214e05406b23eee9e213830fdc2f772fe + languageName: node + linkType: hard + +"grunt-babel@npm:^8.0.0": + version: 8.0.0 + resolution: "grunt-babel@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + grunt: ">=0.4.0" + checksum: 10c0/4fcf9e8f38818cfa97bca6369d21af7eee5e74c5b715b8093d30cb177208d98763086b8e9b727ff9787ca2f8d4339446bbe89b5ca883fc2b17fe7ae62d461fb5 + languageName: node + linkType: hard + +"grunt-cli@npm:^1.4.3": + version: 1.5.0 + resolution: "grunt-cli@npm:1.5.0" + dependencies: + grunt-known-options: "npm:~2.0.0" + interpret: "npm:~1.1.0" + liftup: "npm:~3.0.1" + nopt: "npm:~5.0.0" + v8flags: "npm:^4.0.1" + bin: + grunt: bin/grunt + checksum: 10c0/124650a4c8a62ca460cd3f899892e2685fa4392a5075fdaf236065acfa8952c0ebddba788430bc8966e96f4baf554e7fbb70d8099231218c211c97cd2310c5cd + languageName: node + linkType: hard + +"grunt-cli@npm:~1.4.3": + version: 1.4.3 + resolution: "grunt-cli@npm:1.4.3" + dependencies: + grunt-known-options: "npm:~2.0.0" + interpret: "npm:~1.1.0" + liftup: "npm:~3.0.1" + nopt: "npm:~4.0.1" + v8flags: "npm:~3.2.0" + bin: + grunt: bin/grunt + checksum: 10c0/921e0f858d95996cb55bdd4626d80dabb0b6c09d32e914cd43820fed816a2b01ac4f38414383cea6289708c8aba736f62a0e78b81125d96b2d57263652060958 + languageName: node + linkType: hard + +"grunt-contrib-clean@npm:^2.0.1": + version: 2.0.1 + resolution: "grunt-contrib-clean@npm:2.0.1" + dependencies: + async: "npm:^3.2.3" + rimraf: "npm:^2.6.2" + peerDependencies: + grunt: ">=0.4.5" + checksum: 10c0/3c68a89e12ad9c07aed7500e7ac94208ed82d0eca132ee4c3bcf1021d3250e4ca21dbf2ad6062439c4d4666bff3ea4751b5ca9fc91a049d3918e284422e59694 + languageName: node + linkType: hard + +"grunt-contrib-copy@npm:^1.0.0": + version: 1.0.0 + resolution: "grunt-contrib-copy@npm:1.0.0" + dependencies: + chalk: "npm:^1.1.1" + file-sync-cmp: "npm:^0.1.0" + checksum: 10c0/bb0b8337672c533027ddd2564dcb263cdf15765b1670d1550f09e6a11d39d35b9eb143f26283d82d7a8f1de8b79f4f0e94289e841da8fda8a0b9641ef96da6b9 + languageName: node + linkType: hard + +"grunt-contrib-uglify@npm:^5.2.2": + version: 5.2.2 + resolution: "grunt-contrib-uglify@npm:5.2.2" + dependencies: + chalk: "npm:^4.1.2" + maxmin: "npm:^3.0.0" + uglify-js: "npm:^3.16.1" + uri-path: "npm:^1.0.0" + checksum: 10c0/c680ecb5334df5f5662d8bfb7bdc55ba7bd190d07467e43ab9e8bb33d152b7e86347bf07aa74951852031acf96e4ccccb2357072bc137c6ada6856b2f4e6d12b + languageName: node + linkType: hard + +"grunt-contrib-watch@npm:^1.1.0": + version: 1.1.0 + resolution: "grunt-contrib-watch@npm:1.1.0" + dependencies: + async: "npm:^2.6.0" + gaze: "npm:^1.1.0" + lodash: "npm:^4.17.10" + tiny-lr: "npm:^1.1.1" + checksum: 10c0/5b05a7343f181836ee9189c3b9cf6d53f7909d8b2dd07eeefbfaf3a0be8490775b765319238f1a60f1f3ccf485a6c544efa465ab1b969a3cc5d5f6608b33558f + languageName: node + linkType: hard + +"grunt-eslint@npm:^24.3.0": + version: 24.3.0 + resolution: "grunt-eslint@npm:24.3.0" + dependencies: + chalk: "npm:^4.1.2" + eslint: "npm:^8.44.0" + peerDependencies: + grunt: ">=1" + checksum: 10c0/1cd69f11158f955a19fdca9ec0a14bf9a687256fcedc92e53727fece3c11919e53568a69a5815d2719f4b427ea172fe9a0c82cb03371f96079cc9f00a5a2bd58 + languageName: node + linkType: hard + +"grunt-exec@npm:^3.0.0": + version: 3.0.0 + resolution: "grunt-exec@npm:3.0.0" + peerDependencies: + grunt: ">=0.4" + checksum: 10c0/9bbdc004f55c03e529cda3d65ee31f9a09bd54260f57b2ea179e531fa8152f4fe37b143c012de057cd59ef19feb7e12f25598be0245b147e54f550854f545cc2 + languageName: node + linkType: hard + +"grunt-karma@npm:^4.0.2": + version: 4.0.2 + resolution: "grunt-karma@npm:4.0.2" + dependencies: + lodash: "npm:^4.17.10" + peerDependencies: + grunt: ">=0.4.x" + karma: ^4.0.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/457b95ebee12f123ab69fdc5cac9d12b63c0f3a4af70966c33f07f41be5e22ccaf7a783b8df71cbcf3ff77e82fcb7fafaed83e9cfab5839122b5b1923384fbd6 + languageName: node + linkType: hard + +"grunt-known-options@npm:~2.0.0": + version: 2.0.0 + resolution: "grunt-known-options@npm:2.0.0" + checksum: 10c0/bfad7ea853e2d0ff4cf4acce90faf41d40d838207cb408f4664e29c5d0edb033fbd72126bd1d85a7b0b17beec49cacdbcdc293be253ee9c258992b005eb9f535 + languageName: node + linkType: hard + +"grunt-legacy-log-utils@npm:~2.1.0": + version: 2.1.0 + resolution: "grunt-legacy-log-utils@npm:2.1.0" + dependencies: + chalk: "npm:~4.1.0" + lodash: "npm:~4.17.19" + checksum: 10c0/9d4c53c0c03ed831cc3276b7ddf475f4274d2cc38d5d49ffe6c652e2e3e4414e13458f0485765c06790b795cbd7e5d5ee7c75f6c0c4465474c57db47c7164bf3 + languageName: node + linkType: hard + +"grunt-legacy-log@npm:~3.0.0": + version: 3.0.0 + resolution: "grunt-legacy-log@npm:3.0.0" + dependencies: + colors: "npm:~1.1.2" + grunt-legacy-log-utils: "npm:~2.1.0" + hooker: "npm:~0.2.3" + lodash: "npm:~4.17.19" + checksum: 10c0/2faca94e4a5e326c3c861d2d89b5c4bf075d98dcc5f8c230eb084b63a60bf1fcc8dfc653bedd6b97a84b81021bd05796442dce79696c13d496ec9f6613b5677a + languageName: node + linkType: hard + +"grunt-legacy-util@npm:~2.0.1": + version: 2.0.1 + resolution: "grunt-legacy-util@npm:2.0.1" + dependencies: + async: "npm:~3.2.0" + exit: "npm:~0.1.2" + getobject: "npm:~1.0.0" + hooker: "npm:~0.2.3" + lodash: "npm:~4.17.21" + underscore.string: "npm:~3.3.5" + which: "npm:~2.0.2" + checksum: 10c0/098cdf7b091ff81d3d436478a517e79a19205ddf0ef26d54589c560787c5fd3c0049df835aea3a3ac35c53a5ba587466acae851ef879ced5da88b7d9eb0cf025 + languageName: node + linkType: hard + +"grunt-mocha-istanbul@npm:^5.0.2": + version: 5.0.2 + resolution: "grunt-mocha-istanbul@npm:5.0.2" + peerDependencies: + grunt: ">=0.4.0" + checksum: 10c0/108d988c7061f8ad33b60867f44b288bc9ef1fc6df98aa1cce8037d95cae40006e4ff3a8240f2daa9e03b9d77097755588a4247dadf7aa929dc42c94e8721da1 + languageName: node + linkType: hard + +"grunt-mocha-test@npm:^0.13.3": + version: 0.13.3 + resolution: "grunt-mocha-test@npm:0.13.3" + dependencies: + hooker: "npm:^0.2.3" + mkdirp: "npm:^0.5.0" + peerDependencies: + mocha: ">=1.20.0" + checksum: 10c0/384210fd46d3cdd36552e85626b4ed6236f62a3f8b5f55c5b4febd573fad841af2cfed3182673b12d7c564dd961ce8cd293871c21257586123fab92654ce26ba + languageName: node + linkType: hard + +"grunt-webpack@npm:^6.0.0": + version: 6.0.0 + resolution: "grunt-webpack@npm:6.0.0" + dependencies: + deep-for-each: "npm:^3.0.0" + lodash: "npm:^4.17.21" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/ed54e6ee9ed11f96a064c9619912a2aa80663089afa6e0ff7d47f170441e9a272a48396341e0c69e52f26b08df488e4e241c801be6a074329ecaca2c2208348b + languageName: node + linkType: hard + +"grunt@npm:^1.6.1": + version: 1.6.1 + resolution: "grunt@npm:1.6.1" + dependencies: + dateformat: "npm:~4.6.2" + eventemitter2: "npm:~0.4.13" + exit: "npm:~0.1.2" + findup-sync: "npm:~5.0.0" + glob: "npm:~7.1.6" + grunt-cli: "npm:~1.4.3" + grunt-known-options: "npm:~2.0.0" + grunt-legacy-log: "npm:~3.0.0" + grunt-legacy-util: "npm:~2.0.1" + iconv-lite: "npm:~0.6.3" + js-yaml: "npm:~3.14.0" + minimatch: "npm:~3.0.4" + nopt: "npm:~3.0.6" + bin: + grunt: bin/grunt + checksum: 10c0/4045cc892c73080fda5f77d31cdd84ee51f8dffa5e8c449b708bc8accba80b68b2ad4f5618ef6fc09e96f3220734d2f6b751547ef4a93c255710f83ece44f33c + languageName: node + linkType: hard + +"gzip-size@npm:^5.1.1": + version: 5.1.1 + resolution: "gzip-size@npm:5.1.1" + dependencies: + duplexer: "npm:^0.1.1" + pify: "npm:^4.0.1" + checksum: 10c0/1c346d3ab83b85687a9aa644928250b31e0fc42cf16ca152225a09465f7465b220849b3854b39a457681fabb37ab318b2c0f73be8991ecedf2073e082d1f6dd9 + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + languageName: node + linkType: hard + +"handlebars@npm:^4.0.1": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"has-ansi@npm:^2.0.0": + version: 2.0.0 + resolution: "has-ansi@npm:2.0.0" + dependencies: + ansi-regex: "npm:^2.0.0" + checksum: 10c0/f54e4887b9f8f3c4bfefd649c48825b3c093987c92c27880ee9898539e6f01aed261e82e73153c3f920fde0db5bf6ebd58deb498ed1debabcb4bc40113ccdf05 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-flag@npm:1.0.0" + checksum: 10c0/d0ad4bebbbc005edccfa1e2c0600c89375be5663d23f49a129e0f817187405748b0b515abfc5b3c209c92692e39bb0481c83c0ee4df69433d6ffd0242183100b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.0, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"he@npm:1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: "npm:^1.0.0" + checksum: 10c0/3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 + languageName: node + linkType: hard + +"hooker@npm:^0.2.3, hooker@npm:~0.2.3": + version: 0.2.3 + resolution: "hooker@npm:0.2.3" + checksum: 10c0/beb6d634e0e09453d2e71ec6d15396c6cdb0120f2b9d2d80544c192c5d4e3e1e165d093fee04e0145888935266c29b75b90b27fc69132c532cf13576c4934ffb + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: "npm:^2.0.1" + obuf: "npm:^1.0.0" + readable-stream: "npm:^2.0.1" + wbuf: "npm:^1.1.0" + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + languageName: node + linkType: hard + +"html-entities@npm:^2.4.0": + version: 2.5.2 + resolution: "html-entities@npm:2.5.2" + checksum: 10c0/f20ffb4326606245c439c231de40a7c560607f639bf40ffbfb36b4c70729fd95d7964209045f1a4e62fe17f2364cef3d6e49b02ea09016f207fde51c2211e481 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.0" + statuses: "npm:>= 1.4.0 < 2" + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.6 + resolution: "http-proxy-middleware@npm:2.0.6" + dependencies: + "@types/http-proxy": "npm:^1.17.8" + http-proxy: "npm:^1.18.1" + is-glob: "npm:^4.0.1" + is-plain-obj: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 10c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: "npm:^4.0.0" + follow-redirects: "npm:^1.0.0" + requires-port: "npm:^1.0.0" + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"hyperdyperid@npm:^1.2.0": + version: 1.2.0 + resolution: "hyperdyperid@npm:1.2.0" + checksum: 10c0/885ba3177c7181d315a856ee9c0005ff8eb5dcb1ce9e9d61be70987895d934d84686c37c981cceeb53216d4c9c15c1cc25f1804e84cc6a74a16993c5d7fd0893 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2, iconv-lite@npm:~0.6.3": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ignore@npm:^4.0.6": + version: 4.0.6 + resolution: "ignore@npm:4.0.6" + checksum: 10c0/836ee7dc7fd9436096e2dba429359dbb9fa0e33d309e2b2d81692f375f6ca82024fc00567f798613d50c6b989e9cd2ad2b065acf116325cde177f02c86b7d4e0 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd + languageName: node + linkType: hard + +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + languageName: node + linkType: hard + +"ini@npm:^1.3.4": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"inquirer@npm:^6.2.2": + version: 6.5.2 + resolution: "inquirer@npm:6.5.2" + dependencies: + ansi-escapes: "npm:^3.2.0" + chalk: "npm:^2.4.2" + cli-cursor: "npm:^2.1.0" + cli-width: "npm:^2.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^2.0.0" + lodash: "npm:^4.17.12" + mute-stream: "npm:0.0.7" + run-async: "npm:^2.2.0" + rxjs: "npm:^6.4.0" + string-width: "npm:^2.1.0" + strip-ansi: "npm:^5.1.0" + through: "npm:^2.3.6" + checksum: 10c0/a5aa53a8f88405cf1cff63111493f87a5b3b5deb5ea4a0dbcd73ccc06a51a6bba0c3f1a0747f8880e9e3ec2437c69f90417be16368abf636b1d29eebe35db0ac + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"interpret@npm:~1.1.0": + version: 1.1.0 + resolution: "interpret@npm:1.1.0" + checksum: 10c0/b06552b92048b5077e700da3e203d4c10f1460f2e3aaa9bd4301782f42a82fb0fe8269b8766731dc9c22aedfa2fceb115380c6bbc739fa439d1672bc70fd334c + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.1.0": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 10c0/e4ee875dc1bd92ac9d27e06cfd87cdb63ca786ff9fd7718f1d4f7a8ef27db6e5d516128f52d2c560408cbb75796ac2f83ead669e73507c86282d45f84c5abbb6 + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: "npm:^1.0.0" + is-windows: "npm:^1.0.1" + checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-buffer@npm:~2.0.3": + version: 2.0.5 + resolution: "is-buffer@npm:2.0.5" + checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0": + version: 2.15.0 + resolution: "is-core-module@npm:2.15.0" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/da161f3d9906f459486da65609b2f1a2dfdc60887c689c234d04e88a062cb7920fa5be5fb7ab08dc43b732929653c4135ef05bf77888ae2a9040ce76815eb7b1 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: "npm:^1.1.13" + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-network-error@npm:^1.0.0": + version: 1.1.0 + resolution: "is-network-error@npm:1.1.0" + checksum: 10c0/89eef83c2a4cf43d853145ce175d1cf43183b7a58d48c7a03e7eed4eb395d0934c1f6d101255cdd8c8c2980ab529bfbe5dd9edb24e1c3c28d2b3c814469b5b7d + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: "npm:^1.0.0" + checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: "npm:^0.1.2" + checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isbinaryfile@npm:^4.0.8": + version: 4.0.10 + resolution: "isbinaryfile@npm:4.0.10" + checksum: 10c0/0703d8cfeb69ed79e6d173120f327450011a066755150a6bbf97ffecec1069a5f2092777868315b21359098c84b54984871cad1abce877ad9141fb2caf3dcabf + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard "istanbul@github:kpdecker/istanbul": - version "0.4.0" - resolved "https://codeload.github.com/kpdecker/istanbul/tar.gz/dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22" - dependencies: - abbrev "1.0.x" - async "1.x" - convert-source-map "^1.1.1" - escodegen "1.7.x" - esprima "2.5.x" - fileset "0.2.x" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - source-map "^0.4.4" - source-map-support "^0.3.2" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@3.x, js-yaml@~3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.13.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -karma-chrome-launcher@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" - integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== - dependencies: - which "^1.2.1" - -karma-mocha-reporter@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" - integrity sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w== - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - strip-ansi "^4.0.0" - -karma-mocha@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" - integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== - dependencies: - minimist "^1.2.3" - -karma-sourcemap-loader@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" - integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== - dependencies: - graceful-fs "^4.2.10" - -karma-webpack@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" - integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== - dependencies: - glob "^7.1.3" - minimatch "^9.0.3" - webpack-merge "^4.1.5" - -karma@^6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" - integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== - dependencies: - "@colors/colors" "1.5.0" - body-parser "^1.19.0" - braces "^3.0.2" - chokidar "^3.5.1" - connect "^3.7.0" - di "^0.0.1" - dom-serialize "^2.2.1" - glob "^7.1.7" - graceful-fs "^4.2.6" - http-proxy "^1.18.1" - isbinaryfile "^4.0.8" - lodash "^4.17.21" - log4js "^6.4.1" - mime "^2.5.2" - minimatch "^3.0.4" - mkdirp "^0.5.5" - qjobs "^1.2.0" - range-parser "^1.2.1" - rimraf "^3.0.2" - socket.io "^4.7.2" - source-map "^0.6.1" - tmp "^0.2.1" - ua-parser-js "^0.7.30" - yargs "^16.1.1" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -launch-editor@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.2.5.tgz#ba8d339d0ca4a610e3a3f145b9caf48807155054" - dependencies: - prelude-ls "~1.1.0" - type-check "~0.3.1" - -liftup@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/liftup/-/liftup-3.0.1.tgz#1cb81aff0f368464ed3a5f1a7286372d6b1a60ce" - integrity sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw== - dependencies: - extend "^3.0.2" - findup-sync "^4.0.0" - fined "^1.2.0" - flagged-respawn "^1.0.1" - is-plain-object "^2.0.4" - object.map "^1.0.1" - rechoir "^0.7.0" - resolve "^1.19.0" - -livereload-js@^2.3.0: - version "2.4.0" - resolved "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" - integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@~4.17.19, lodash@~4.17.21, lodash@~4.17.4: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -log4js@^6.4.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" - integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - flatted "^3.2.7" - rfdc "^1.3.0" - streamroller "^3.1.5" - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - -map-cache@^0.2.0: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -maxmin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-3.0.0.tgz#3ee9acc8a2b9f2b5416e94f5705319df8a9c71e6" - integrity sha512-wcahMInmGtg/7c6a75fr21Ch/Ks1Tb+Jtoan5Ft4bAI0ZvJqyOw8kkM7e7p8hDSzY805vmxwHT50KcjGwKyJ0g== - dependencies: - chalk "^4.1.0" - figures "^3.2.0" - gzip-size "^5.1.1" - pretty-bytes "^5.3.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memfs@^4.6.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.8.0.tgz#0ea1ecb137219883c2e7c5139f4fa109935f7e39" - integrity sha512-fcs7trFxZlOMadmTw5nyfOwS3il9pr3y+6xzLfXNwmuR/D0i4wz6rJURxArAbcJDGalbpbMvQ/IFI0NojRZgRg== - dependencies: - tslib "^2.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@2.x: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc= - dependencies: - brace-expansion "^1.0.0" - -minimatch@3.0.4, minimatch@~3.0.2, minimatch@~3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.1, minimatch@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.3: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mocha@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" - integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.5" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-forge@^1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nopt@3.x, nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-assign@^4, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@4.1.0, object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w== - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -object.pick@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1, on-finished@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@1.x, once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^10.0.3: - version "10.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" - integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^3.1.0" - -optionator@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.5.0.tgz#b75a8995a2d417df25b6e4e3862f50aa88651368" - dependencies: - deep-is "~0.1.2" - fast-levenshtein "~1.0.0" - levn "~0.2.5" - prelude-ls "~1.1.1" - type-check "~0.3.1" - wordwrap "~0.0.2" - -optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-retry@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" - integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== - dependencies: - "@types/retry" "0.12.2" - is-network-error "^1.0.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.0, prelude-ls@~1.1.1, prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -qjobs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.4.0: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@~1.1.0: - version "1.1.7" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" - integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= - dependencies: - bytes "1" - string_decoder "0.10" - -readable-stream@^2.0.1: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.12.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.14.2, resolve@^1.19.0, resolve@^1.9.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" - integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== - dependencies: - glob "^10.3.7" - -rollup-plugin-babel@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.13.0.tgz#dd2ae144b4cdc2ea25420477f68d4937a721237a" - integrity sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg== - dependencies: - "@types/estree" "1.0.5" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.13.0" - "@rollup/rollup-android-arm64" "4.13.0" - "@rollup/rollup-darwin-arm64" "4.13.0" - "@rollup/rollup-darwin-x64" "4.13.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.13.0" - "@rollup/rollup-linux-arm64-gnu" "4.13.0" - "@rollup/rollup-linux-arm64-musl" "4.13.0" - "@rollup/rollup-linux-riscv64-gnu" "4.13.0" - "@rollup/rollup-linux-x64-gnu" "4.13.0" - "@rollup/rollup-linux-x64-musl" "4.13.0" - "@rollup/rollup-win32-arm64-msvc" "4.13.0" - "@rollup/rollup-win32-ia32-msvc" "4.13.0" - "@rollup/rollup-win32-x64-msvc" "4.13.0" - fsevents "~2.3.2" - -run-applescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" - integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-json-parse@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" - integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -socket.io-adapter@~2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" - integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== - dependencies: - ws "~8.11.0" - -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - -socket.io@^4.7.2: - version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" - integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - cors "~2.8.5" - debug "~4.3.2" - engine.io "~6.5.2" - socket.io-adapter "~2.5.2" - socket.io-parser "~4.2.4" - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -source-map-support@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" - dependencies: - source-map "0.1.32" - -source-map-support@^0.5.16, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -sprintf-js@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -streamroller@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" - integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - fs-extra "^8.1.0" - -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@0.10: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@2.0.1, strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.26.0: - version "5.29.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.2.tgz#c17d573ce1da1b30f21a877bffd5655dd86fdb35" - integrity sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tiny-lr@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" - integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== - dependencies: - body "^5.1.0" - debug "^3.1.0" - faye-websocket "~0.10.0" - livereload-js "^2.3.0" - object-assign "^4.1.0" - qs "^6.4.0" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.1, type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -ua-parser-js@^0.7.30: - version "0.7.37" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" - integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== - -uglify-js@^3.1.4: - version "3.10.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.1.tgz#dd14767eb7150de97f2573a5ff210db14fffe4ad" - integrity sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q== - -uglify-js@^3.16.1: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -underscore.string@~3.3.5: - version "3.3.6" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.6.tgz#ad8cf23d7423cb3b53b898476117588f4e2f9159" - integrity sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ== - dependencies: - sprintf-js "^1.1.1" - util-deprecate "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -uri-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" - integrity sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI= - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8flags@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -watchpack@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-dev-middleware@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.1.1.tgz#29aefd73720a03889e1c5c8dd7e552c4d333d572" - integrity sha512-NmRVq4AvRQs66dFWyDR4GsFDJggtSi2Yn38MXLk0nffgF9n/AIP4TFBg2TQKYaRAN4sHuKOTiz9BnNCENDLEVA== - dependencies: - colorette "^2.0.10" - memfs "^4.6.0" - mime-types "^2.1.31" - on-finished "^2.4.1" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.3.tgz#694bf56308b9c5568c9026302bb1fe2f6130804c" - integrity sha512-4aj4I8FJLsFbd4Vt6YBXC8CWrOOwviEI9DdVTu9hrgIBGWs4oKOVfDnaRc+vgf1JUSir1psph1ChPFDkTGHR2Q== - dependencies: - "@types/bonjour" "^3.5.13" - "@types/connect-history-api-fallback" "^1.5.4" - "@types/express" "^4.17.21" - "@types/serve-index" "^1.9.4" - "@types/serve-static" "^1.15.5" - "@types/sockjs" "^0.3.36" - "@types/ws" "^8.5.10" - ansi-html-community "^0.0.8" - bonjour-service "^1.2.1" - chokidar "^3.6.0" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.4.0" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.1.0" - launch-editor "^2.6.1" - open "^10.0.3" - p-retry "^6.2.0" - rimraf "^5.0.5" - schema-utils "^4.2.0" - selfsigned "^2.4.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^7.0.0" - ws "^8.16.0" - -webpack-merge@^4.1.5: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.90.3: - version "5.90.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" - integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1.3.1, which@^1.1.1, which@^1.2.1, which@^1.2.14, which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^8.16.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== - -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - -xtend@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== - dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" - -yargs@13.3.2, yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^16.1.1: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + version: 0.4.0 + resolution: "istanbul@https://github.com/kpdecker/istanbul.git#commit=dd1228d2f0a6e8506cbb5dba398a8297b1dbaf22" + dependencies: + abbrev: "npm:1.0.x" + async: "npm:1.x" + convert-source-map: "npm:^1.1.1" + escodegen: "npm:1.7.x" + esprima: "npm:2.5.x" + fileset: "npm:0.2.x" + handlebars: "npm:^4.0.1" + js-yaml: "npm:3.x" + mkdirp: "npm:0.5.x" + nopt: "npm:3.x" + once: "npm:1.x" + resolve: "npm:1.1.x" + source-map: "npm:^0.4.4" + source-map-support: "npm:^0.3.2" + supports-color: "npm:^3.1.0" + which: "npm:^1.1.1" + wordwrap: "npm:^1.0.0" + bin: + istanbul: ./lib/cli.js + checksum: 10c0/10cda9d8b390690eec3d8e8a65ecfb5fc3dbab05e3d24672331dfc9a3f311b5270a805b958bbedc6db39f2a0d1c2e49595af235c86f6f8d30321ab28865e826a + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:3.13.1": + version: 3.13.1 + resolution: "js-yaml@npm:3.13.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6a4f78b998d2eb58964cc5e051c031865bf292dc3c156a8057cf468d9e60a8739f4e8f607a267e97f09eb8d08263b8262df57eddb16b920ec5a04a259c3b4960 + languageName: node + linkType: hard + +"js-yaml@npm:3.x, js-yaml@npm:^3.13.0, js-yaml@npm:~3.14.0": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.6" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 + languageName: node + linkType: hard + +"karma-chrome-launcher@npm:^3.2.0": + version: 3.2.0 + resolution: "karma-chrome-launcher@npm:3.2.0" + dependencies: + which: "npm:^1.2.1" + checksum: 10c0/0cec1ae7d922110dc29cee36389d597157c82f019c8917259f9fa93d1f5ee8e19141c2eb74bfe30797cdb3adbc51a6b65fd18a9ebc1527c725c4acf62cd46d04 + languageName: node + linkType: hard + +"karma-mocha-reporter@npm:^2.2.5": + version: 2.2.5 + resolution: "karma-mocha-reporter@npm:2.2.5" + dependencies: + chalk: "npm:^2.1.0" + log-symbols: "npm:^2.1.0" + strip-ansi: "npm:^4.0.0" + peerDependencies: + karma: ">=0.13" + checksum: 10c0/5a26ea58fb683a6d6a7f8b6f6e51f8678432adfa6425356fb125c9e8dba4489061385b819dfd19e943ffe8f3e0f86a529386b7793d3065cd59d4756517023aba + languageName: node + linkType: hard + +"karma-mocha@npm:^2.0.1": + version: 2.0.1 + resolution: "karma-mocha@npm:2.0.1" + dependencies: + minimist: "npm:^1.2.3" + checksum: 10c0/99ef62d863f6bf8cb11df0f4a9d47615369a0ce8a937d9a0cd7fb83fdbb0ef7420c7ea396de514be48500fac1563a00ab964b7d1adc4ee3f5a875ebf07eb012d + languageName: node + linkType: hard + +"karma-sourcemap-loader@npm:^0.4.0": + version: 0.4.0 + resolution: "karma-sourcemap-loader@npm:0.4.0" + dependencies: + graceful-fs: "npm:^4.2.10" + checksum: 10c0/8f77516330bc78d7c4d22469bdfd96b82acf7a285e2c19b8f30ae9d9bb21c7d817b0c32b9e5ea6ae002b16365e124afea121910c089c641320ce5595cafaadac + languageName: node + linkType: hard + +"karma-webpack@npm:^5.0.1": + version: 5.0.1 + resolution: "karma-webpack@npm:5.0.1" + dependencies: + glob: "npm:^7.1.3" + minimatch: "npm:^9.0.3" + webpack-merge: "npm:^4.1.5" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/ef7208a6b2746819693c654d6da4a1c7794edb72690006181e1c2897ff8415644e6745ca46bdf170e30c2b82d4b9f16284af5e71fcae026b32de0a08adb14c7d + languageName: node + linkType: hard + +"karma@npm:^6.4.3": + version: 6.4.4 + resolution: "karma@npm:6.4.4" + dependencies: + "@colors/colors": "npm:1.5.0" + body-parser: "npm:^1.19.0" + braces: "npm:^3.0.2" + chokidar: "npm:^3.5.1" + connect: "npm:^3.7.0" + di: "npm:^0.0.1" + dom-serialize: "npm:^2.2.1" + glob: "npm:^7.1.7" + graceful-fs: "npm:^4.2.6" + http-proxy: "npm:^1.18.1" + isbinaryfile: "npm:^4.0.8" + lodash: "npm:^4.17.21" + log4js: "npm:^6.4.1" + mime: "npm:^2.5.2" + minimatch: "npm:^3.0.4" + mkdirp: "npm:^0.5.5" + qjobs: "npm:^1.2.0" + range-parser: "npm:^1.2.1" + rimraf: "npm:^3.0.2" + socket.io: "npm:^4.7.2" + source-map: "npm:^0.6.1" + tmp: "npm:^0.2.1" + ua-parser-js: "npm:^0.7.30" + yargs: "npm:^16.1.1" + bin: + karma: bin/karma + checksum: 10c0/1658c4b7396c0edf6f048289182e075b561902e02992e1a3eb72f56f67090ff0c7ad7c91ab099e88a790c60f9500c5a6f974d75f1769e3ea2dfccda52876ec0b + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.1": + version: 2.8.1 + resolution: "launch-editor@npm:2.8.1" + dependencies: + picocolors: "npm:^1.0.0" + shell-quote: "npm:^1.8.1" + checksum: 10c0/e18fcda6617a995306602871c7a71ddcfdd82d88a57508ae970be86bfb6685f131cf9ddb8896df4e8e4cde6d0e2d14318d2b41314eaae6abf03ca205948daa27 + languageName: node + linkType: hard + +"levn@npm:^0.3.0, levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" + dependencies: + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"levn@npm:~0.2.5": + version: 0.2.5 + resolution: "levn@npm:0.2.5" + dependencies: + prelude-ls: "npm:~1.1.0" + type-check: "npm:~0.3.1" + checksum: 10c0/f7bafaa00804b6cc03217f71ac0f1bbda81a0813b933124c7c0a298e52771e8ac906a9506c0627d197c22673af112a34e3cb4b0fd35eaaa1389c6f97a308cede + languageName: node + linkType: hard + +"liftup@npm:~3.0.1": + version: 3.0.1 + resolution: "liftup@npm:3.0.1" + dependencies: + extend: "npm:^3.0.2" + findup-sync: "npm:^4.0.0" + fined: "npm:^1.2.0" + flagged-respawn: "npm:^1.0.1" + is-plain-object: "npm:^2.0.4" + object.map: "npm:^1.0.1" + rechoir: "npm:^0.7.0" + resolve: "npm:^1.19.0" + checksum: 10c0/84943bb46ae02f02cf1cde79a0e65a8d80fbf458905992b6dca08d1f8c8171726acf4092f82f165cd9cf3441e4d4ccc554990baecca38ea1ecf78314b39ba388 + languageName: node + linkType: hard + +"livereload-js@npm:^2.3.0": + version: 2.4.0 + resolution: "livereload-js@npm:2.4.0" + checksum: 10c0/8317c59fb0f26bd1f53760a702cbda1f436ed848b57849a46bc2891cdc6548944c26545ab4e3124f1894393d1011b448b6b265733198aa445d0be3781c26547d + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:~4.17.19, lodash@npm:~4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:3.0.0": + version: 3.0.0 + resolution: "log-symbols@npm:3.0.0" + dependencies: + chalk: "npm:^2.4.2" + checksum: 10c0/d11582a1b499b76aa1415988234ad54d9fb3f888f4cb4186cbc20ee4d314ac4b5f3d9fe9edd828748d2c0d372df2ea9f5dfd89100510988a8ce5ddf483ae015e + languageName: node + linkType: hard + +"log-symbols@npm:^2.1.0": + version: 2.2.0 + resolution: "log-symbols@npm:2.2.0" + dependencies: + chalk: "npm:^2.0.1" + checksum: 10c0/574eb4205f54f0605021aa67ebb372c30ca64e8ddd439efeb8507af83c776dce789e83614e80059014d9e48dcc94c4b60cef2e85f0dc944eea27c799cec62353 + languageName: node + linkType: hard + +"log4js@npm:^6.4.1": + version: 6.9.1 + resolution: "log4js@npm:6.9.1" + dependencies: + date-format: "npm:^4.0.14" + debug: "npm:^4.3.4" + flatted: "npm:^3.2.7" + rfdc: "npm:^1.3.0" + streamroller: "npm:^3.1.5" + checksum: 10c0/05846e48f72d662800c8189bd178c42b4aa2f0c574cfc90a1942cf90b76f621c44019e26796c8fd88da1b6f0fe8272cba607cbaad6ae6ede50a7a096b58197ea + languageName: node + linkType: hard + +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + languageName: node + linkType: hard + +"make-iterator@npm:^1.0.0": + version: 1.0.1 + resolution: "make-iterator@npm:1.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/84b77d72e4af589a4e6069a9e0265ff55e63162b528aa085149060b7bf4e858c700892b95a073feaf517988cac75ca2e8d9ceb14243718b2f268dc4f4a90ff0a + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + languageName: node + linkType: hard + +"maxmin@npm:^3.0.0": + version: 3.0.0 + resolution: "maxmin@npm:3.0.0" + dependencies: + chalk: "npm:^4.1.0" + figures: "npm:^3.2.0" + gzip-size: "npm:^5.1.1" + pretty-bytes: "npm:^5.3.0" + checksum: 10c0/a869116a588f95235dfd0c7920d047fd78a44ad25cb5aaa3a1a0bbc892ff3625feb73372dc756d9f1d74de7471a893427221c636de30ff773918e6f2ee1ebd42 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + +"memfs@npm:^4.6.0": + version: 4.11.1 + resolution: "memfs@npm:4.11.1" + dependencies: + "@jsonjoy.com/json-pack": "npm:^1.0.3" + "@jsonjoy.com/util": "npm:^1.3.0" + tree-dump: "npm:^1.0.1" + tslib: "npm:^2.0.0" + checksum: 10c0/738f3ba7204d7f0a5bc09ae9f62d4151e0bbb14b5f5c2bb39c59e93d1b6da1bfc0c94240f23f450538578a331d1458da995b4976aee889da0fac2219322e8377 + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + version: 4.0.7 + resolution: "micromatch@npm:4.0.7" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/58fa99bc5265edec206e9163a1d2cec5fabc46a5b473c45f4a700adce88c2520456ae35f2b301e4410fb3afb27e9521fb2813f6fc96be0a48a89430e0916a772 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + languageName: node + linkType: hard + +"mime@npm:^2.5.2": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c + languageName: node + linkType: hard + +"mimic-fn@npm:^1.0.0": + version: 1.2.0 + resolution: "mimic-fn@npm:1.2.0" + checksum: 10c0/ad55214aec6094c0af4c0beec1a13787556f8116ed88807cf3f05828500f21f93a9482326bcd5a077ae91e3e8795b4e76b5b4c8bb12237ff0e4043a365516cba + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:2.x": + version: 2.0.10 + resolution: "minimatch@npm:2.0.10" + dependencies: + brace-expansion: "npm:^1.0.0" + checksum: 10c0/82380832ff91278fb961a8e51cc5f53728e76fef8d2842f2593a3d32daebb62b36a3003b453e50cd51d7eafe9e155398d4feaa0162ef945d2c81d2d801b589e4 + languageName: node + linkType: hard + +"minimatch@npm:3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/d0a2bcd93ebec08a9eef3ca83ba33c9fb6feb93932e0b4dc6aa46c5f37a9404bea7ad9ff7cafe23ce6634f1fe3b206f5315ecbb05812da6e692c21d8ecfd3dae + languageName: node + linkType: hard + +"minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimatch@npm:~3.0.2, minimatch@npm:~3.0.4": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/72b226f452dcfb5075255f53534cb83fc25565b909e79b9be4fad463d735cb1084827f7013ff41d050e77ee6e474408c6073473edd2fb72c2fd630cfb0acc6ad + languageName: node + linkType: hard + +"minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:0.5.5": + version: 0.5.5 + resolution: "mkdirp@npm:0.5.5" + dependencies: + minimist: "npm:^1.2.5" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/4469faeeba703bc46b7cdbe3097d6373747a581eb8b556ce41c8fd25a826eb3254466c6522ba823c2edb0b6f0da7beb91cf71f040bc4e361534a3e67f0994bd0 + languageName: node + linkType: hard + +"mkdirp@npm:0.5.x, mkdirp@npm:^0.5.0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.5": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mocha@npm:^7.0.0": + version: 7.2.0 + resolution: "mocha@npm:7.2.0" + dependencies: + ansi-colors: "npm:3.2.3" + browser-stdout: "npm:1.3.1" + chokidar: "npm:3.3.0" + debug: "npm:3.2.6" + diff: "npm:3.5.0" + escape-string-regexp: "npm:1.0.5" + find-up: "npm:3.0.0" + glob: "npm:7.1.3" + growl: "npm:1.10.5" + he: "npm:1.2.0" + js-yaml: "npm:3.13.1" + log-symbols: "npm:3.0.0" + minimatch: "npm:3.0.4" + mkdirp: "npm:0.5.5" + ms: "npm:2.1.1" + node-environment-flags: "npm:1.0.6" + object.assign: "npm:4.1.0" + strip-json-comments: "npm:2.0.1" + supports-color: "npm:6.0.0" + which: "npm:1.3.1" + wide-align: "npm:1.1.3" + yargs: "npm:13.3.2" + yargs-parser: "npm:13.1.2" + yargs-unparser: "npm:1.6.0" + bin: + _mocha: bin/_mocha + mocha: bin/mocha + checksum: 10c0/424d1f6f43271b19e7a8b5b0b4ea74841aa8ca136f9d3b2ed54cba49cf62fcd2abb7cc559a76fb8a00dadfe22db34a438002b5d35e982afb4d80b849dc0cef4c + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.1": + version: 2.1.1 + resolution: "ms@npm:2.1.1" + checksum: 10c0/056140c631e740369fa21142417aba1bd629ab912334715216c666eb681c8f015c622dd4e38bc1d836b30852b05641331661703af13a0397eb0ca420fc1e75d9 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: "npm:^5.2.2" + thunky: "npm:^1.0.2" + bin: + multicast-dns: cli.js + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.7": + version: 0.0.7 + resolution: "mute-stream@npm:0.0.7" + checksum: 10c0/c687cfe99289166fe17dcbd0cf49612c5d267410a7819b654a82df45016967d7b2b0b18b35410edef86de6bb089a00413557dc0182c5e78a4af50ba5d61edb42 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"nice-try@npm:^1.0.4": + version: 1.0.5 + resolution: "nice-try@npm:1.0.5" + checksum: 10c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f + languageName: node + linkType: hard + +"node-environment-flags@npm:1.0.6": + version: 1.0.6 + resolution: "node-environment-flags@npm:1.0.6" + dependencies: + object.getownpropertydescriptors: "npm:^2.0.3" + semver: "npm:^5.7.0" + checksum: 10c0/8be86f294f8b065a1e126e9ceb7a4b38b75eb7ec6391060e6e093ab9649e5c1fa977f2a5fe799b6ada862d65ce8259d1b7eabf2057774d641306e467d58cb96b + languageName: node + linkType: hard + +"node-forge@npm:^1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" + semver: "npm:^7.3.5" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 + languageName: node + linkType: hard + +"nopt@npm:3.x, nopt@npm:~3.0.6": + version: 3.0.6 + resolution: "nopt@npm:3.0.6" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: 10c0/f4414223c392dd215910942268d9bdc101ab876400f2c0626b88b718254f5c730dbab5eda58519dc4ea05b681ed8f09c147570ed273ade7fc07757e2e4f12c3d + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + +"nopt@npm:~4.0.1": + version: 4.0.3 + resolution: "nopt@npm:4.0.3" + dependencies: + abbrev: "npm:1" + osenv: "npm:^0.1.4" + bin: + nopt: bin/nopt.js + checksum: 10c0/03e54cdf8c9b46924cfadf333b2b86fc180410d74d51f9c72fec5ef9c6f1a19ec533f647c05e40d49ef7491af59664c5d0baace808d6ccfe3ff064ae630a61b4 + languageName: node + linkType: hard + +"nopt@npm:~5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: "npm:1" + bin: + nopt: bin/nopt.js + checksum: 10c0/fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"object-assign@npm:^4, object-assign@npm:^4.1.0": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4 + languageName: node + linkType: hard + +"object-keys@npm:^1.0.11, object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:4.1.0": + version: 4.1.0 + resolution: "object.assign@npm:4.1.0" + dependencies: + define-properties: "npm:^1.1.2" + function-bind: "npm:^1.1.1" + has-symbols: "npm:^1.0.0" + object-keys: "npm:^1.0.11" + checksum: 10c0/86e6c2a0c169924dc5fb8965c58760d1480ff57e60600c6bf32b083dc094f9587e9e765258485077480e70ae4ea10cf4d81eb4193e49c197821da37f0686a930 + languageName: node + linkType: hard + +"object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.defaults@npm:^1.1.0": + version: 1.1.0 + resolution: "object.defaults@npm:1.1.0" + dependencies: + array-each: "npm:^1.0.1" + array-slice: "npm:^1.0.0" + for-own: "npm:^1.0.0" + isobject: "npm:^3.0.0" + checksum: 10c0/9ed5c41ce500c2dce2e6f8baa71b0e73b013dcd57c02e545dd85b46e52140af707e2b05c31f6126209f8b15709f10817ddbe6fb5c13f8d873d811694f28ee3fd + languageName: node + linkType: hard + +"object.getownpropertydescriptors@npm:^2.0.3": + version: 2.1.8 + resolution: "object.getownpropertydescriptors@npm:2.1.8" + dependencies: + array.prototype.reduce: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + gopd: "npm:^1.0.1" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/553e9562fd86637c9c169df23a56f1d810d8c9b580a6d4be11552c009f32469310c9347f3d10325abf0cd9cfe4afc521a1e903fbd24148ae7ec860e1e7c75cf3 + languageName: node + linkType: hard + +"object.map@npm:^1.0.1": + version: 1.0.1 + resolution: "object.map@npm:1.0.1" + dependencies: + for-own: "npm:^1.0.0" + make-iterator: "npm:^1.0.0" + checksum: 10c0/f5dff48d3aa6604e8c1983c988a1314b8858181cbedc1671a83c8db6f247a97f31a7acb7ec1b85a72a785149bc34ffbd284d953d902fef7a3c19e2064959a0aa + languageName: node + linkType: hard + +"object.pick@npm:^1.2.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + languageName: node + linkType: hard + +"on-finished@npm:2.4.1, on-finished@npm:^2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + +"on-finished@npm:~2.3.0": + version: 2.3.0 + resolution: "on-finished@npm:2.3.0" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/c904f9e518b11941eb60279a3cbfaf1289bd0001f600a950255b1dede9fe3df8cd74f38483550b3bb9485165166acb5db500c3b4c4337aec2815c88c96fcc2ea + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + languageName: node + linkType: hard + +"once@npm:1.x, once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^2.0.0": + version: 2.0.1 + resolution: "onetime@npm:2.0.1" + dependencies: + mimic-fn: "npm:^1.0.0" + checksum: 10c0/b4e44a8c34e70e02251bfb578a6e26d6de6eedbed106cd78211d2fd64d28b6281d54924696554e4e966559644243753ac5df73c87f283b0927533d3315696215 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"open@npm:^10.0.3": + version: 10.1.0 + resolution: "open@npm:10.1.0" + dependencies: + default-browser: "npm:^5.2.1" + define-lazy-prop: "npm:^3.0.0" + is-inside-container: "npm:^1.0.0" + is-wsl: "npm:^3.1.0" + checksum: 10c0/c86d0b94503d5f735f674158d5c5d339c25ec2927562f00ee74590727292ed23e1b8d9336cb41ffa7e1fa4d3641d29b199b4ea37c78cb557d72b511743e90ebb + languageName: node + linkType: hard + +"optionator@npm:^0.5.0": + version: 0.5.0 + resolution: "optionator@npm:0.5.0" + dependencies: + deep-is: "npm:~0.1.2" + fast-levenshtein: "npm:~1.0.0" + levn: "npm:~0.2.5" + prelude-ls: "npm:~1.1.1" + type-check: "npm:~0.3.1" + wordwrap: "npm:~0.0.2" + checksum: 10c0/de4975668903bce1f86ab518e9096c7c8dbbbffa59b136036272f613b1793314e79ccbe618e72ed27ef156c9859d9f0e594182748da31685856c46af614148e2 + languageName: node + linkType: hard + +"optionator@npm:^0.8.2": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" + dependencies: + deep-is: "npm:~0.1.3" + fast-levenshtein: "npm:~2.0.6" + levn: "npm:~0.3.0" + prelude-ls: "npm:~1.1.2" + type-check: "npm:~0.3.2" + word-wrap: "npm:~1.2.3" + checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"os-homedir@npm:^1.0.0": + version: 1.0.2 + resolution: "os-homedir@npm:1.0.2" + checksum: 10c0/6be4aa67317ee247b8d46142e243fb4ef1d2d65d3067f54bfc5079257a2f4d4d76b2da78cba7af3cb3f56dbb2e4202e0c47f26171d11ca1ed4008d842c90363f + languageName: node + linkType: hard + +"os-tmpdir@npm:^1.0.0, os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"osenv@npm:^0.1.4": + version: 0.1.5 + resolution: "osenv@npm:0.1.5" + dependencies: + os-homedir: "npm:^1.0.0" + os-tmpdir: "npm:^1.0.0" + checksum: 10c0/b33ed4b77e662f3ee2a04bf4b56cad2107ab069dee982feb9e39ad44feb9aa0cf1016b9ac6e05d0d84c91fa496798fe48dd05a33175d624e51668068b9805302 + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-retry@npm:^6.2.0": + version: 6.2.0 + resolution: "p-retry@npm:6.2.0" + dependencies: + "@types/retry": "npm:0.12.2" + is-network-error: "npm:^1.0.0" + retry: "npm:^0.13.1" + checksum: 10c0/3277f2a8450fb1429c29c432d24c5965b32f187228f1beea56f5d49209717588a7dc0415def1c653f60e0d15ed72c56dacaa2d5fdfa71b0f860592b0aa6ce823 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.0 + resolution: "package-json-from-dist@npm:1.0.0" + checksum: 10c0/e3ffaf6ac1040ab6082a658230c041ad14e72fabe99076a2081bb1d5d41210f11872403fc09082daf4387fc0baa6577f96c9c0e94c90c394fd57794b66aa4033 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.1": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: "npm:^1.0.0" + map-cache: "npm:^0.2.0" + path-root: "npm:^0.1.1" + checksum: 10c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 + languageName: node + linkType: hard + +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 10c0/1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b + languageName: node + linkType: hard + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-is-inside@npm:^1.0.2": + version: 1.0.2 + resolution: "path-is-inside@npm:1.0.2" + checksum: 10c0/7fdd4b41672c70461cce734fc222b33e7b447fa489c7c4377c95e7e6852d83d69741f307d88ec0cc3b385b41cb4accc6efac3c7c511cd18512e95424f5fa980c + languageName: node + linkType: hard + +"path-key@npm:^2.0.1": + version: 2.0.1 + resolution: "path-key@npm:2.0.1" + checksum: 10c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: 10c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: "npm:^0.1.0" + checksum: 10c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pirates@npm:^4.0.6": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + languageName: node + linkType: hard + +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: "npm:^6.3.0" + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prelude-ls@npm:~1.1.0, prelude-ls@npm:~1.1.1, prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 + languageName: node + linkType: hard + +"pretty-bytes@npm:^5.3.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"progress@npm:^2.0.0": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: 10c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + +"punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"qjobs@npm:^1.2.0": + version: 1.2.0 + resolution: "qjobs@npm:1.2.0" + checksum: 10c0/772207772b856a3b1ec673b11a6cda074f1b82821644f2d042504b438ea3ea1fe918555547491e717e8694ec105379fe5139fc5ddd7937b21f7712bb648ed01d + languageName: node + linkType: hard + +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f + languageName: node + linkType: hard + +"qs@npm:^6.4.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + languageName: node + linkType: hard + +"raw-body@npm:~1.1.0": + version: 1.1.7 + resolution: "raw-body@npm:1.1.7" + dependencies: + bytes: "npm:1" + string_decoder: "npm:0.10" + checksum: 10c0/60c9692fa84096216403847359595c1c348eea9687cefc5bb1fab4f465bbed1a79ffac444083783c2b121a148e8d5720df120909b37598bf5f0c6a448bd79268 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.1": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.6": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:~3.2.0": + version: 3.2.0 + resolution: "readdirp@npm:3.2.0" + dependencies: + picomatch: "npm:^2.0.4" + checksum: 10c0/249d49fc31132bb2cd8fe37aceeab3ca4995e2d548effe0af69d0d55593d38c6f83f6e0c9606e4d0acdba9bfc64245fe45265128170ad4545a7a4efffbd330c2 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"rechoir@npm:^0.7.0": + version: 0.7.1 + resolution: "rechoir@npm:0.7.1" + dependencies: + resolve: "npm:^1.9.0" + checksum: 10c0/22c565f89845f8b9a0574d8bbc157fe489612d2882d036b5520640d4395dc837a997225de535513a847c5fcc47b7e0530b8c84e0ca51fa17dff44a83f41b2568 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": "npm:^7.8.4" + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 + languageName: node + linkType: hard + +"regexpp@npm:^2.0.1": + version: 2.0.1 + resolution: "regexpp@npm:2.0.1" + checksum: 10c0/4ac2cf4c68941728bffbba5a8f597a23385c2c05afc5bf5de74744ee048765ab84ea3ce3c6a5bdce102a3a54514b75b7add48b4c1abd925ca3afd40e537f2b5f + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": "npm:^0.8.0" + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.1.0" + regjsparser: "npm:^0.9.1" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: "npm:~0.5.0" + bin: + regjsparser: bin/parser + checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": + version: 1.0.1 + resolution: "resolve-dir@npm:1.0.1" + dependencies: + expand-tilde: "npm:^2.0.0" + global-modules: "npm:^1.0.0" + checksum: 10c0/8197ed13e4a51d9cd786ef6a09fc83450db016abe7ef3311ca39389b3e508d77c26fe0cf0483a9b407b8caa2764bb5ccc52cf6a017ded91492a416475a56066f + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve@npm:1.1.x": + version: 1.1.7 + resolution: "resolve@npm:1.1.7" + checksum: 10c0/f66dcad51854fca283fa68e9c11445c2117d7963b9ced6c43171784987df3bed6fb16c4af2bf6f07c02ace94a4f4ebe158d13780b6e14d60944478c860208245 + languageName: node + linkType: hard + +"resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.9.0": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A1.1.x#optional!builtin": + version: 1.1.7 + resolution: "resolve@patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf" + checksum: 10c0/f4f1471423d600a10944785222fa7250237ed8c98aa6b1e1f4dc0bb3dbfbcafcaac69a2ed23cd1f6f485ed23e7c939894ac1978284e4163754fade8a05358823 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.9.0#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"restore-cursor@npm:^2.0.0": + version: 2.0.0 + resolution: "restore-cursor@npm:2.0.0" + dependencies: + onetime: "npm:^2.0.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/f5b335bee06f440445e976a7031a3ef53691f9b7c4a9d42a469a0edaf8a5508158a0d561ff2b26a1f4f38783bcca2c0e5c3a44f927326f6694d5b44d7a4993e6 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 + languageName: node + linkType: hard + +"rimraf@npm:2.6.3": + version: 2.6.3 + resolution: "rimraf@npm:2.6.3" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 + languageName: node + linkType: hard + +"rimraf@npm:^2.6.2": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rimraf@npm:^5.0.5": + version: 5.0.10 + resolution: "rimraf@npm:5.0.10" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc + languageName: node + linkType: hard + +"rollup-plugin-babel@npm:^4.2.0": + version: 4.4.0 + resolution: "rollup-plugin-babel@npm:4.4.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.0.0" + rollup-pluginutils: "npm:^2.8.1" + peerDependencies: + "@babel/core": 7 || ^7.0.0-rc.2 + rollup: ">=0.60.0 <3" + checksum: 10c0/404e8006eb5d2c17ce3df2d208d431de513ac270f51c38d735b54e5a85ed6af86f8f146a35d4e6eb79ef7fc2665f047e04b026c1b755bee331b8b88fad193273 + languageName: node + linkType: hard + +"rollup-pluginutils@npm:^2.8.1": + version: 2.8.2 + resolution: "rollup-pluginutils@npm:2.8.2" + dependencies: + estree-walker: "npm:^0.6.1" + checksum: 10c0/20947bec5a5dd68b5c5c8423911e6e7c0ad834c451f1a929b1f4e2bc08836ad3f1a722ef2bfcbeca921870a0a283f13f064a317dc7a6768496e98c9a641ba290 + languageName: node + linkType: hard + +"rollup@npm:^4.13.0": + version: 4.20.0 + resolution: "rollup@npm:4.20.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.20.0" + "@rollup/rollup-android-arm64": "npm:4.20.0" + "@rollup/rollup-darwin-arm64": "npm:4.20.0" + "@rollup/rollup-darwin-x64": "npm:4.20.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.20.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.20.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.20.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.20.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.20.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.20.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.20.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.20.0" + "@rollup/rollup-linux-x64-musl": "npm:4.20.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.20.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.20.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.20.0" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/9b23bf0e3380e64573a5f68a55274d5c7969036e55c19aab9fb4deea2e938d76769db70f3c95ee3783c24af152bea1772ad73f9e3625b6ffd4e600a788fe97ea + languageName: node + linkType: hard + +"run-applescript@npm:^7.0.0": + version: 7.0.0 + resolution: "run-applescript@npm:7.0.0" + checksum: 10c0/bd821bbf154b8e6c8ecffeaf0c33cebbb78eb2987476c3f6b420d67ab4c5301faa905dec99ded76ebb3a7042b4e440189ae6d85bbbd3fc6e8d493347ecda8bfe + languageName: node + linkType: hard + +"run-async@npm:^2.2.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:^6.4.0": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: "npm:^1.9.0" + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-json-parse@npm:~1.0.1": + version: 1.0.1 + resolution: "safe-json-parse@npm:1.0.1" + checksum: 10c0/0c8a123b46f09096bf321abe32fd55ed153d3d368e7f341e35af7600355448712378cbc2a03dfb6276bb16806549bec9e0ade3a9c2ab5e2144946ff82a128c02 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + languageName: node + linkType: hard + +"selfsigned@npm:^2.4.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": "npm:^1.3.0" + node-forge: "npm:^1" + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 + languageName: node + linkType: hard + +"semver@npm:^5.5.0, semver@npm:^5.5.1, semver@npm:^5.6.0, semver@npm:^5.7.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.6.0": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: "npm:~1.3.4" + batch: "npm:0.6.1" + debug: "npm:2.6.9" + escape-html: "npm:~1.0.3" + http-errors: "npm:~1.6.2" + mime-types: "npm:~2.1.17" + parseurl: "npm:~1.3.2" + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + languageName: node + linkType: hard + +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.18.0" + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.1": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + languageName: node + linkType: hard + +"shebang-command@npm:^1.2.0": + version: 1.2.0 + resolution: "shebang-command@npm:1.2.0" + dependencies: + shebang-regex: "npm:^1.0.0" + checksum: 10c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "shebang-regex@npm:1.0.0" + checksum: 10c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + +"slice-ansi@npm:^2.1.0": + version: 2.1.0 + resolution: "slice-ansi@npm:2.1.0" + dependencies: + ansi-styles: "npm:^3.2.0" + astral-regex: "npm:^1.0.0" + is-fullwidth-code-point: "npm:^2.0.0" + checksum: 10c0/c317b21ec9e3d3968f3d5b548cbfc2eae331f58a03f1352621020799cbe695b3611ee972726f8f32d4ca530065a5ec9c74c97fde711c1f41b4a1585876b2c191 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socket.io-adapter@npm:~2.5.2": + version: 2.5.5 + resolution: "socket.io-adapter@npm:2.5.5" + dependencies: + debug: "npm:~4.3.4" + ws: "npm:~8.17.1" + checksum: 10c0/04a5a2a9c4399d1b6597c2afc4492ab1e73430cc124ab02b09e948eabf341180b3866e2b61b5084cb899beb68a4db7c328c29bda5efb9207671b5cb0bc6de44e + languageName: node + linkType: hard + +"socket.io-parser@npm:~4.2.4": + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" + dependencies: + "@socket.io/component-emitter": "npm:~3.1.0" + debug: "npm:~4.3.1" + checksum: 10c0/9383b30358fde4a801ea4ec5e6860915c0389a091321f1c1f41506618b5cf7cd685d0a31c587467a0c4ee99ef98c2b99fb87911f9dfb329716c43b587f29ca48 + languageName: node + linkType: hard + +"socket.io@npm:^4.7.2": + version: 4.7.5 + resolution: "socket.io@npm:4.7.5" + dependencies: + accepts: "npm:~1.3.4" + base64id: "npm:~2.0.0" + cors: "npm:~2.8.5" + debug: "npm:~4.3.2" + engine.io: "npm:~6.5.2" + socket.io-adapter: "npm:~2.5.2" + socket.io-parser: "npm:~4.2.4" + checksum: 10c0/221a2cd25f6077d6672cb8b19921336e1acf06788d4bade74953dc96dbfd8b788a5f721b051341a34ee81ef8e1b2028d39ad5257516776400a3f8f3f01255c5e + languageName: node + linkType: hard + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: "npm:^0.11.3" + uuid: "npm:^8.3.2" + websocket-driver: "npm:^0.7.4" + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"source-map-support@npm:^0.3.2": + version: 0.3.3 + resolution: "source-map-support@npm:0.3.3" + dependencies: + source-map: "npm:0.1.32" + checksum: 10c0/b1fc43848a38d66db85e6989cfe058e5cb81832ec416ffaa2d164d2216aefda83ca3e67ca6414cab60215e4dacc5b7ccd6cf096ca1942a36ce8ddc0586171141 + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map@npm:0.1.32": + version: 0.1.32 + resolution: "source-map@npm:0.1.32" + dependencies: + amdefine: "npm:>=0.0.4" + checksum: 10c0/e1040d238f23fc234214aff4e4fd4662e50732cb73a0a804eeec24c93979e5fb227c062805ea032aa94569ccd5d42eebb88e12d67069c181148f863f8456901b + languageName: node + linkType: hard + +"source-map@npm:^0.4.4": + version: 0.4.4 + resolution: "source-map@npm:0.4.4" + dependencies: + amdefine: "npm:>=0.0.4" + checksum: 10c0/685924f8b0dfb1580c2d12f85b1ba116f1382ed9c4b227d8a15958d39c3e5494ee21c5e3b4a5bf1c6c489041b9dbaeb7cff14dda7ad6458365c665492677f588 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:~0.2.0": + version: 0.2.0 + resolution: "source-map@npm:0.2.0" + dependencies: + amdefine: "npm:>=0.0.4" + checksum: 10c0/24ac0df484721203e7c98faaa2a56cc73d7e8b8468a03459dd98e09b84421056c456dbfea1bf4f292142c3b88c160574f648cbc83e8fe772cf0b3342f0bba68d + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: "npm:^4.1.0" + detect-node: "npm:^2.0.4" + hpack.js: "npm:^2.1.6" + obuf: "npm:^1.1.2" + readable-stream: "npm:^3.0.6" + wbuf: "npm:^1.7.3" + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: "npm:^4.1.0" + handle-thing: "npm:^2.0.0" + http-deceiver: "npm:^1.2.7" + select-hose: "npm:^2.0.0" + spdy-transport: "npm:^3.0.0" + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.1, sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + +"streamroller@npm:^3.1.5": + version: 3.1.5 + resolution: "streamroller@npm:3.1.5" + dependencies: + date-format: "npm:^4.0.14" + debug: "npm:^4.3.4" + fs-extra: "npm:^8.1.0" + checksum: 10c0/0bdeec34ad37487d959ba908f17067c938f544db88b5bb1669497a67a6b676413229ce5a6145c2812d06959ebeb8842e751076647d4b323ca06be612963b9099 + languageName: node + linkType: hard + +"string-template@npm:~0.2.1": + version: 0.2.1 + resolution: "string-template@npm:0.2.1" + checksum: 10c0/5dc9bd8741e50aaf1ebb616c64fdada32301dc52718692a7a13088285b96fecd1010ab612b348ef29c08dff4df4f96c8e80689ca855a578d01cc182e48199182 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2, string-width@npm:^2.1.0": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^4.0.0" + checksum: 10c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610 + languageName: node + linkType: hard + +"string-width@npm:^3.0.0, string-width@npm:^3.1.0": + version: 3.1.0 + resolution: "string-width@npm:3.1.0" + dependencies: + emoji-regex: "npm:^7.0.1" + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^5.1.0" + checksum: 10c0/85fa0d4f106e7999bb68c1c640c76fa69fb8c069dab75b009e29c123914e2d3b532e6cfa4b9d1bd913176fc83dedd7a2d7bf40d21a81a8a1978432cedfb65b91 + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"string_decoder@npm:0.10": + version: 0.10.31 + resolution: "string_decoder@npm:0.10.31" + checksum: 10c0/1c628d78f974aa7539c496029f48e7019acc32487fc695464f9d6bdfec98edd7d933a06b3216bc2016918f6e75074c611d84430a53cb0e43071597d6c1ac5e25 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^3.0.0": + version: 3.0.1 + resolution: "strip-ansi@npm:3.0.1" + dependencies: + ansi-regex: "npm:^2.0.0" + checksum: 10c0/f6e7fbe8e700105dccf7102eae20e4f03477537c74b286fd22cfc970f139002ed6f0d9c10d0e21aa9ed9245e0fa3c9275930e8795c5b947da136e4ecb644a70f + languageName: node + linkType: hard + +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: "npm:^3.0.0" + checksum: 10c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d + languageName: node + linkType: hard + +"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": + version: 5.2.0 + resolution: "strip-ansi@npm:5.2.0" + dependencies: + ansi-regex: "npm:^4.1.0" + checksum: 10c0/de4658c8a097ce3b15955bc6008f67c0790f85748bdc025b7bc8c52c7aee94bc4f9e50624516150ed173c3db72d851826cd57e7a85fe4e4bb6dbbebd5d297fdf + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-json-comments@npm:2.0.1, strip-json-comments@npm:^2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"supports-color@npm:6.0.0": + version: 6.0.0 + resolution: "supports-color@npm:6.0.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/bb88ccbfe1f60a6d580254ea29c3f1afbc41ed7e654596a276b83f6b1686266c3c91a56b54efe1c2f004ea7d505dc37890fefd1b12c3bbc76d8022de76233d0b + languageName: node + linkType: hard + +"supports-color@npm:^2.0.0": + version: 2.0.0 + resolution: "supports-color@npm:2.0.0" + checksum: 10c0/570e0b63be36cccdd25186350a6cb2eaad332a95ff162fa06d9499982315f2fe4217e69dd98e862fbcd9c81eaff300a825a1fe7bf5cc752e5b84dfed042b0dda + languageName: node + linkType: hard + +"supports-color@npm:^3.1.0": + version: 3.2.3 + resolution: "supports-color@npm:3.2.3" + dependencies: + has-flag: "npm:^1.0.0" + checksum: 10c0/d39a57dbd75c3b5740654f8ec16aaf7203b8d12b8a51314507bed590c9081120805f105b4ce741db13105e6f842ac09700e4bd665b9ffc46eb0b34ba54720bd3 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"table@npm:^5.2.3": + version: 5.4.6 + resolution: "table@npm:5.4.6" + dependencies: + ajv: "npm:^6.10.2" + lodash: "npm:^4.17.14" + slice-ansi: "npm:^2.1.0" + string-width: "npm:^3.0.0" + checksum: 10c0/87ad7b7cc926aa06e0e2a91a0fb4fcb8b365da87969bc5c74b54cae5d518a089245f44bf80f945ec1aa74c405782db15eeb1dd1926315d842cdc9dbb9371672e + languageName: node + linkType: hard + +"tapable@npm:^2.1.1, tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.20" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + languageName: node + linkType: hard + +"terser@npm:^5.26.0": + version: 5.31.3 + resolution: "terser@npm:5.31.3" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/eb2b525dada9febd3db74e94bd295f9cd7abd809e4f9c6bbc795a3048ad50fd327c15eab99db383fa820239680eef6d2dbd7dc05361769c204ddee5cf684d41e + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thingies@npm:^1.20.0": + version: 1.21.0 + resolution: "thingies@npm:1.21.0" + peerDependencies: + tslib: ^2 + checksum: 10c0/7570ee855aecb73185a672ecf3eb1c287a6512bf5476449388433b2d4debcf78100bc8bfd439b0edd38d2bc3bfb8341de5ce85b8557dec66d0f27b962c9a8bc1 + languageName: node + linkType: hard + +"through@npm:^2.3.6": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + languageName: node + linkType: hard + +"tiny-lr@npm:^1.1.1": + version: 1.1.1 + resolution: "tiny-lr@npm:1.1.1" + dependencies: + body: "npm:^5.1.0" + debug: "npm:^3.1.0" + faye-websocket: "npm:~0.10.0" + livereload-js: "npm:^2.3.0" + object-assign: "npm:^4.1.0" + qs: "npm:^6.4.0" + checksum: 10c0/ce2c1b8d9e197423bcc451e6621aa14d5aedd5defcb025e7d4722cfa3341ffed16f0771a15d2339ac932a55cf3cf255dee02730b50a48d79c1ef51b62dd450b0 + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"tmp@npm:^0.2.1": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + +"tree-dump@npm:^1.0.1": + version: 1.0.2 + resolution: "tree-dump@npm:1.0.2" + peerDependencies: + tslib: 2 + checksum: 10c0/d1d180764e9c691b28332dbd74226c6b6af361dfb1e134bb11e60e17cb11c215894adee50ffc578da5dcf546006693947be8b6665eb1269b56e2f534926f1c1f + languageName: node + linkType: hard + +"tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0": + version: 2.6.3 + resolution: "tslib@npm:2.6.3" + checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-check@npm:~0.3.1, type-check@npm:~0.3.2": + version: 0.3.2 + resolution: "type-check@npm:0.3.2" + dependencies: + prelude-ls: "npm:~1.1.2" + checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 + languageName: node + linkType: hard + +"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + languageName: node + linkType: hard + +"ua-parser-js@npm:^0.7.30": + version: 0.7.38 + resolution: "ua-parser-js@npm:0.7.38" + checksum: 10c0/da963eae1618f0c60d0812851a4d478fb8bb127ee6e5c566b8dac27eeb25757d818d9ade2c312d73018f2bb3c3e629d26c066fcda3cb9d55a31289c9566198df + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4, uglify-js@npm:^3.16.1": + version: 3.19.1 + resolution: "uglify-js@npm:3.19.1" + bin: + uglifyjs: bin/uglifyjs + checksum: 10c0/7609ab3f10d54de5ef014770f845c747266a969e9092d2284ca0ba18f10a4488208c1491bd8b52bd4c40cf6687b47a77c495f08e4a625babcdd57f58e34a3976 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 + languageName: node + linkType: hard + +"underscore.string@npm:~3.3.5": + version: 3.3.6 + resolution: "underscore.string@npm:3.3.6" + dependencies: + sprintf-js: "npm:^1.1.1" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/172319c7ef5436587e6f0fb5afe0b2e6b50f723a4070c7fb3454c5dfa5398ed3b7042c049eac2826bdd44d37cbd16b2b965d0ccc1597fde354b1d3a846fd4a39 + languageName: node + linkType: hard + +"undici-types@npm:~6.13.0": + version: 6.13.0 + resolution: "undici-types@npm:6.13.0" + checksum: 10c0/2de55181f569c77a4f08063f8bf2722fcbb6ea312a26a9e927bd1f5ea5cf3a281c5ddf23155061db083e0a25838f54813543ff13b0ac34d230d5c1205ead66c1 + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 10c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 10c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: "npm:^3.1.2" + picocolors: "npm:^1.0.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"uri-path@npm:^1.0.0": + version: 1.0.0 + resolution: "uri-path@npm:1.0.0" + checksum: 10c0/fb1361d4fcf807ccada57e644fea0b87d0b4c4b304a58b4fb6813d5e6c36108356154977cbd3018d692a7625a9c549fa0f4759d7cc262319f2fd02f5c5a030ea + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"v8flags@npm:^4.0.1": + version: 4.0.1 + resolution: "v8flags@npm:4.0.1" + checksum: 10c0/59500e19ff9e7b4e2f09bcfe12d16d9443bf36a0e9b65b5fa6688f12c4b3f833d99ecd8debdbe856c047080bd0a73bd2ca5066f524efb1a87fdca6c1e0aecd74 + languageName: node + linkType: hard + +"v8flags@npm:~3.2.0": + version: 3.2.0 + resolution: "v8flags@npm:3.2.0" + dependencies: + homedir-polyfill: "npm:^1.0.1" + checksum: 10c0/aa0149384c1b75eee60f9e4339dbcc891d5a2154f51dbe41feb35a2227e88c0f30701234676c47b7887414c6a95bce23783931eeed52126842b7ba3a75984da7 + languageName: node + linkType: hard + +"vary@npm:^1, vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + +"void-elements@npm:^2.0.0": + version: 2.0.1 + resolution: "void-elements@npm:2.0.1" + checksum: 10c0/23b4f35bbeabcaa5c87a9f638ae80862a9313dccbaa8973b0eada81dbe97488ae11baf4d8aa2846bc397d31456afdfd8d791bb44c542f83735e6d04af6996f4d + languageName: node + linkType: hard + +"watchpack@npm:^2.4.1": + version: 2.4.1 + resolution: "watchpack@npm:2.4.1" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/c694de0a61004e587a8a0fdc9cfec20ee692c52032d9ab2c2e99969a37fdab9e6e1bd3164ed506f9a13f7c83e65563d563e0d6b87358470cdb7309b83db78683 + languageName: node + linkType: hard + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^7.1.0": + version: 7.3.0 + resolution: "webpack-dev-middleware@npm:7.3.0" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^4.6.0" + mime-types: "npm:^2.1.31" + on-finished: "npm:^2.4.1" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 10c0/03d34e1c7af3af8c98efe754ce6cfb9fe84a1f02d312bc37a77f55b8ae9525bc3ac913fc92c0143ab93a3a6377781661f07336031fcd5e6bbddccc11df9345db + languageName: node + linkType: hard + +"webpack-dev-server@npm:^5.0.3": + version: 5.0.4 + resolution: "webpack-dev-server@npm:5.0.4" + dependencies: + "@types/bonjour": "npm:^3.5.13" + "@types/connect-history-api-fallback": "npm:^1.5.4" + "@types/express": "npm:^4.17.21" + "@types/serve-index": "npm:^1.9.4" + "@types/serve-static": "npm:^1.15.5" + "@types/sockjs": "npm:^0.3.36" + "@types/ws": "npm:^8.5.10" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.2.1" + chokidar: "npm:^3.6.0" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + default-gateway: "npm:^6.0.3" + express: "npm:^4.17.3" + graceful-fs: "npm:^4.2.6" + html-entities: "npm:^2.4.0" + http-proxy-middleware: "npm:^2.0.3" + ipaddr.js: "npm:^2.1.0" + launch-editor: "npm:^2.6.1" + open: "npm:^10.0.3" + p-retry: "npm:^6.2.0" + rimraf: "npm:^5.0.5" + schema-utils: "npm:^4.2.0" + selfsigned: "npm:^2.4.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^7.1.0" + ws: "npm:^8.16.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/f3b5ffac798bdfdb7cc3d24000bde49816eab42fc6062641e6e61cd0057e8c268d495f8162fb97aeaee5e273c91457e90a99ba780526744ad2002e9e99e57036 + languageName: node + linkType: hard + +"webpack-merge@npm:^4.1.5": + version: 4.2.2 + resolution: "webpack-merge@npm:4.2.2" + dependencies: + lodash: "npm:^4.17.15" + checksum: 10c0/283cb4ffe4d4ae6de23d595154868780126835ded241748da0b070c6cca6974c229493ac0b6b7160c2c92950c950c8e5edf036a192da78e32e22a9c81593ad16 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + languageName: node + linkType: hard + +"webpack@npm:^5.90.3": + version: 5.93.0 + resolution: "webpack@npm:5.93.0" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.12.1" + "@webassemblyjs/wasm-edit": "npm:^1.12.1" + "@webassemblyjs/wasm-parser": "npm:^1.12.1" + acorn: "npm:^8.7.1" + acorn-import-attributes: "npm:^1.9.5" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.0" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/f0c72f1325ff57a4cc461bb978e6e1296f2a7d45c9765965271aa686ccdd448512956f4d7fdcf8c164d073af046c5a0aba17ce85ea98e33e5e2bfbfe13aa5808 + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: "npm:>=0.5.1" + safe-buffer: "npm:>=5.1.0" + websocket-extensions: "npm:>=0.1.1" + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + languageName: node + linkType: hard + +"which@npm:1.3.1, which@npm:^1.1.1, which@npm:^1.2.1, which@npm:^1.2.14, which@npm:^1.2.9": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: "npm:^2.0.0" + bin: + which: ./bin/which + checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:~2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"wide-align@npm:1.1.3": + version: 1.1.3 + resolution: "wide-align@npm:1.1.3" + dependencies: + string-width: "npm:^1.0.2 || 2" + checksum: 10c0/9bf69ad55f7bcccd5a7af2ebbb8115aebf1b17e6d4f0a2a40a84f5676e099153b9adeab331e306661bf2a8419361bacba83057a62163947507473ce7ac4116b7 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wordwrap@npm:~0.0.2": + version: 0.0.3 + resolution: "wordwrap@npm:0.0.3" + checksum: 10c0/b3b212f8b2167091f59bc60929ada2166eb157abb6c8c82e2a705fe5aa5876440c3966ab39eb6c7bcb2ff0ac0c8d9fba726a9c2057b83bd65cdc1858f9d816ce + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^5.1.0": + version: 5.1.0 + resolution: "wrap-ansi@npm:5.1.0" + dependencies: + ansi-styles: "npm:^3.2.0" + string-width: "npm:^3.0.0" + strip-ansi: "npm:^5.0.0" + checksum: 10c0/fcd0b39b7453df512f2fe8c714a1c1b147fe3e6a4b5a2e4de6cadc3af47212f335eceaffe588e98322d6345e72672137e2c0b834d8a662e73a32296c1c8216bb + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write@npm:1.0.3": + version: 1.0.3 + resolution: "write@npm:1.0.3" + dependencies: + mkdirp: "npm:^0.5.1" + checksum: 10c0/2ab5472e32ce2d25279a9d22365c5dd5b95fe40497ca43fa329aa61687fca56e36837615a1b6adfc4ca540389383185680a23497d75a1698b1dcbb52741d29a4 + languageName: node + linkType: hard + +"ws@npm:^8.16.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + languageName: node + linkType: hard + +"ws@npm:~8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yargs-parser@npm:13.1.2, yargs-parser@npm:^13.1.2": + version: 13.1.2 + resolution: "yargs-parser@npm:13.1.2" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/aeded49d2285c5e284e48b7c69eab4a6cf1c94decfdba073125cc4054ff49da7128a3c7c840edb6b497a075e455be304e89ba4b9228be35f1ed22f4a7bba62cc + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs-unparser@npm:1.6.0": + version: 1.6.0 + resolution: "yargs-unparser@npm:1.6.0" + dependencies: + flat: "npm:^4.1.0" + lodash: "npm:^4.17.15" + yargs: "npm:^13.3.0" + checksum: 10c0/47e3eb081d1745a8e05332fef8c5aaecfae4e824f915280dccd44401b4e2342d6827cf8fd7b86cdebd1d08ec19f84ea51a555a3968525fd8c59564bdc3bb283d + languageName: node + linkType: hard + +"yargs@npm:13.3.2, yargs@npm:^13.3.0": + version: 13.3.2 + resolution: "yargs@npm:13.3.2" + dependencies: + cliui: "npm:^5.0.0" + find-up: "npm:^3.0.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^3.0.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^13.1.2" + checksum: 10c0/6612f9f0ffeee07fff4c85f153d10eba4072bf5c11e1acba96153169f9d771409dfb63253dbb0841ace719264b663cd7b18c75c0eba91af7740e76094239d386 + languageName: node + linkType: hard + +"yargs@npm:^16.1.1": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: 10c0/cb287fe5e6acfa82690acb43c283de34e945c571a78a939774f6eaba7c285bacdf6c90fbc16ce530060863984c906d2b4c6ceb069c94d1e0a06d5f2b458e2a92 + languageName: node + linkType: hard