index.js.map 1.11 MB
Newer Older
1
{"version":3,"sources":["webpack://expect/webpack/universalModuleDefinition","webpack://expect/webpack/bootstrap","webpack://expect/./node_modules/@babel/code-frame/lib/index.js","webpack://expect/./node_modules/@babel/helper-validator-identifier/lib/identifier.js","webpack://expect/./node_modules/@babel/helper-validator-identifier/lib/index.js","webpack://expect/./node_modules/@babel/helper-validator-identifier/lib/keyword.js","webpack://expect/./node_modules/@babel/highlight/lib/index.js","webpack://expect/./node_modules/ansi-regex/index.js","webpack://expect/./node_modules/ansi-styles/index.js","webpack://expect/./node_modules/ansi-styles/node_modules/color-convert/conversions.js","webpack://expect/./node_modules/ansi-styles/node_modules/color-convert/index.js","webpack://expect/./node_modules/ansi-styles/node_modules/color-convert/route.js","webpack://expect/./node_modules/base64-js/index.js","webpack://expect/./node_modules/braces/index.js","webpack://expect/./node_modules/braces/lib/compile.js","webpack://expect/./node_modules/braces/lib/constants.js","webpack://expect/./node_modules/braces/lib/expand.js","webpack://expect/./node_modules/braces/lib/parse.js","webpack://expect/./node_modules/braces/lib/stringify.js","webpack://expect/./node_modules/braces/lib/utils.js","webpack://expect/./node_modules/buffer/index.js","webpack://expect/./node_modules/color-name/index.js","webpack://expect/./node_modules/fill-range/index.js","webpack://expect/./node_modules/ieee754/index.js","webpack://expect/./node_modules/isarray/index.js","webpack://expect/./node_modules/js-tokens/index.js","webpack://expect/./node_modules/micromatch/index.js","webpack://expect/./node_modules/path-browserify/index.js","webpack://expect/./node_modules/picomatch/index.js","webpack://expect/./node_modules/picomatch/lib/constants.js","webpack://expect/./node_modules/picomatch/lib/parse.js","webpack://expect/./node_modules/picomatch/lib/picomatch.js","webpack://expect/./node_modules/picomatch/lib/scan.js","webpack://expect/./node_modules/picomatch/lib/utils.js","webpack://expect/./node_modules/process/browser.js","webpack://expect/./node_modules/react-is/cjs/react-is.development.js","webpack://expect/./node_modules/react-is/index.js","webpack://expect/./node_modules/slash/index.js","webpack://expect/./node_modules/stack-utils/index.js","webpack://expect/./node_modules/to-regex-range/index.js","webpack://expect/./node_modules/to-regex-range/node_modules/is-number/index.js","webpack://expect/./node_modules/util/node_modules/inherits/inherits_browser.js","webpack://expect/./node_modules/util/support/isBufferBrowser.js","webpack://expect/./node_modules/util/util.js","webpack://expect/(webpack)/buildin/global.js","webpack://expect/(webpack)/buildin/module.js","webpack://expect/./packages/diff-sequences/build/index.js","webpack://expect/./packages/expect/build/fakeChalk.js","webpack://expect/./packages/expect/src/asymmetricMatchers.ts","webpack://expect/./packages/expect/src/extractExpectedAssertionsErrors.ts","webpack://expect/./packages/expect/src/index.ts","webpack://expect/./packages/expect/src/jasmineUtils.ts","webpack://expect/./packages/expect/src/jestMatchersObject.ts","webpack://expect/./packages/expect/src/matchers.ts","webpack://expect/./packages/expect/src/print.ts","webpack://expect/./packages/expect/src/spyMatchers.ts","webpack://expect/./packages/expect/src/toThrowMatchers.ts","webpack://expect/./packages/expect/src/utils.ts","webpack://expect/./packages/jest-diff/build/cleanupSemantic.js","webpack://expect/./packages/jest-diff/build/constants.js","webpack://expect/./packages/jest-diff/build/diffLines.js","webpack://expect/./packages/jest-diff/build/diffStrings.js","webpack://expect/./packages/jest-diff/build/getAlignedDiffs.js","webpack://expect/./packages/jest-diff/build/index.js","webpack://expect/./packages/jest-diff/build/joinAlignedDiffs.js","webpack://expect/./packages/jest-diff/build/normalizeDiffOptions.js","webpack://expect/./packages/jest-diff/build/printDiffs.js","webpack://expect/./packages/jest-get-type/build/index.js","webpack://expect/./packages/jest-matcher-utils/build/Replaceable.js","webpack://expect/./packages/jest-matcher-utils/build/deepCyclicCopyReplaceable.js","webpack://expect/./packages/jest-matcher-utils/build/index.js","webpack://expect/./packages/jest-message-util/build/index.js","webpack://expect/./packages/pretty-format/build/collections.js","webpack://expect/./packages/pretty-format/build/index.js","webpack://expect/./packages/pretty-format/build/plugins/AsymmetricMatcher.js","webpack://expect/./packages/pretty-format/build/plugins/ConvertAnsi.js","webpack://expect/./packages/pretty-format/build/plugins/DOMCollection.js","webpack://expect/./packages/pretty-format/build/plugins/DOMElement.js","webpack://expect/./packages/pretty-format/build/plugins/Immutable.js","webpack://expect/./packages/pretty-format/build/plugins/ReactElement.js","webpack://expect/./packages/pretty-format/build/plugins/ReactTestComponent.js","webpack://expect/./packages/pretty-format/build/plugins/lib/escapeHTML.js","webpack://expect/./packages/pretty-format/build/plugins/lib/markup.js"],"names":["Object","defineProperty","exports","value","codeFrameColumns","default","_default","_highlight","_interopRequireWildcard","require","_getRequireWildcardCache","WeakMap","cache","obj","__esModule","has","get","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","deprecationWarningShown","getDefs","chalk","gutter","grey","marker","red","bold","message","NEWLINE","getMarkerLines","loc","source","opts","startLoc","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","rawLines","highlighted","highlightCode","forceColor","shouldHighlight","getChalk","defs","maybeHighlight","chalkFn","string","lines","split","hasColumns","numberMaxWidth","String","highlightedLines","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join","reset","colNumber","process","emitWarning","deprecationError","Error","name","console","warn","location","isIdentifierStart","isIdentifierChar","isIdentifierName","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","pos","test","fromCharCode","isFirst","_i","_Array$from","from","char","cp","codePointAt","enumerable","_identifier","_keyword","isReservedWord","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isStrictReservedWord","isKeyword","reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","word","inModule","highlight","_jsTokens","_helperValidatorIdentifier","_chalk","_interopRequireDefault","cyan","capitalized","yellow","jsx_tag","punctuator","magenta","green","regex","comment","invalid","white","bgRed","JSX_TAG","BRACKET","getTokenType","match","offset","text","token","matchToToken","type","substr","toLowerCase","highlightTokens","args","colorize","str","options","supportsColor","constructor","enabled","level","module","onlyFirst","pattern","undefined","wrapAnsi16","fn","wrapAnsi256","wrapAnsi16m","rgb","ansi2ansi","n","rgb2rgb","r","g","b","setLazyProperty","object","property","configurable","colorConvert","makeDynamicStyles","wrap","targetSpace","identity","isBackground","styles","entries","sourceSpace","suite","assembleStyles","codes","Map","modifier","dim","italic","underline","inverse","hidden","strikethrough","color","black","blue","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlack","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","gray","bgGray","bgGrey","groupName","group","styleName","style","open","close","cssKeywords","reverseKeywords","keys","convert","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","ansi16","ansi256","hcg","apple","model","delta","h","s","l","rdif","gdif","bdif","v","diff","diffc","c","w","k","m","y","comparativeDistance","x","reversed","currentClosestDistance","Infinity","currentClosestKeyword","distance","z","a","t2","t3","val","t1","smin","lmin","sv","hi","floor","f","p","q","t","vmin","sl","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","saturation","round","ansi","mult","rem","integer","toString","toUpperCase","substring","colorString","parseInt","chroma","grayscale","hue","pure","mg","conversions","route","models","wrapRaw","wrappedFn","arg0","conversion","wrapRounded","result","len","forEach","fromModel","routes","routeModels","toModel","raw","buildGraph","graph","parent","deriveBFS","queue","current","pop","adjacents","adjacent","node","unshift","link","to","wrapConversion","path","cur","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","charCodeAt","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","output","push","extraBytes","parts","maxChunkLength","len2","stringify","compile","expand","parse","braces","input","create","concat","nodupes","noempty","filter","Boolean","fill","utils","ast","walk","invalidBlock","isInvalidBrace","invalidNode","escapeInvalid","prefix","isOpen","isClose","prev","nodes","ranges","reduce","range","toRegex","child","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","append","stash","enclose","flatten","ele","item","rangeLimit","dollar","exceedsLimit","step","RangeError","encloseBrace","block","TypeError","maxLength","SyntaxError","stack","brackets","depth","memo","advance","keepEscaping","closed","next","keepQuotes","brace","commas","shift","siblings","before","splice","isOpenOrClose","isInteger","Number","trim","find","limit","escapeNode","escaped","acc","flat","base64","ieee754","Buffer","SlowBuffer","INSPECT_MAX_BYTES","TYPED_ARRAY_SUPPORT","global","typedArraySupport","kMaxLength","__proto__","foo","subarray","e","createBuffer","that","arg","encodingOrOffset","allocUnsafe","poolSize","_augment","ArrayBuffer","fromArrayBuffer","fromString","fromObject","Symbol","species","assertSize","size","alloc","encoding","checked","allocUnsafeSlow","isEncoding","actual","write","fromArrayLike","array","byteOffset","isBuffer","copy","buffer","isnan","data","_isBuffer","compare","list","buf","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","arguments","apply","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","toHex","bytes","newBuf","sliceLen","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","lo","src","dst","util","toRegexRange","isObject","transform","toNumber","isValidValue","isNumber","zeros","pad","dash","padStart","toMaxLen","negative","toSequence","negatives","sort","positives","capture","toRange","isNumbers","stop","rangeError","invalidRange","strictRanges","invalidStep","fillNumbers","descending","startString","endString","stepString","abs","padded","maxLen","format","fillLetters","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","NaN","rt","log","LN2","picomatch","isEmptyString","micromatch","patterns","omit","keep","items","onResult","state","add","isMatch","negated","negatedExtglob","matched","delete","matches","failglob","nonull","nullglob","unescape","matcher","any","not","contains","some","startsWith","matchKeys","every","all","glob","posix","isWindows","makeRe","exec","toPosixSlashes","scan","nobrace","braceExpand","normalizeArray","allowAboveRoot","up","last","resolve","resolvedPath","resolvedAbsolute","cwd","charAt","normalize","isAbsolute","trailingSlash","paths","relative","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","xs","WIN_SLASH","WIN_NO_SLASH","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","START_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","POSIX_CHARS","WINDOWS_CHARS","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","digit","lower","print","punct","space","upper","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","CHAR_BACKWARD_SLASH","CHAR_GRAVE_ACCENT","SEP","extglobChars","chars","globChars","win32","constants","expandRange","ex","escapeRegex","syntaxError","bos","prepend","tokens","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","dot","nodot","qmarkNoDot","star","bash","noext","noextglob","consumed","backtrack","parens","quotes","removePrefix","extglobs","eos","peek","consume","negate","count","increment","decrement","tok","isBrace","isExtglob","extglob","inner","extglobOpen","conditions","extglobClose","extglobStar","fastpaths","backslashes","esc","first","rest","wrapOutput","slashes","idx","pre","strictBrackets","nobracket","prevValue","literalBrackets","hasRegexChars","outputIndex","tokensIndex","dots","comma","toks","isGroup","supportsLookbehinds","nonegate","noglobstar","prior","isStart","afterStar","after","strictSlashes","escapeLast","suffix","slashDot","returnState","fns","arrayMatcher","isState","compileRe","isIgnored","ignore","ignoreOpts","onMatch","returnObject","onIgnore","matchBase","returnOutput","flags","nocase","err","debug","isPathSeparator","isPrefix","isGlobstar","scanToEnd","lastIndex","isBracket","isGlob","braceEscaped","finished","isExtglobChar","noparen","base","removeBackslashes","maxDepth","prevIndex","platform","isRegexChar","segs","version","windows","lastIdx","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","runClearTimeout","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","run","nextTick","Item","title","browser","env","argv","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","umask","hasSymbol","for","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","$$typeof","typeOf","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isExtendedLengthPath","hasNonAscii","StackUtils","_cwd","_internals","internals","_wrapCallSite","wrapCallSite","nodeInternals","natives","clean","outdent","lastNonAtLine","st","isInternal","internal","isAtLine","captureString","limitBefore","stackTraceLimit","captureStackTrace","prepBefore","prepareStackTrace","site","at","getLineNumber","getColumnNumber","_setFile","getFileName","isConstructor","isEval","evalOrigin","getEvalOrigin","isNative","native","typename","getTypeName","er","fname","getFunctionName","function","meth","getMethodName","method","filename","file","re","methodRe","parseLine","ctor","evalFile","evalLine","evalCol","lnum","col","closeParen","closes","methodMatch","evalColumn","bound","bind","relaxZeros","strictZeros","relax","shorthand","cacheKey","isPadded","hasPadding","newMin","splitToPatterns","collatePatterns","neg","onlyNegative","filterPatterns","onlyPositive","intersected","subpatterns","splitToRanges","nines","countNines","stops","countZeros","rangeToPattern","digits","zipped","zip","startDigit","stopDigit","toCharacterClass","toQuantifier","padZeros","comparison","intersection","clearCache","inherits","superCtor","super_","writable","TempCtor","getOwnPropertyDescriptors","descriptors","formatRegExp","isString","objects","JSON","_","isNull","deprecate","msg","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","trace","error","debugs","debugEnviron","debuglog","isUndefined","NODE_DEBUG","pid","ctx","seen","stylize","stylizeNoColor","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","hash","recurseTimes","isFunction","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","isError","formatError","isRegExp","isDate","Date","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","numLinesEst","ar","isNullOrUndefined","isSymbol","objectToString","isPrimitive","o","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","origin","prop","kCustomPromisifiedSymbol","promisify","original","promiseResolve","promiseReject","promise","Promise","reject","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackifyOnRejected","reason","cb","newReason","callbackify","callbackified","maybeCb","self","then","rej","Function","window","webpackPolyfill","children","pkg","NOT_YET_SET","countCommonItemsF","aIndex","aEnd","bIndex","bEnd","isCommon","nCommon","countCommonItemsR","aStart","bStart","extendPathsF","bF","aIndexesF","iMaxF","iF","kF","aFirst","aIndexPrev1","nF","extendPathsR","bR","aIndexesR","iMaxR","iR","kR","nR","extendOverlappablePathsF","division","aLength","bLength","baDeltaLength","kMinOverlapF","kMaxOverlapF","insert","aLastPrev","bFirst","nCommonF","aLast","bLastPrev","nCommonR","aIndexPrevFirst","bIndexPrevFirst","aEndPreceding","bEndPreceding","nChangePreceding","nCommonPreceding","aCommonPreceding","bCommonPreceding","nCommonFollowing","aCommonFollowing","bCommonFollowing","aStartFollowing","bStartFollowing","nChangeFollowing","extendOverlappablePathsR","kMinOverlapR","kMaxOverlapR","bLast","divide","nChange","dMin","dMax","findSubsequences","transposed","callbacks","foundSubsequence","bCommon","aCommon","tStart","tEnd","validateLength","isSafeInteger","validateCallback","nCommonFR","_ansiStyles","returnInput","allColorsAsFunc","AsymmetricMatcher","sample","Any","other","Anything","ArrayContaining","another","ObjectContaining","StringContaining","StringMatching","expectedObject","anything","arrayContaining","arrayNotContaining","objectContaining","objectNotContaining","stringContaining","expected","stringNotContaining","stringMatching","stringNotMatching","resetAssertionsLocalState","assertionCalls","expectedAssertionsNumber","isExpectingAssertions","extractExpectedAssertionsErrors","expectedAssertionsNumberError","isExpectingAssertionsError","numOfAssertionsExpected","isDirectExpectCall","received","JestAssertionError","isPromise","createToThrowErrorMatchingSnapshotMatcher","testNameOrInlineSnapshot","getPromiseMatcher","expect","allMatchers","expectation","rejects","resolves","promiseMatcher","makeThrowingMatcher","makeResolveMatcher","makeRejectMatcher","getMessage","matcherUtils","RECEIVED_COLOR","matcherName","isNot","outerErr","matcherErrorMessage","matcherHint","printWithType","printReceived","innerErr","actualWrapper","throwingMatcher","throws","iterableEquality","subsetEquality","matcherContext","dontThrow","processResult","asyncError","_validateResult","pass","matcherResult","suppressedErrors","handleError","INTERNAL_MATCHER_FLAG","potentialResult","__EXTERNAL_MATCHER_TRAP__","asyncResult","aResult","catch","syncResult","extend","matchers","assertions","hasAssertions","ensureNoExpected","spyMatchers","toThrowMatchers","addSnapshotSerializer","getState","setState","expectExport","customTesters","strictCheck","eq","hasKey","hasDefinedKey","functionToString","isAsymmetric","isA","asymmetricMatch","asymmetricA","asymmetricB","aStack","bStack","asymmetricResult","customTesterResult","is","className","valueOf","isDomNode","isEqualNode","aKeys","allKeys","getOwnPropertySymbols","symbol","extraKeys","typeName","nodeType","nodeName","fnNameFor","func","getPrototype","hasProperty","IS_KEYED_SENTINEL","IS_SET_SENTINEL","IS_ORDERED_SENTINEL","isImmutableUnorderedKeyed","maybeKeyed","isImmutableUnorderedSet","maybeSet","JEST_MATCHERS_OBJECT","getMatchers","setMatchers","CustomMatcher","EXPECTED_LABEL","RECEIVED_LABEL","EXPECTED_VALUE_LABEL","RECEIVED_VALUE_LABEL","isExpand","toStrictEqualTesters","typeEquality","sparseArrayEquality","toBe","expectedType","deepEqualityName","toBeCloseTo","precision","secondArgument","secondArgumentColor","printExpected","expectedDiff","receivedDiff","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","getType","toBeLessThan","toBeLessThanOrEqual","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","labelExpected","labelReceived","printLabel","indexable","findIndex","SUGGEST_TO_CONTAIN_EQUAL","toContainEqual","toEqual","toHaveLength","labelReceivedLength","labelReceivedValue","toHaveProperty","expectedPath","expectedValue","expectedArgument","hasValue","expectedPathType","expectedPathLength","lastTraversedObject","hasEndProp","receivedPath","traversedPath","hasCompletePath","receivedValue","toMatch","toMatchObject","toStrictEqual","printSubstring","printReceivedStringContainExpectedSubstring","printReceivedStringContainExpectedResult","printReceivedArrayContainExpectedItem","stringified","printCloseTo","receivedDiffString","expectedDiffString","toExponential","toFixed","printExpectedConstructorName","label","printConstructorName","printExpectedConstructorNameNot","printReceivedConstructorName","printReceivedConstructorNameNot","isExpected","PRINT_LIMIT","NO_ARGUMENTS","printExpectedArgs","printReceivedArgs","isEqualValue","printCommon","isEqualCall","isEqualReturn","countReturns","results","printNumberOfReturns","countCalls","getRightAlignedPrinter","isExpectedCall","printReceivedCallsNegative","indexedCalls","isOnlyCall","iExpectedCall","printAligned","printed","printExpectedReceivedCallsPositive","expectedLine","isLineDiffableCall","isLineDiffableArg","difference","aligned","printDiffCall","indentation","receivedType","printResult","printReceivedResults","indexedResults","createToBeCalledMatcher","ensureMockOrSpy","receivedIsSpy","isSpy","receivedName","getMockName","calls","mock","createToReturnMatcher","ensureMock","createToBeCalledTimesMatcher","createToReturnTimesMatcher","createToBeCalledWithMatcher","createToReturnWithMatcher","createLastCalledWithMatcher","iLast","createLastReturnedMatcher","createNthCalledWithMatcher","nth","expectedColor","iNth","createNthReturnedWithMatcher","lastCalledWith","lastReturnedWith","nthCalledWith","nthReturnedWith","toBeCalled","toBeCalledTimes","toBeCalledWith","toHaveBeenCalled","toHaveBeenCalledTimes","toHaveBeenCalledWith","toHaveBeenLastCalledWith","toHaveBeenNthCalledWith","toHaveLastReturnedWith","toHaveNthReturnedWith","toHaveReturned","toHaveReturnedTimes","toHaveReturnedWith","toReturn","toReturnTimes","toReturnWith","isMock","_isMockFunction","DID_NOT_THROW","getThrown","hasMessage","createMatcher","fromPromise","thrown","placeholder","toThrow","toThrowExpectedClass","toThrowExpectedString","toThrowExpectedRegExp","toThrowExpectedAsymmetric","toThrowExpectedObject","toThrowError","formatExpected","formatReceived","formatStack","rootDir","testMatch","noStackTrace","hasGetterFromConstructor","descriptor","getPath","propertyPath","lastProp","newObject","getObjectSubset","subset","seenReferences","trimmed","IteratorSymbol","iterator","hasIterator","iterableEqualityWithStack","allFound","aValue","bValue","isEqual","aEntry","bEntry","matchedKey","matchedValue","bIterator","nextB","done","isObjectWithKeys","subsetEqualityWithContext","bKeys","partition","predicate","emptyObject","MULTILINE_REGEXP","isOneline","cleanupSemantic","DIFF_INSERT","DIFF_DELETE","DIFF_EQUAL","Diff","_defineProperty","op","diff_commonPrefix","text1","text2","pointermin","pointermax","pointermid","pointerstart","diff_commonSuffix","pointerend","diff_commonOverlap_","text1_length","text2_length","text_length","best","diff_cleanupSemantic","diffs","changes","equalities","equalitiesLength","lastEquality","pointer","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupMerge","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","score","count_delete","count_insert","text_delete","text_insert","commonlength","SIMILAR_MESSAGE","NO_DIFF_MESSAGE","diffLinesRaw","diffLinesUnified2","diffLinesUnified","_diffSequences","_cleanupSemantic","_normalizeDiffOptions","_printDiffs","aLines","bLines","printDiffLines","normalizeDiffOptions","aLinesDisplay","bLinesDisplay","aLinesCompare","bLinesCompare","diffStrings","concatenateRelevantDiffs","changeColor","reduced","ChangeBuffer","pushDiff","substrings","pushSubstring","pushLine","isLineEmpty","CommonBuffer","deleteBuffer","insertBuffer","isDiffEmpty","moveLinesTo","subdiff","flushChangeLines","pushDiffCommonLine","pushDiffChangeLines","getAlignedDiffs","commonBuffer","align","getLines","_diffLines","diffStringsRaw","diffStringsUnified","_prettyFormat","_jestGetType","_constants","plugins","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","PLUGINS","FORMAT_OPTIONS","FORMAT_OPTIONS_0","indent","FALLBACK_FORMAT_OPTIONS","callToJSON","FALLBACK_FORMAT_OPTIONS_0","aType","omitDifference","getExpectedType","comparePrimitive","compareObjects","sortMap","sortSet","aFormat","bFormat","values","hasThrown","aCompare","bCompare","aDisplay","bDisplay","joinAlignedDiffsExpand","joinAlignedDiffsNoExpand","iLength","nContextLines","contextLines","nContextLines2","jLength","hasExcessAtStartOrEnd","nExcessesBetweenChanges","iStart","hasPatch","jLast","jPatchMark","pushCommonLine","printCommonLine","pushDeleteLine","printDeleteLine","pushInsertLine","printInsertLine","iCommon","iEnd","createPatchMark","nOmit","isFirstOrLast","noColor","DIFF_CONTEXT_DEFAULT","OPTIONS_DEFAULT","aAnnotation","aColor","aIndicator","bAnnotation","bColor","bIndicator","changeLineTrailingSpaceColor","commonColor","commonIndicator","commonLineTrailingSpaceColor","emptyFirstOrLastLinePlaceholder","includeChangeCounts","omitAnnotationLines","patchColor","getContextLines","printAnnotation","countChanges","hasCommonDiff","_diffStrings","_getAlignedDiffs","_joinAlignedDiffs","formatTrailingSpaces","trailingSpaceFormatter","printDiffLine","indicator","isMultiline","changeCounts","aRest","bRest","aCount","bCount","baAnnotationLengthDiff","aAnnotationPadding","bAnnotationPadding","baCountLengthDiff","aCountPadding","bCountPadding","optionsNormalized","cleanup","supportTypes","Replaceable","obj1","obj2","obj1Type","obj2Type","deepCyclicCopyReplaceable","builtInObject","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8ClampedArray","isBuiltInObject","isMap","cycles","deepCyclicCopyArray","deepCyclicCopyMap","deepCyclicCopyObject","newArray","newMap","getLabelPrinter","pluralize","printDiffOrStringify","ensureExpectedIsNonNegativeInteger","ensureNumbers","ensureExpectedIsNumber","ensureActualIsNumber","highlightTrailingWhitespace","DIM_COLOR","BOLD_WEIGHT","INVERTED_COLOR","EXPECTED_COLOR","_jestDiff","_Replaceable","_deepCyclicCopyReplaceable","SPACE_SYMBOL","NUMBERS","replaceTrailingSpaces","spaces","hasType","matcherString","getCommonAndChangedSubstrings","isLineDiffable","MAX_DIFF_STRING_LENGTH","expectedLabel","receivedLabel","receivedLine","replaceMatchedToAsymmetricMatcher","replacedExpected","replacedReceived","shouldPrintDiff","expectedCycles","receivedCycles","isReplaceable","expectedReplaceable","receivedReplaceable","isAsymmetricMatcher","replaced","strings","hint","generic","specific","receivedColor","dimString","separateMessageFromStack","formatResultsErrors","formatStackTrace","getTopFrame","getStackTraceLines","formatExecError","fs","_micromatch","_slash","_codeFrame","_stackUtils","jestReadFile","readFileSync","stackUtils","PATH_NODE_MODULES","PATH_JEST_PACKAGES","JASMINE_IGNORE","JEST_INTERNALS_IGNORE","ANONYMOUS_FN_IGNORE","ANONYMOUS_PROMISE_IGNORE","ANONYMOUS_GENERATOR_IGNORE","NATIVE_NEXT_IGNORE","TITLE_INDENT","MESSAGE_INDENT","STACK_INDENT","ANCESTRY_SEPARATOR","TITLE_BULLET","STACK_TRACE_COLOR","STACK_PATH_REGEXP","EXEC_ERROR_MESSAGE","NOT_EMPTY_LINE_REGEXP","indentAllLines","trimPaths","getRenderedCallsite","fileContent","renderedCallsite","blankStringRegexp","checkForCommonEnvironmentErrors","warnAboutWrongTestEnvironment","config","testPath","reuseMessage","separated","messageToUse","removeInternalStackEntries","pathCounter","formatPaths","relativeTestPath","filePath","noCodeFrame","parsedFrame","topFrame","stacktrace","testResults","failedResults","errors","failureMessages","content","ancestorTitles","errorRegexp","removeBlankErrorLine","trimRight","messageMatch","printIteratorEntries","printIteratorValues","printListItems","printObjectProperties","getKeysOfEnumerableProperties","refs","printer","separator","spacingOuter","indentationNext","spacingInner","_collections","_AsymmetricMatcher","_ConvertAnsi","_DOMCollection","_DOMElement","_Immutable","_ReactElement","_ReactTestComponent","toISOString","errorToString","regExpToString","getConstructorName","isWindow","SYMBOL_REGEXP","NEWLINE_REGEXP","PrettyFormatPluginError","isToStringedArrayType","toStringed","printNumber","printBigInt","printFunction","printFunctionName","printSymbol","printError","printBasicValue","escapeString","printComplexValue","hasCalledToJSON","hitMaxDepth","isNewPlugin","plugin","serialize","printPlugin","valChild","edgeSpacing","spacing","findPlugin","basicResult","DEFAULT_THEME","tag","DEFAULT_THEME_KEYS","DEFAULT_OPTIONS","theme","validateOptions","getColorsHighlight","getColorsEmpty","getPrintFunctionName","getEscapeRegex","getEscapeString","getConfig","createIndent","prettyFormat","ConvertAnsi","asymmetricMatcher","SPACE","stringedValue","toAsymmetricMatcher","_ansiRegex","toHumanReadableAnsi","OBJECT_NAMES","ARRAY_REGEXP","testName","isNamedNodeMap","collection","props","attribute","_markup","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","FRAGMENT_NODE","ELEMENT_REGEXP","testNode","nodeIsText","nodeIsComment","nodeIsFragment","printText","printComment","tagName","printElementAsLeaf","printElement","printProps","attributes","attr","printChildren","childNodes","IS_ITERABLE_SENTINEL","IS_LIST_SENTINEL","IS_MAP_SENTINEL","IS_RECORD_SENTINEL","IS_SEQ_SENTINEL","IS_STACK_SENTINEL","getImmutableName","printAsLeaf","LAZY","printImmutableEntries","getRecordEntries","_keys","printImmutableRecord","_name","printImmutableSeq","_iter","_object","_array","_collection","_iterable","printImmutableValues","ReactIs","getChildren","element","displayName","functionName","render","getPropKeys","testSymbol","escapeHTML","_escapeHTML","contentColor","commentColor","printedProps","printedChildren","tagColor"],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"expect\"] = factory();\n\telse\n\t\troot[\"expect\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./packages/expect/src/index.ts\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = _default;\n\nvar _highlight = _interopRequireWildcard(require(\"@babel/highlight\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nlet deprecationWarningShown = false;\n\nfunction getDefs(chalk) {\n  return {\n    gutter: chalk.grey,\n    marker: chalk.red.bold,\n    message: chalk.red.bold\n  };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\nfunction getMarkerLines(loc, source, opts) {\n  const startLoc = Object.assign({\n    column: 0,\n    line: -1\n  }, loc.start);\n  const endLoc = Object.assign({}, startLoc, {}, loc.end);\n  const {\n    linesAbove = 2,\n    linesBelow = 3\n  } = opts || {};\n  const startLine = startLoc.line;\n  const startColumn = startLoc.column;\n  const endLine = endLoc.line;\n  const endColumn = endLoc.column;\n  let start = Math.max(startLine - (linesAbove + 1), 0);\n  let end = Math.min(source.length, endLine + linesBelow);\n\n  if (startLine === -1) {\n    start = 0;\n  }\n\n  if (endLine === -1) {\n    end = source.length;\n  }\n\n  const lineDiff = endLine - startLine;\n  const markerLines = {};\n\n  if (lineDiff) {\n    for (let i = 0; i <= lineDiff; i++) {\n      const lineNumber = i + startLine;\n\n      if (!startColumn) {\n        markerLines[lineNumber] = true;\n      } else if (i === 0) {\n        const sourceLength = source[lineNumber - 1].length;\n        markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n      } else if (i === lineDiff) {\n        markerLines[lineNumber] = [0, endColumn];\n      } else {\n        const sourceLength = source[lineNumber - i].length;\n        markerLines[lineNumber] = [0, sourceLength];\n      }\n    }\n  } else {\n    if (startColumn === endColumn) {\n      if (startColumn) {\n        markerLines[startLine] = [startColumn, 0];\n      } else {\n        markerLines[startLine] = true;\n      }\n    } else {\n      markerLines[startLine] = [startColumn, endColumn - startColumn];\n    }\n  }\n\n  return {\n    start,\n    end,\n    markerLines\n  };\n}\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n  const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);\n  const chalk = (0, _highlight.getChalk)(opts);\n  const defs = getDefs(chalk);\n\n  const maybeHighlight = (chalkFn, string) => {\n    return highlighted ? chalkFn(string) : string;\n  };\n\n  const lines = rawLines.split(NEWLINE);\n  const {\n    start,\n    end,\n    markerLines\n  } = getMarkerLines(loc, lines, opts);\n  const hasColumns = loc.start && typeof loc.start.column === \"number\";\n  const numberMaxWidth = String(end).length;\n  const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;\n  let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => {\n    const number = start + 1 + index;\n    const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n    const gutter = ` ${paddedNumber} | `;\n    const hasMarker = markerLines[number];\n    const lastMarkerLine = !markerLines[number + 1];\n\n    if (hasMarker) {\n      let markerLine = \"\";\n\n      if (Array.isArray(hasMarker)) {\n        const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n        const numberOfMarkers = hasMarker[1] || 1;\n        markerLine = [\"\\n \", maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")), markerSpacing, maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers)].join(\"\");\n\n        if (lastMarkerLine && opts.message) {\n          markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n        }\n      }\n\n      return [maybeHighlight(defs.marker, \">\"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(\"\");\n    } else {\n      return ` ${maybeHighlight(defs.gutter, gutter)}${line}`;\n    }\n  }).join(\"\\n\");\n\n  if (opts.message && !hasColumns) {\n    frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n  }\n\n  if (highlighted) {\n    return chalk.reset(frame);\n  } else {\n    return frame;\n  }\n}\n\nfunction _default(rawLines, lineNumber, colNumber, opts = {}) {\n  if (!deprecationWarningShown) {\n    deprecationWarningShown = true;\n    const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n    if (process.emitWarning) {\n      process.emitWarning(message, \"DeprecationWarning\");\n    } else {\n      const deprecationError = new Error(message);\n      deprecationError.name = \"DeprecationWarning\";\n      console.warn(new Error(message));\n    }\n  }\n\n  colNumber = Math.max(colNumber, 0);\n  const location = {\n    start: {\n      column: colNumber,\n      line: lineNumber\n    }\n  };\n  return codeFrameColumns(rawLines, location, opts);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isIdentifierStart = isIdentifierStart;\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08c7\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\u9ffc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7ca\\ua7f5-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf\\u1ac0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n  let pos = 0x10000;\n\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n    pos += set[i + 1];\n    if (pos >= code) return true;\n  }\n\n  return false;\n}\n\nfunction isIdentifierStart(code) {\n  if (code < 65) return code === 36;\n  if (code <= 90) return true;\n  if (code < 97) return code === 95;\n  if (code <= 122) return true;\n\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n  }\n\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\nfunction isIdentifierChar(code) {\n  if (code < 48) return code === 36;\n  if (code < 58) return true;\n  if (code < 65) return false;\n  if (code <= 90) return true;\n  if (code < 97) return code === 95;\n  if (code <= 122) return true;\n\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n\n  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nfunction isIdentifierName(name) {\n  let isFirst = true;\n\n  for (let _i = 0, _Array$from = Array.from(name); _i < _Array$from.length; _i++) {\n    const char = _Array$from[_i];\n    const cp = char.codePointAt(0);\n\n    if (isFirst) {\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n\n      isFirst = false;\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n\n  return !isFirst;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n  enumerable: true,\n  get: function () {\n    return _identifier.isIdentifierName;\n  }\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n  enumerable: true,\n  get: function () {\n    return _identifier.isIdentifierChar;\n  }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n  enumerable: true,\n  get: function () {\n    return _identifier.isIdentifierStart;\n  }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n  enumerable: true,\n  get: function () {\n    return _keyword.isReservedWord;\n  }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n  enumerable: true,\n  get: function () {\n    return _keyword.isStrictBindOnlyReservedWord;\n  }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n  enumerable: true,\n  get: function () {\n    return _keyword.isStrictBindReservedWord;\n  }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n  enumerable: true,\n  get: function () {\n    return _keyword.isStrictReservedWord;\n  }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n  enumerable: true,\n  get: function () {\n    return _keyword.isKeyword;\n  }\n});\n\nvar _identifier = require(\"./identifier\");\n\nvar _keyword = require(\"./keyword\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isReservedWord = isReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isKeyword = isKeyword;\nconst reservedWords = {\n  keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n  strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n  strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\nfunction isReservedWord(word, inModule) {\n  return inModule && word === \"await\" || word === \"enum\";\n}\n\nfunction isStrictReservedWord(word, inModule) {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\nfunction isStrictBindOnlyReservedWord(word) {\n  return reservedWordsStrictBindSet.has(word);\n}\n\nfunction isStrictBindReservedWord(word, inModule) {\n  return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\n\nfunction isKeyword(word) {\n  return keywords.has(word);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nvar _jsTokens = _interopRequireWildcard(require(\"js-tokens\"));\n\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction getDefs(chalk) {\n  return {\n    keyword: chalk.cyan,\n    capitalized: chalk.yellow,\n    jsx_tag: chalk.yellow,\n    punctuator: chalk.yellow,\n    number: chalk.magenta,\n    string: chalk.green,\n    regex: chalk.magenta,\n    comment: chalk.grey,\n    invalid: chalk.white.bgRed.bold\n  };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst BRACKET = /^[()[\\]{}]$/;\n\nfunction getTokenType(match) {\n  const [offset, text] = match.slice(-2);\n  const token = (0, _jsTokens.matchToToken)(match);\n\n  if (token.type === \"name\") {\n    if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isReservedWord)(token.value)) {\n      return \"keyword\";\n    }\n\n    if (JSX_TAG.test(token.value) && (text[offset - 1] === \"<\" || text.substr(offset - 2, 2) == \"</\")) {\n      return \"jsx_tag\";\n    }\n\n    if (token.value[0] !== token.value[0].toLowerCase()) {\n      return \"capitalized\";\n    }\n  }\n\n  if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n    return \"bracket\";\n  }\n\n  if (token.type === \"invalid\" && (token.value === \"@\" || token.value === \"#\")) {\n    return \"punctuator\";\n  }\n\n  return token.type;\n}\n\nfunction highlightTokens(defs, text) {\n  return text.replace(_jsTokens.default, function (...args) {\n    const type = getTokenType(args);\n    const colorize = defs[type];\n\n    if (colorize) {\n      return args[0].split(NEWLINE).map(str => colorize(str)).join(\"\\n\");\n    } else {\n      return args[0];\n    }\n  });\n}\n\nfunction shouldHighlight(options) {\n  return _chalk.default.supportsColor || options.forceColor;\n}\n\nfunction getChalk(options) {\n  let chalk = _chalk.default;\n\n  if (options.forceColor) {\n    chalk = new _chalk.default.constructor({\n      enabled: true,\n      level: 1\n    });\n  }\n\n  return chalk;\n}\n\nfunction highlight(code, options = {}) {\n  if (shouldHighlight(options)) {\n    const chalk = getChalk(options);\n    const defs = getDefs(chalk);\n    return highlightTokens(defs, code);\n  } else {\n    return code;\n  }\n}","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (let pattern of input) {\n      let result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  let walk = (node, parent = {}) => {\n    let invalidBlock = utils.isInvalidBrace(parent);\n    let invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let invalid = invalidBlock === true || invalidNode === true;\n    let prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n    if (node.isClose === true) {\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? (prefix + node.value) : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? (prefix + node.value) : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      let args = utils.reduce(node.nodes);\n      let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (let child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  let result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (let item of queue) {\n    if (Array.isArray(item)) {\n      for (let value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n  let walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      let args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    let enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      let child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  let opts = options || {};\n  let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  let ast = { type: 'root', input, nodes: [] };\n  let stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  let length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n  let memo = {};\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let closed = true;\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      let open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      let brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      let type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        let open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      let siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        let before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      let parent = stack[stack.length - 1];\n      let index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  let stringify = (node, parent = {}) => {\n    let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    let invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (let child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n","'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  let node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      let ele = arr[i];\n      Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n    }\n    return result;\n  };\n  flat(args);\n  return result;\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n  var token = {type: \"invalid\", value: match[0], closed: undefined}\n       if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n  else if (match[ 5]) token.type = \"comment\"\n  else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n  else if (match[ 8]) token.type = \"regex\"\n  else if (match[ 9]) token.type = \"number\"\n  else if (match[10]) token.type = \"name\"\n  else if (match[11]) token.type = \"punctuator\"\n  else if (match[12]) token.type = \"whitespace\"\n  return token\n}\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => typeof val === 'string' && (val === '' || val === './');\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} list List of strings to match.\n * @param {String|Array<string>} patterns One or more glob patterns to use for matching.\n * @param {Object} options See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n  patterns = [].concat(patterns);\n  list = [].concat(list);\n\n  let omit = new Set();\n  let keep = new Set();\n  let items = new Set();\n  let negatives = 0;\n\n  let onResult = state => {\n    items.add(state.output);\n    if (options && options.onResult) {\n      options.onResult(state);\n    }\n  };\n\n  for (let i = 0; i < patterns.length; i++) {\n    let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n    let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n    if (negated) negatives++;\n\n    for (let item of list) {\n      let matched = isMatch(item, true);\n\n      let match = negated ? !matched.isMatch : matched.isMatch;\n      if (!match) continue;\n\n      if (negated) {\n        omit.add(matched.output);\n      } else {\n        omit.delete(matched.output);\n        keep.add(matched.output);\n      }\n    }\n  }\n\n  let result = negatives === patterns.length ? [...items] : [...keep];\n  let matches = result.filter(item => !omit.has(item));\n\n  if (options && matches.length === 0) {\n    if (options.failglob === true) {\n      throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n    }\n\n    if (options.nonull === true || options.nullglob === true) {\n      return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n    }\n  }\n\n  return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n  patterns = [].concat(patterns).map(String);\n  let result = new Set();\n  let items = [];\n\n  let onResult = state => {\n    if (options.onResult) options.onResult(state);\n    items.push(state.output);\n  };\n\n  let matches = micromatch(list, patterns, { ...options, onResult });\n\n  for (let item of items) {\n    if (!matches.includes(item)) {\n      result.add(item);\n    }\n  }\n  return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  if (Array.isArray(pattern)) {\n    return pattern.some(p => micromatch.contains(str, p, options));\n  }\n\n  if (typeof pattern === 'string') {\n    if (isEmptyString(str) || isEmptyString(pattern)) {\n      return false;\n    }\n\n    if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n      return true;\n    }\n  }\n\n  return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('Expected the first argument to be an object');\n  }\n  let keys = micromatch(Object.keys(obj), patterns, options);\n  let res = {};\n  for (let key of keys) res[key] = obj[key];\n  return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (items.some(item => isMatch(item))) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (!items.every(item => isMatch(item))) {\n      return false;\n    }\n  }\n  return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n  let posix = utils.isWindows(options);\n  let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n  let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n  if (match) {\n    return match.slice(1).map(v => v === void 0 ? '' : v);\n  }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n  let res = [];\n  for (let pattern of [].concat(patterns || [])) {\n    for (let str of braces(String(pattern), options)) {\n      res.push(picomatch.parse(str, options));\n    }\n  }\n  return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n    return [pattern];\n  }\n  return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  SEP: path.sep,\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(win32);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = (opts) => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index];\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.value += tok.value;\n      prev.output = (prev.output || '') + tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    let output = token.close + (opts.capture ? ')' : '');\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.prev.type === 'bos' && eos()) {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance() || '';\n      } else {\n        value += advance() || '';\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if (next === '<' && !utils.supportsLookbehinds()) {\n          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n        }\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(win32);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = (opts) => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = utils.isWindows(options);\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return parsed.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${parsed.output})${append}`;\n  if (parsed && parsed.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = parsed;\n  }\n\n  return regex;\n};\n\npicomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  const opts = options || {};\n  let parsed = { negated: false, fastpaths: true };\n  let prefix = '';\n  let output;\n\n  if (input.startsWith('./')) {\n    input = input.slice(2);\n    prefix = parsed.prefix = './';\n  }\n\n  if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    output = parse.fastpaths(input, options);\n  }\n\n  if (output === undefined) {\n    parsed = parse(input, options);\n    parsed.prefix = prefix + (parsed.prefix || '');\n  } else {\n    parsed.output = output;\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n          break;\n        }\n      }\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.supportsLookbehinds = () => {\n  const segs = process.version.slice(1).split('.').map(Number);\n  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n    return true;\n  }\n  return false;\n};\n\nexports.isWindows = options => {\n  if (options && typeof options.windows === 'boolean') {\n    return options.windows;\n  }\n  return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","'use strict';\nmodule.exports = StackUtils;\n\nfunction StackUtils(opts) {\n  if (!(this instanceof StackUtils)) {\n    throw new Error('StackUtils constructor must be called with new');\n  }\n  opts = opts || {};\n  this._cwd = (opts.cwd || process.cwd()).replace(/\\\\/g, '/');\n  this._internals = opts.internals || [];\n  this._wrapCallSite = opts.wrapCallSite || false;\n}\n\nmodule.exports.nodeInternals = nodeInternals;\n\nfunction nodeInternals() {\n  if (!module.exports.natives) {\n    module.exports.natives = Object.keys(process.binding('natives'));\n    module.exports.natives.push('bootstrap_node', 'node',\n                                'internal/bootstrap/node');\n  }\n\n  return module.exports.natives.map(function (n) {\n    return new RegExp('\\\\(' + n + '\\\\.js:\\\\d+:\\\\d+\\\\)$');\n  }).concat([\n    /\\s*at (bootstrap_)?node\\.js:\\d+:\\d+?$/,\n    /\\(internal\\/[^:]+:\\d+:\\d+\\)$/,\n    /\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/\n  ]);\n}\n\nStackUtils.prototype.clean = function (stack) {\n  if (!Array.isArray(stack)) {\n    stack = stack.split('\\n');\n  }\n\n  if (!(/^\\s*at /.test(stack[0])) &&\n    (/^\\s*at /.test(stack[1]))) {\n    stack = stack.slice(1);\n  }\n\n  var outdent = false;\n  var lastNonAtLine = null;\n  var result = [];\n\n  stack.forEach(function (st) {\n    st = st.replace(/\\\\/g, '/');\n    var isInternal = this._internals.some(function (internal) {\n      return internal.test(st);\n    });\n\n    if (isInternal) {\n      return null;\n    }\n\n    var isAtLine = /^\\s*at /.test(st);\n\n    if (outdent) {\n      st = st.replace(/\\s+$/, '').replace(/^(\\s+)at /, '$1');\n    } else {\n      st = st.trim();\n      if (isAtLine) {\n        st = st.substring(3);\n      }\n    }\n\n    st = st.replace(this._cwd + '/', '');\n\n    if (st) {\n      if (isAtLine) {\n        if (lastNonAtLine) {\n          result.push(lastNonAtLine);\n          lastNonAtLine = null;\n        }\n        result.push(st);\n      } else {\n        outdent = true;\n        lastNonAtLine = st;\n      }\n    }\n  }, this);\n\n  stack = result.join('\\n').trim();\n\n  if (stack) {\n    return stack + '\\n';\n  }\n  return '';\n};\n\nStackUtils.prototype.captureString = function (limit, fn) {\n  if (typeof limit === 'function') {\n    fn = limit;\n    limit = Infinity;\n  }\n  if (!fn) {\n    fn = this.captureString;\n  }\n\n  var limitBefore = Error.stackTraceLimit;\n  if (limit) {\n    Error.stackTraceLimit = limit;\n  }\n\n  var obj = {};\n\n  Error.captureStackTrace(obj, fn);\n  var stack = obj.stack;\n  Error.stackTraceLimit = limitBefore;\n\n  return this.clean(stack);\n};\n\nStackUtils.prototype.capture = function (limit, fn) {\n  if (typeof limit === 'function') {\n    fn = limit;\n    limit = Infinity;\n  }\n  if (!fn) {\n    fn = this.capture;\n  }\n  var prepBefore = Error.prepareStackTrace;\n  var limitBefore = Error.stackTraceLimit;\n  var wrapCallSite = this._wrapCallSite;\n\n  Error.prepareStackTrace = function (obj, site) {\n    if (wrapCallSite) {\n      return site.map(wrapCallSite);\n    }\n    return site;\n  };\n\n  if (limit) {\n    Error.stackTraceLimit = limit;\n  }\n\n  var obj = {};\n  Error.captureStackTrace(obj, fn);\n  var stack = obj.stack;\n  Error.prepareStackTrace = prepBefore;\n  Error.stackTraceLimit = limitBefore;\n\n  return stack;\n};\n\nStackUtils.prototype.at = function at(fn) {\n  if (!fn) {\n    fn = at;\n  }\n\n  var site = this.capture(1, fn)[0];\n\n  if (!site) {\n    return {};\n  }\n\n  var res = {\n    line: site.getLineNumber(),\n    column: site.getColumnNumber()\n  };\n\n  this._setFile(res, site.getFileName());\n\n  if (site.isConstructor()) {\n    res.constructor = true;\n  }\n\n  if (site.isEval()) {\n    res.evalOrigin = site.getEvalOrigin();\n  }\n\n  // Node v10 stopped with the isNative() on callsites, apparently\n  /* istanbul ignore next */\n  if (site.isNative()) {\n    res.native = true;\n  }\n\n  var typename = null;\n  try {\n    typename = site.getTypeName();\n  } catch (er) {}\n\n  if (typename &&\n    typename !== 'Object' &&\n    typename !== '[object Object]') {\n    res.type = typename;\n  }\n\n  var fname = site.getFunctionName();\n  if (fname) {\n    res.function = fname;\n  }\n\n  var meth = site.getMethodName();\n  if (meth && fname !== meth) {\n    res.method = meth;\n  }\n\n  return res;\n};\n\nStackUtils.prototype._setFile = function (result, filename) {\n  if (filename) {\n    filename = filename.replace(/\\\\/g, '/');\n    if ((filename.indexOf(this._cwd + '/') === 0)) {\n      filename = filename.substr(this._cwd.length + 1);\n    }\n    result.file = filename;\n  }\n};\n\nvar re = new RegExp(\n  '^' +\n    // Sometimes we strip out the '    at' because it's noisy\n  '(?:\\\\s*at )?' +\n    // $1 = ctor if 'new'\n  '(?:(new) )?' +\n    // $2 = function name (can be literally anything)\n    // May contain method at the end as [as xyz]\n  '(?:(.*?) \\\\()?' +\n    // (eval at <anonymous> (file.js:1:1),\n    // $3 = eval origin\n    // $4:$5:$6 are eval file/line/col, but not normally reported\n  '(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?' +\n    // file:line:col\n    // $7:$8:$9\n    // $10 = 'native' if native\n  '(?:(.+?):(\\\\d+):(\\\\d+)|(native))' +\n    // maybe close the paren, then end\n    // if $11 is ), then we only allow balanced parens in the filename\n    // any imbalance is placed on the fname.  This is a heuristic, and\n    // bound to be incorrect in some edge cases.  The bet is that\n    // having weird characters in method names is more common than\n    // having weird characters in filenames, which seems reasonable.\n  '(\\\\)?)$'\n);\n\nvar methodRe = /^(.*?) \\[as (.*?)\\]$/;\n\nStackUtils.prototype.parseLine = function parseLine(line) {\n  var match = line && line.match(re);\n  if (!match) {\n    return null;\n  }\n\n  var ctor = match[1] === 'new';\n  var fname = match[2];\n  var evalOrigin = match[3];\n  var evalFile = match[4];\n  var evalLine = Number(match[5]);\n  var evalCol = Number(match[6]);\n  var file = match[7];\n  var lnum = match[8];\n  var col = match[9];\n  var native = match[10] === 'native';\n  var closeParen = match[11] === ')';\n\n  var res = {};\n\n  if (lnum) {\n    res.line = Number(lnum);\n  }\n\n  if (col) {\n    res.column = Number(col);\n  }\n\n  if (closeParen && file) {\n    // make sure parens are balanced\n    // if we have a file like \"asdf) [as foo] (xyz.js\", then odds are\n    // that the fname should be += \" (asdf) [as foo]\" and the file\n    // should be just \"xyz.js\"\n    // walk backwards from the end to find the last unbalanced (\n    var closes = 0;\n    for (var i = file.length - 1; i > 0; i--) {\n      if (file.charAt(i) === ')') {\n        closes ++;\n      } else if (file.charAt(i) === '(' && file.charAt(i - 1) === ' ') {\n        closes --;\n        if (closes === -1 && file.charAt(i - 1) === ' ') {\n          var before = file.substr(0, i - 1);\n          var after = file.substr(i + 1);\n          file = after;\n          fname += ' (' + before;\n          break;\n        }\n      }\n    }\n  }\n\n  if (fname) {\n    var methodMatch = fname.match(methodRe);\n    if (methodMatch) {\n      fname = methodMatch[1];\n      var meth = methodMatch[2];\n    }\n  }\n\n  this._setFile(res, file);\n\n  if (ctor) {\n    res.constructor = true;\n  }\n\n  if (evalOrigin) {\n    res.evalOrigin = evalOrigin;\n    res.evalLine = evalLine;\n    res.evalColumn = evalCol;\n    res.evalFile = evalFile && evalFile.replace(/\\\\/g, '/');\n  }\n\n  if (native) {\n    res.native = true;\n  }\n\n  if (fname) {\n    res.function = fname;\n  }\n\n  if (meth && fname !== meth) {\n    res.method = meth;\n  }\n\n  return res;\n};\n\nvar bound = new StackUtils();\n\nObject.keys(StackUtils.prototype).forEach(function (key) {\n  StackUtils[key] = bound[key].bind(bound);\n});\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n// This diff-sequences package implements the linear space variation in\n// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers\n// Relationship in notation between Myers paper and this package:\n// A is a\n// N is aLength, aEnd - aStart, and so on\n// x is aIndex, aFirst, aLast, and so on\n// B is b\n// M is bLength, bEnd - bStart, and so on\n// y is bIndex, bFirst, bLast, and so on\n// Δ = N - M is negative of baDeltaLength = bLength - aLength\n// D is d\n// k is kF\n// k + Δ is kF = kR - baDeltaLength\n// V is aIndexesF or aIndexesR (see comment below about Indexes type)\n// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength)\n// starting point in forward direction (0, 0) is (-1, -1)\n// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength)\n// The “edit graph” for sequences a and b corresponds to items:\n// in a on the horizontal axis\n// in b on the vertical axis\n//\n// Given a-coordinate of a point in a diagonal, you can compute b-coordinate.\n//\n// Forward diagonals kF:\n// zero diagonal intersects top left corner\n// positive diagonals intersect top edge\n// negative diagonals insersect left edge\n//\n// Reverse diagonals kR:\n// zero diagonal intersects bottom right corner\n// positive diagonals intersect right edge\n// negative diagonals intersect bottom edge\n// The graph contains a directed acyclic graph of edges:\n// horizontal: delete an item from a\n// vertical: insert an item from b\n// diagonal: common item in a and b\n//\n// The algorithm solves dual problems in the graph analogy:\n// Find longest common subsequence: path with maximum number of diagonal edges\n// Find shortest edit script: path with minimum number of non-diagonal edges\n// Input callback function compares items at indexes in the sequences.\n// Output callback function receives the number of adjacent items\n// and starting indexes of each common subsequence.\n// Either original functions or wrapped to swap indexes if graph is transposed.\n// Indexes in sequence a of last point of forward or reverse paths in graph.\n// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.\n// This package indexes by iF and iR which are greater than or equal to zero.\n// and also updates the index arrays in place to cut memory in half.\n// kF = 2 * iF - d\n// kR = d - 2 * iR\n// Division of index intervals in sequences a and b at the middle change.\n// Invariant: intervals do not have common items at the start or end.\nconst pkg = 'diff-sequences'; // for error messages\n\nconst NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8\n// Return the number of common items that follow in forward direction.\n// The length of what Myers paper calls a “snake” in a forward path.\n\nconst countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => {\n  let nCommon = 0;\n\n  while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) {\n    aIndex += 1;\n    bIndex += 1;\n    nCommon += 1;\n  }\n\n  return nCommon;\n}; // Return the number of common items that precede in reverse direction.\n// The length of what Myers paper calls a “snake” in a reverse path.\n\nconst countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => {\n  let nCommon = 0;\n\n  while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) {\n    aIndex -= 1;\n    bIndex -= 1;\n    nCommon += 1;\n  }\n\n  return nCommon;\n}; // A simple function to extend forward paths from (d - 1) to d changes\n// when forward and reverse paths cannot yet overlap.\n\nconst extendPathsF = (d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF) => {\n  // Unroll the first iteration.\n  let iF = 0;\n  let kF = -d; // kF = 2 * iF - d\n\n  let aFirst = aIndexesF[iF]; // in first iteration always insert\n\n  let aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration\n\n  aIndexesF[iF] += countCommonItemsF(\n    aFirst + 1,\n    aEnd,\n    bF + aFirst - kF + 1,\n    bEnd,\n    isCommon\n  ); // Optimization: skip diagonals in which paths cannot ever overlap.\n\n  const nF = d < iMaxF ? d : iMaxF; // The diagonals kF are odd when d is odd and even when d is even.\n\n  for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) {\n    // To get first point of path segment, move one change in forward direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In last possible iteration when iF === d and kF === d always delete.\n    if (iF !== d && aIndexPrev1 < aIndexesF[iF]) {\n      aFirst = aIndexesF[iF]; // vertical to insert from b\n    } else {\n      aFirst = aIndexPrev1 + 1; // horizontal to delete from a\n\n      if (aEnd <= aFirst) {\n        // Optimization: delete moved past right of graph.\n        return iF - 1;\n      }\n    } // To get last point of path segment, move along diagonal of common items.\n\n    aIndexPrev1 = aIndexesF[iF];\n    aIndexesF[iF] =\n      aFirst +\n      countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon);\n  }\n\n  return iMaxF;\n}; // A simple function to extend reverse paths from (d - 1) to d changes\n// when reverse and forward paths cannot yet overlap.\n\nconst extendPathsR = (d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR) => {\n  // Unroll the first iteration.\n  let iR = 0;\n  let kR = d; // kR = d - 2 * iR\n\n  let aFirst = aIndexesR[iR]; // in first iteration always insert\n\n  let aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration\n\n  aIndexesR[iR] -= countCommonItemsR(\n    aStart,\n    aFirst - 1,\n    bStart,\n    bR + aFirst - kR - 1,\n    isCommon\n  ); // Optimization: skip diagonals in which paths cannot ever overlap.\n\n  const nR = d < iMaxR ? d : iMaxR; // The diagonals kR are odd when d is odd and even when d is even.\n\n  for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) {\n    // To get first point of path segment, move one change in reverse direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In last possible iteration when iR === d and kR === -d always delete.\n    if (iR !== d && aIndexesR[iR] < aIndexPrev1) {\n      aFirst = aIndexesR[iR]; // vertical to insert from b\n    } else {\n      aFirst = aIndexPrev1 - 1; // horizontal to delete from a\n\n      if (aFirst < aStart) {\n        // Optimization: delete moved past left of graph.\n        return iR - 1;\n      }\n    } // To get last point of path segment, move along diagonal of common items.\n\n    aIndexPrev1 = aIndexesR[iR];\n    aIndexesR[iR] =\n      aFirst -\n      countCommonItemsR(\n        aStart,\n        aFirst - 1,\n        bStart,\n        bR + aFirst - kR - 1,\n        isCommon\n      );\n  }\n\n  return iMaxR;\n}; // A complete function to extend forward paths from (d - 1) to d changes.\n// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal.\n\nconst extendOverlappablePathsF = (\n  d,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  iMaxF,\n  aIndexesR,\n  iMaxR,\n  division\n) => {\n  const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart;\n  const baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength\n  // Range of diagonals in which forward and reverse paths might overlap.\n\n  const kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR\n\n  const kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1)\n\n  let aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n\n  const nF = d < iMaxF ? d : iMaxF; // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even.\n\n  for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) {\n    // To get first point of path segment, move one change in forward direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In first iteration when iF === 0 and kF === -d always insert.\n    // In last possible iteration when iF === d and kF === d always delete.\n    const insert = iF === 0 || (iF !== d && aIndexPrev1 < aIndexesF[iF]);\n    const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1;\n    const aFirst = insert\n      ? aLastPrev // vertical to insert from b\n      : aLastPrev + 1; // horizontal to delete from a\n    // To get last point of path segment, move along diagonal of common items.\n\n    const bFirst = bF + aFirst - kF;\n    const nCommonF = countCommonItemsF(\n      aFirst + 1,\n      aEnd,\n      bFirst + 1,\n      bEnd,\n      isCommon\n    );\n    const aLast = aFirst + nCommonF;\n    aIndexPrev1 = aIndexesF[iF];\n    aIndexesF[iF] = aLast;\n\n    if (kMinOverlapF <= kF && kF <= kMaxOverlapF) {\n      // Solve for iR of reverse path with (d - 1) changes in diagonal kF:\n      // kR = kF + baDeltaLength\n      // kR = (d - 1) - 2 * iR\n      const iR = (d - 1 - (kF + baDeltaLength)) / 2; // If this forward path overlaps the reverse path in this diagonal,\n      // then this is the middle change of the index intervals.\n\n      if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) {\n        // Unlike the Myers algorithm which finds only the middle “snake”\n        // this package can find two common subsequences per division.\n        // Last point of previous path segment is on an adjacent diagonal.\n        const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1); // Because of invariant that intervals preceding the middle change\n        // cannot have common items at the end,\n        // move in reverse direction along a diagonal of common items.\n\n        const nCommonR = countCommonItemsR(\n          aStart,\n          aLastPrev,\n          bStart,\n          bLastPrev,\n          isCommon\n        );\n        const aIndexPrevFirst = aLastPrev - nCommonR;\n        const bIndexPrevFirst = bLastPrev - nCommonR;\n        const aEndPreceding = aIndexPrevFirst + 1;\n        const bEndPreceding = bIndexPrevFirst + 1;\n        division.nChangePreceding = d - 1;\n\n        if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) {\n          // Optimization: number of preceding changes in forward direction\n          // is equal to number of items in preceding interval,\n          // therefore it cannot contain any common items.\n          division.aEndPreceding = aStart;\n          division.bEndPreceding = bStart;\n        } else {\n          division.aEndPreceding = aEndPreceding;\n          division.bEndPreceding = bEndPreceding;\n        }\n\n        division.nCommonPreceding = nCommonR;\n\n        if (nCommonR !== 0) {\n          division.aCommonPreceding = aEndPreceding;\n          division.bCommonPreceding = bEndPreceding;\n        }\n\n        division.nCommonFollowing = nCommonF;\n\n        if (nCommonF !== 0) {\n          division.aCommonFollowing = aFirst + 1;\n          division.bCommonFollowing = bFirst + 1;\n        }\n\n        const aStartFollowing = aLast + 1;\n        const bStartFollowing = bFirst + nCommonF + 1;\n        division.nChangeFollowing = d - 1;\n\n        if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n          // Optimization: number of changes in reverse direction\n          // is equal to number of items in following interval,\n          // therefore it cannot contain any common items.\n          division.aStartFollowing = aEnd;\n          division.bStartFollowing = bEnd;\n        } else {\n          division.aStartFollowing = aStartFollowing;\n          division.bStartFollowing = bStartFollowing;\n        }\n\n        return true;\n      }\n    }\n  }\n\n  return false;\n}; // A complete function to extend reverse paths from (d - 1) to d changes.\n// Return true if a path overlaps forward path of d changes in its diagonal.\n\nconst extendOverlappablePathsR = (\n  d,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  iMaxF,\n  aIndexesR,\n  iMaxR,\n  division\n) => {\n  const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart;\n  const baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength\n  // Range of diagonals in which forward and reverse paths might overlap.\n\n  const kMinOverlapR = baDeltaLength - d; // -d <= kF\n\n  const kMaxOverlapR = baDeltaLength + d; // kF <= d\n\n  let aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n\n  const nR = d < iMaxR ? d : iMaxR; // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even.\n\n  for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) {\n    // To get first point of path segment, move one change in reverse direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In first iteration when iR === 0 and kR === d always insert.\n    // In last possible iteration when iR === d and kR === -d always delete.\n    const insert = iR === 0 || (iR !== d && aIndexesR[iR] < aIndexPrev1);\n    const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1;\n    const aFirst = insert\n      ? aLastPrev // vertical to insert from b\n      : aLastPrev - 1; // horizontal to delete from a\n    // To get last point of path segment, move along diagonal of common items.\n\n    const bFirst = bR + aFirst - kR;\n    const nCommonR = countCommonItemsR(\n      aStart,\n      aFirst - 1,\n      bStart,\n      bFirst - 1,\n      isCommon\n    );\n    const aLast = aFirst - nCommonR;\n    aIndexPrev1 = aIndexesR[iR];\n    aIndexesR[iR] = aLast;\n\n    if (kMinOverlapR <= kR && kR <= kMaxOverlapR) {\n      // Solve for iF of forward path with d changes in diagonal kR:\n      // kF = kR - baDeltaLength\n      // kF = 2 * iF - d\n      const iF = (d + (kR - baDeltaLength)) / 2; // If this reverse path overlaps the forward path in this diagonal,\n      // then this is a middle change of the index intervals.\n\n      if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) {\n        const bLast = bFirst - nCommonR;\n        division.nChangePreceding = d;\n\n        if (d === aLast + bLast - aStart - bStart) {\n          // Optimization: number of changes in reverse direction\n          // is equal to number of items in preceding interval,\n          // therefore it cannot contain any common items.\n          division.aEndPreceding = aStart;\n          division.bEndPreceding = bStart;\n        } else {\n          division.aEndPreceding = aLast;\n          division.bEndPreceding = bLast;\n        }\n\n        division.nCommonPreceding = nCommonR;\n\n        if (nCommonR !== 0) {\n          // The last point of reverse path segment is start of common subsequence.\n          division.aCommonPreceding = aLast;\n          division.bCommonPreceding = bLast;\n        }\n\n        division.nChangeFollowing = d - 1;\n\n        if (d === 1) {\n          // There is no previous path segment.\n          division.nCommonFollowing = 0;\n          division.aStartFollowing = aEnd;\n          division.bStartFollowing = bEnd;\n        } else {\n          // Unlike the Myers algorithm which finds only the middle “snake”\n          // this package can find two common subsequences per division.\n          // Last point of previous path segment is on an adjacent diagonal.\n          const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1); // Because of invariant that intervals following the middle change\n          // cannot have common items at the start,\n          // move in forward direction along a diagonal of common items.\n\n          const nCommonF = countCommonItemsF(\n            aLastPrev,\n            aEnd,\n            bLastPrev,\n            bEnd,\n            isCommon\n          );\n          division.nCommonFollowing = nCommonF;\n\n          if (nCommonF !== 0) {\n            // The last point of reverse path segment is start of common subsequence.\n            division.aCommonFollowing = aLastPrev;\n            division.bCommonFollowing = bLastPrev;\n          }\n\n          const aStartFollowing = aLastPrev + nCommonF; // aFirstPrev\n\n          const bStartFollowing = bLastPrev + nCommonF; // bFirstPrev\n\n          if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n            // Optimization: number of changes in forward direction\n            // is equal to number of items in following interval,\n            // therefore it cannot contain any common items.\n            division.aStartFollowing = aEnd;\n            division.bStartFollowing = bEnd;\n          } else {\n            division.aStartFollowing = aStartFollowing;\n            division.bStartFollowing = bStartFollowing;\n          }\n        }\n\n        return true;\n      }\n    }\n  }\n\n  return false;\n}; // Given index intervals and input function to compare items at indexes,\n// divide at the middle change.\n//\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because this function will throw the “no overlap” error.\n\nconst divide = (\n  nChange,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  aIndexesR,\n  division // output\n) => {\n  const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n\n  const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart; // Because graph has square or portrait orientation,\n  // length difference is minimum number of items to insert from b.\n  // Corresponding forward and reverse diagonals in graph\n  // depend on length difference of the sequences:\n  // kF = kR - baDeltaLength\n  // kR = kF + baDeltaLength\n\n  const baDeltaLength = bLength - aLength; // Optimization: max diagonal in graph intersects corner of shorter side.\n\n  let iMaxF = aLength;\n  let iMaxR = aLength; // Initialize no changes yet in forward or reverse direction:\n\n  aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start\n\n  aIndexesR[0] = aEnd; // at open end of interval\n\n  if (baDeltaLength % 2 === 0) {\n    // The number of changes in paths is 2 * d if length difference is even.\n    const dMin = (nChange || baDeltaLength) / 2;\n    const dMax = (aLength + bLength) / 2;\n\n    for (let d = 1; d <= dMax; d += 1) {\n      iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n\n      if (d < dMin) {\n        iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR);\n      } else if (\n        // If a reverse path overlaps a forward path in the same diagonal,\n        // return a division of the index intervals at the middle change.\n        extendOverlappablePathsR(\n          d,\n          aStart,\n          aEnd,\n          bStart,\n          bEnd,\n          isCommon,\n          aIndexesF,\n          iMaxF,\n          aIndexesR,\n          iMaxR,\n          division\n        )\n      ) {\n        return;\n      }\n    }\n  } else {\n    // The number of changes in paths is 2 * d - 1 if length difference is odd.\n    const dMin = ((nChange || baDeltaLength) + 1) / 2;\n    const dMax = (aLength + bLength + 1) / 2; // Unroll first half iteration so loop extends the relevant pairs of paths.\n    // Because of invariant that intervals have no common items at start or end,\n    // and limitation not to call divide with empty intervals,\n    // therefore it cannot be called if a forward path with one change\n    // would overlap a reverse path with no changes, even if dMin === 1.\n\n    let d = 1;\n    iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n\n    for (d += 1; d <= dMax; d += 1) {\n      iMaxR = extendPathsR(\n        d - 1,\n        aStart,\n        bStart,\n        bR,\n        isCommon,\n        aIndexesR,\n        iMaxR\n      );\n\n      if (d < dMin) {\n        iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n      } else if (\n        // If a forward path overlaps a reverse path in the same diagonal,\n        // return a division of the index intervals at the middle change.\n        extendOverlappablePathsF(\n          d,\n          aStart,\n          aEnd,\n          bStart,\n          bEnd,\n          isCommon,\n          aIndexesF,\n          iMaxF,\n          aIndexesR,\n          iMaxR,\n          division\n        )\n      ) {\n        return;\n      }\n    }\n  }\n  /* istanbul ignore next */\n\n  throw new Error(\n    `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}`\n  );\n}; // Given index intervals and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence. Divide and conquer with only linear space.\n//\n// The index intervals are half open [start, end) like array slice method.\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because divide function will throw the “no overlap” error.\n\nconst findSubsequences = (\n  nChange,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  transposed,\n  callbacks,\n  aIndexesF,\n  aIndexesR,\n  division // temporary memory, not input nor output\n) => {\n  if (bEnd - bStart < aEnd - aStart) {\n    // Transpose graph so it has portrait instead of landscape orientation.\n    // Always compare shorter to longer sequence for consistency and optimization.\n    transposed = !transposed;\n\n    if (transposed && callbacks.length === 1) {\n      // Lazily wrap callback functions to swap args if graph is transposed.\n      const {foundSubsequence, isCommon} = callbacks[0];\n      callbacks[1] = {\n        foundSubsequence: (nCommon, bCommon, aCommon) => {\n          foundSubsequence(nCommon, aCommon, bCommon);\n        },\n        isCommon: (bIndex, aIndex) => isCommon(aIndex, bIndex)\n      };\n    }\n\n    const tStart = aStart;\n    const tEnd = aEnd;\n    aStart = bStart;\n    aEnd = bEnd;\n    bStart = tStart;\n    bEnd = tEnd;\n  }\n\n  const {foundSubsequence, isCommon} = callbacks[transposed ? 1 : 0]; // Divide the index intervals at the middle change.\n\n  divide(\n    nChange,\n    aStart,\n    aEnd,\n    bStart,\n    bEnd,\n    isCommon,\n    aIndexesF,\n    aIndexesR,\n    division\n  );\n  const {\n    nChangePreceding,\n    aEndPreceding,\n    bEndPreceding,\n    nCommonPreceding,\n    aCommonPreceding,\n    bCommonPreceding,\n    nCommonFollowing,\n    aCommonFollowing,\n    bCommonFollowing,\n    nChangeFollowing,\n    aStartFollowing,\n    bStartFollowing\n  } = division; // Unless either index interval is empty, they might contain common items.\n\n  if (aStart < aEndPreceding && bStart < bEndPreceding) {\n    // Recursely find and return common subsequences preceding the division.\n    findSubsequences(\n      nChangePreceding,\n      aStart,\n      aEndPreceding,\n      bStart,\n      bEndPreceding,\n      transposed,\n      callbacks,\n      aIndexesF,\n      aIndexesR,\n      division\n    );\n  } // Return common subsequences that are adjacent to the middle change.\n\n  if (nCommonPreceding !== 0) {\n    foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding);\n  }\n\n  if (nCommonFollowing !== 0) {\n    foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing);\n  } // Unless either index interval is empty, they might contain common items.\n\n  if (aStartFollowing < aEnd && bStartFollowing < bEnd) {\n    // Recursely find and return common subsequences following the division.\n    findSubsequences(\n      nChangeFollowing,\n      aStartFollowing,\n      aEnd,\n      bStartFollowing,\n      bEnd,\n      transposed,\n      callbacks,\n      aIndexesF,\n      aIndexesR,\n      division\n    );\n  }\n};\n\nconst validateLength = (name, arg) => {\n  const type = typeof arg;\n\n  if (type !== 'number') {\n    throw new TypeError(`${pkg}: ${name} typeof ${type} is not a number`);\n  }\n\n  if (!Number.isSafeInteger(arg)) {\n    throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`);\n  }\n\n  if (arg < 0) {\n    throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`);\n  }\n};\n\nconst validateCallback = (name, arg) => {\n  const type = typeof arg;\n\n  if (type !== 'function') {\n    throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`);\n  }\n}; // Compare items in two sequences to find a longest common subsequence.\n// Given lengths of sequences and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence.\n\nvar _default = (aLength, bLength, isCommon, foundSubsequence) => {\n  validateLength('aLength', aLength);\n  validateLength('bLength', bLength);\n  validateCallback('isCommon', isCommon);\n  validateCallback('foundSubsequence', foundSubsequence); // Count common items from the start in the forward direction.\n\n  const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon);\n\n  if (nCommonF !== 0) {\n    foundSubsequence(nCommonF, 0, 0);\n  } // Unless both sequences consist of common items only,\n  // find common items in the half-trimmed index intervals.\n\n  if (aLength !== nCommonF || bLength !== nCommonF) {\n    // Invariant: intervals do not have common items at the start.\n    // The start of an index interval is closed like array slice method.\n    const aStart = nCommonF;\n    const bStart = nCommonF; // Count common items from the end in the reverse direction.\n\n    const nCommonR = countCommonItemsR(\n      aStart,\n      aLength - 1,\n      bStart,\n      bLength - 1,\n      isCommon\n    ); // Invariant: intervals do not have common items at the end.\n    // The end of an index interval is open like array slice method.\n\n    const aEnd = aLength - nCommonR;\n    const bEnd = bLength - nCommonR; // Unless one sequence consists of common items only,\n    // therefore the other trimmed index interval consists of changes only,\n    // find common items in the trimmed index intervals.\n\n    const nCommonFR = nCommonF + nCommonR;\n\n    if (aLength !== nCommonFR && bLength !== nCommonFR) {\n      const nChange = 0; // number of change items is not yet known\n\n      const transposed = false; // call the original unwrapped functions\n\n      const callbacks = [\n        {\n          foundSubsequence,\n          isCommon\n        }\n      ]; // Indexes in sequence a of last points in furthest reaching paths\n      // from outside the start at top left in the forward direction:\n\n      const aIndexesF = [NOT_YET_SET]; // from the end at bottom right in the reverse direction:\n\n      const aIndexesR = [NOT_YET_SET]; // Initialize one object as output of all calls to divide function.\n\n      const division = {\n        aCommonFollowing: NOT_YET_SET,\n        aCommonPreceding: NOT_YET_SET,\n        aEndPreceding: NOT_YET_SET,\n        aStartFollowing: NOT_YET_SET,\n        bCommonFollowing: NOT_YET_SET,\n        bCommonPreceding: NOT_YET_SET,\n        bEndPreceding: NOT_YET_SET,\n        bStartFollowing: NOT_YET_SET,\n        nChangeFollowing: NOT_YET_SET,\n        nChangePreceding: NOT_YET_SET,\n        nCommonFollowing: NOT_YET_SET,\n        nCommonPreceding: NOT_YET_SET\n      }; // Find and return common subsequences in the trimmed index intervals.\n\n      findSubsequences(\n        nChange,\n        aStart,\n        aEnd,\n        bStart,\n        bEnd,\n        transposed,\n        callbacks,\n        aIndexesF,\n        aIndexesR,\n        division\n      );\n    }\n\n    if (nCommonR !== 0) {\n      foundSubsequence(nCommonR, aEnd, bEnd);\n    }\n  }\n};\n\nexports.default = _default;\n","'use strict';\n\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst returnInput = str => str;\n\nconst allColorsAsFunc = Object.keys(_ansiStyles.default)\n  .map(style => ({\n    [style]: returnInput\n  }))\n  .reduce((acc, cur) => Object.assign(acc, cur));\nObject.keys(allColorsAsFunc)\n  .map(color => allColorsAsFunc[color])\n  .forEach(style => {\n    Object.assign(style, allColorsAsFunc);\n    Object.assign(returnInput, style);\n  });\nmodule.exports = allColorsAsFunc;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {equals, fnNameFor, hasProperty, isA, isUndefined} from './jasmineUtils';\n\nimport {emptyObject} from './utils';\n\nexport class AsymmetricMatcher<T> {\n  protected sample: T;\n  $$typeof: symbol;\n  inverse?: boolean;\n\n  constructor(sample: T) {\n    this.$$typeof = Symbol.for('jest.asymmetricMatcher');\n    this.sample = sample;\n  }\n}\n\nclass Any extends AsymmetricMatcher<any> {\n  constructor(sample: unknown) {\n    if (typeof sample === 'undefined') {\n      throw new TypeError(\n        'any() expects to be passed a constructor function. ' +\n          'Please pass one or use anything() to match any object.',\n      );\n    }\n    super(sample);\n  }\n\n  asymmetricMatch(other: unknown) {\n    if (this.sample == String) {\n      return typeof other == 'string' || other instanceof String;\n    }\n\n    if (this.sample == Number) {\n      return typeof other == 'number' || other instanceof Number;\n    }\n\n    if (this.sample == Function) {\n      return typeof other == 'function' || other instanceof Function;\n    }\n\n    if (this.sample == Object) {\n      return typeof other == 'object';\n    }\n\n    if (this.sample == Boolean) {\n      return typeof other == 'boolean';\n    }\n\n    return other instanceof this.sample;\n  }\n\n  toString() {\n    return 'Any';\n  }\n\n  getExpectedType() {\n    if (this.sample == String) {\n      return 'string';\n    }\n\n    if (this.sample == Number) {\n      return 'number';\n    }\n\n    if (this.sample == Function) {\n      return 'function';\n    }\n\n    if (this.sample == Object) {\n      return 'object';\n    }\n\n    if (this.sample == Boolean) {\n      return 'boolean';\n    }\n\n    return fnNameFor(this.sample);\n  }\n\n  toAsymmetricMatcher() {\n    return 'Any<' + fnNameFor(this.sample) + '>';\n  }\n}\n\nclass Anything extends AsymmetricMatcher<void> {\n  asymmetricMatch(other: unknown) {\n    return !isUndefined(other) && other !== null;\n  }\n\n  toString() {\n    return 'Anything';\n  }\n\n  // No getExpectedType method, because it matches either null or undefined.\n\n  toAsymmetricMatcher() {\n    return 'Anything';\n  }\n}\n\nclass ArrayContaining extends AsymmetricMatcher<Array<unknown>> {\n  constructor(sample: Array<unknown>, inverse: boolean = false) {\n    super(sample);\n    this.inverse = inverse;\n  }\n\n  asymmetricMatch(other: Array<unknown>) {\n    if (!Array.isArray(this.sample)) {\n      throw new Error(\n        `You must provide an array to ${this.toString()}, not '` +\n          typeof this.sample +\n          \"'.\",\n      );\n    }\n\n    const result =\n      this.sample.length === 0 ||\n      (Array.isArray(other) &&\n        this.sample.every(item =>\n          other.some(another => equals(item, another)),\n        ));\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `Array${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  getExpectedType() {\n    return 'array';\n  }\n}\n\nclass ObjectContaining extends AsymmetricMatcher<Record<string, any>> {\n  constructor(sample: Record<string, any>, inverse: boolean = false) {\n    super(sample);\n    this.inverse = inverse;\n  }\n\n  asymmetricMatch(other: any) {\n    if (typeof this.sample !== 'object') {\n      throw new Error(\n        `You must provide an object to ${this.toString()}, not '` +\n          typeof this.sample +\n          \"'.\",\n      );\n    }\n\n    if (this.inverse) {\n      for (const property in this.sample) {\n        if (\n          hasProperty(other, property) &&\n          equals(this.sample[property], other[property]) &&\n          !emptyObject(this.sample[property]) &&\n          !emptyObject(other[property])\n        ) {\n          return false;\n        }\n      }\n\n      return true;\n    } else {\n      for (const property in this.sample) {\n        if (\n          !hasProperty(other, property) ||\n          !equals(this.sample[property], other[property])\n        ) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  toString() {\n    return `Object${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  getExpectedType() {\n    return 'object';\n  }\n}\n\nclass StringContaining extends AsymmetricMatcher<string> {\n  constructor(sample: string, inverse: boolean = false) {\n    if (!isA('String', sample)) {\n      throw new Error('Expected is not a string');\n    }\n    super(sample);\n    this.inverse = inverse;\n  }\n\n  asymmetricMatch(other: string) {\n    const result = isA('String', other) && other.includes(this.sample);\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `String${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  getExpectedType() {\n    return 'string';\n  }\n}\n\nclass StringMatching extends AsymmetricMatcher<RegExp> {\n  constructor(sample: string | RegExp, inverse: boolean = false) {\n    if (!isA('String', sample) && !isA('RegExp', sample)) {\n      throw new Error('Expected is not a String or a RegExp');\n    }\n    super(new RegExp(sample));\n\n    this.inverse = inverse;\n  }\n\n  asymmetricMatch(other: string) {\n    const result = isA('String', other) && this.sample.test(other);\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `String${this.inverse ? 'Not' : ''}Matching`;\n  }\n\n  getExpectedType() {\n    return 'string';\n  }\n}\n\nexport const any = (expectedObject: unknown): Any => new Any(expectedObject);\nexport const anything = (): Anything => new Anything();\nexport const arrayContaining = (sample: Array<unknown>): ArrayContaining =>\n  new ArrayContaining(sample);\nexport const arrayNotContaining = (sample: Array<unknown>): ArrayContaining =>\n  new ArrayContaining(sample, true);\nexport const objectContaining = (\n  sample: Record<string, any>,\n): ObjectContaining => new ObjectContaining(sample);\nexport const objectNotContaining = (\n  sample: Record<string, any>,\n): ObjectContaining => new ObjectContaining(sample, true);\nexport const stringContaining = (expected: string): StringContaining =>\n  new StringContaining(expected);\nexport const stringNotContaining = (expected: string): StringContaining =>\n  new StringContaining(expected, true);\nexport const stringMatching = (expected: string | RegExp): StringMatching =>\n  new StringMatching(expected);\nexport const stringNotMatching = (expected: string | RegExp): StringMatching =>\n  new StringMatching(expected, true);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {\n  EXPECTED_COLOR,\n  RECEIVED_COLOR,\n  matcherHint,\n  pluralize,\n} from 'jest-matcher-utils';\n\nimport {getState, setState} from './jestMatchersObject';\n\nconst resetAssertionsLocalState = () => {\n  setState({\n    assertionCalls: 0,\n    expectedAssertionsNumber: null,\n    isExpectingAssertions: false,\n  });\n};\n\n// Create and format all errors related to the mismatched number of `expect`\n// calls and reset the matcher's state.\nconst extractExpectedAssertionsErrors = () => {\n  const result = [];\n  const {\n    assertionCalls,\n    expectedAssertionsNumber,\n    expectedAssertionsNumberError,\n    isExpectingAssertions,\n    isExpectingAssertionsError,\n  } = getState();\n\n  resetAssertionsLocalState();\n\n  if (\n    typeof expectedAssertionsNumber === 'number' &&\n    assertionCalls !== expectedAssertionsNumber\n  ) {\n    const numOfAssertionsExpected = EXPECTED_COLOR(\n      pluralize('assertion', expectedAssertionsNumber),\n    );\n\n    expectedAssertionsNumberError.message =\n      matcherHint('.assertions', '', String(expectedAssertionsNumber), {\n        isDirectExpectCall: true,\n      }) +\n      '\\n\\n' +\n      `Expected ${numOfAssertionsExpected} to be called but received ` +\n      RECEIVED_COLOR(pluralize('assertion call', assertionCalls || 0)) +\n      '.';\n\n    result.push({\n      actual: assertionCalls,\n      error: expectedAssertionsNumberError,\n      expected: expectedAssertionsNumber,\n    });\n  }\n  if (isExpectingAssertions && assertionCalls === 0) {\n    const expected = EXPECTED_COLOR('at least one assertion');\n    const received = RECEIVED_COLOR('received none');\n\n    isExpectingAssertionsError.message =\n      matcherHint('.hasAssertions', '', '', {\n        isDirectExpectCall: true,\n      }) +\n      '\\n\\n' +\n      `Expected ${expected} to be called but ${received}.`;\n\n    result.push({\n      actual: 'none',\n      error: isExpectingAssertionsError,\n      expected: 'at least one',\n    });\n  }\n\n  return result;\n};\n\nexport default extractExpectedAssertionsErrors;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport * as matcherUtils from 'jest-matcher-utils';\nimport type {\n  AsyncExpectationResult,\n  Expect,\n  ExpectationResult,\n  MatcherState as JestMatcherState,\n  Matchers as MatcherInterface,\n  MatchersObject,\n  PromiseMatcherFn,\n  RawMatcherFn,\n  SyncExpectationResult,\n  ThrowingMatcherFn,\n} from './types';\n\nimport {iterableEquality, subsetEquality} from './utils';\nimport matchers from './matchers';\nimport spyMatchers from './spyMatchers';\nimport toThrowMatchers, {\n  createMatcher as createThrowMatcher,\n} from './toThrowMatchers';\nimport {equals} from './jasmineUtils';\nimport {\n  any,\n  anything,\n  arrayContaining,\n  arrayNotContaining,\n  objectContaining,\n  objectNotContaining,\n  stringContaining,\n  stringMatching,\n  stringNotContaining,\n  stringNotMatching,\n} from './asymmetricMatchers';\nimport {\n  INTERNAL_MATCHER_FLAG,\n  getMatchers,\n  getState,\n  setMatchers,\n  setState,\n} from './jestMatchersObject';\nimport extractExpectedAssertionsErrors from './extractExpectedAssertionsErrors';\n\nclass JestAssertionError extends Error {\n  matcherResult?: SyncExpectationResult;\n}\n\nconst isPromise = <T extends any>(obj: any): obj is PromiseLike<T> =>\n  !!obj &&\n  (typeof obj === 'object' || typeof obj === 'function') &&\n  typeof obj.then === 'function';\n\nconst createToThrowErrorMatchingSnapshotMatcher = function (\n  matcher: RawMatcherFn,\n) {\n  return function (\n    this: JestMatcherState,\n    received: any,\n    testNameOrInlineSnapshot?: string,\n  ) {\n    return matcher.apply(this, [received, testNameOrInlineSnapshot, true]);\n  };\n};\n\nconst getPromiseMatcher = (name: string, matcher: any) => {\n  if (name === 'toThrow' || name === 'toThrowError') {\n    return createThrowMatcher(name, true);\n  } else if (\n    name === 'toThrowErrorMatchingSnapshot' ||\n    name === 'toThrowErrorMatchingInlineSnapshot'\n  ) {\n    return createToThrowErrorMatchingSnapshotMatcher(matcher);\n  }\n\n  return null;\n};\n\nconst expect: any = (actual: any, ...rest: Array<any>) => {\n  if (rest.length !== 0) {\n    throw new Error('Expect takes at most one argument.');\n  }\n\n  const allMatchers = getMatchers();\n  const expectation: any = {\n    not: {},\n    rejects: {not: {}},\n    resolves: {not: {}},\n  };\n\n  const err = new JestAssertionError();\n\n  Object.keys(allMatchers).forEach(name => {\n    const matcher = allMatchers[name];\n    const promiseMatcher = getPromiseMatcher(name, matcher) || matcher;\n    expectation[name] = makeThrowingMatcher(matcher, false, '', actual);\n    expectation.not[name] = makeThrowingMatcher(matcher, true, '', actual);\n\n    expectation.resolves[name] = makeResolveMatcher(\n      name,\n      promiseMatcher,\n      false,\n      actual,\n      err,\n    );\n    expectation.resolves.not[name] = makeResolveMatcher(\n      name,\n      promiseMatcher,\n      true,\n      actual,\n      err,\n    );\n\n    expectation.rejects[name] = makeRejectMatcher(\n      name,\n      promiseMatcher,\n      false,\n      actual,\n      err,\n    );\n    expectation.rejects.not[name] = makeRejectMatcher(\n      name,\n      promiseMatcher,\n      true,\n      actual,\n      err,\n    );\n  });\n\n  return expectation;\n};\n\nconst getMessage = (message?: () => string) =>\n  (message && message()) ||\n  matcherUtils.RECEIVED_COLOR('No message was specified for this matcher.');\n\nconst makeResolveMatcher = (\n  matcherName: string,\n  matcher: RawMatcherFn,\n  isNot: boolean,\n  actual: Promise<any>,\n  outerErr: JestAssertionError,\n): PromiseMatcherFn => (...args) => {\n  const options = {\n    isNot,\n    promise: 'resolves',\n  };\n\n  if (!isPromise(actual)) {\n    throw new JestAssertionError(\n      matcherUtils.matcherErrorMessage(\n        matcherUtils.matcherHint(matcherName, undefined, '', options),\n        `${matcherUtils.RECEIVED_COLOR('received')} value must be a promise`,\n        matcherUtils.printWithType(\n          'Received',\n          actual,\n          matcherUtils.printReceived,\n        ),\n      ),\n    );\n  }\n\n  const innerErr = new JestAssertionError();\n\n  return actual.then(\n    result =>\n      makeThrowingMatcher(matcher, isNot, 'resolves', result, innerErr).apply(\n        null,\n        args,\n      ),\n    reason => {\n      outerErr.message =\n        matcherUtils.matcherHint(matcherName, undefined, '', options) +\n        '\\n\\n' +\n        `Received promise rejected instead of resolved\\n` +\n        `Rejected to value: ${matcherUtils.printReceived(reason)}`;\n      return Promise.reject(outerErr);\n    },\n  );\n};\n\nconst makeRejectMatcher = (\n  matcherName: string,\n  matcher: RawMatcherFn,\n  isNot: boolean,\n  actual: Promise<any> | (() => Promise<any>),\n  outerErr: JestAssertionError,\n): PromiseMatcherFn => (...args) => {\n  const options = {\n    isNot,\n    promise: 'rejects',\n  };\n\n  const actualWrapper: Promise<any> =\n    typeof actual === 'function' ? actual() : actual;\n\n  if (!isPromise(actualWrapper)) {\n    throw new JestAssertionError(\n      matcherUtils.matcherErrorMessage(\n        matcherUtils.matcherHint(matcherName, undefined, '', options),\n        `${matcherUtils.RECEIVED_COLOR(\n          'received',\n        )} value must be a promise or a function returning a promise`,\n        matcherUtils.printWithType(\n          'Received',\n          actual,\n          matcherUtils.printReceived,\n        ),\n      ),\n    );\n  }\n\n  const innerErr = new JestAssertionError();\n\n  return actualWrapper.then(\n    result => {\n      outerErr.message =\n        matcherUtils.matcherHint(matcherName, undefined, '', options) +\n        '\\n\\n' +\n        `Received promise resolved instead of rejected\\n` +\n        `Resolved to value: ${matcherUtils.printReceived(result)}`;\n      return Promise.reject(outerErr);\n    },\n    reason =>\n      makeThrowingMatcher(matcher, isNot, 'rejects', reason, innerErr).apply(\n        null,\n        args,\n      ),\n  );\n};\n\nconst makeThrowingMatcher = (\n  matcher: RawMatcherFn,\n  isNot: boolean,\n  promise: string,\n  actual: any,\n  err?: JestAssertionError,\n): ThrowingMatcherFn =>\n  function throwingMatcher(...args): any {\n    let throws = true;\n    const utils = {...matcherUtils, iterableEquality, subsetEquality};\n\n    const matcherContext: JestMatcherState = {\n      // When throws is disabled, the matcher will not throw errors during test\n      // execution but instead add them to the global matcher state. If a\n      // matcher throws, test execution is normally stopped immediately. The\n      // snapshot matcher uses it because we want to log all snapshot\n      // failures in a test.\n      dontThrow: () => (throws = false),\n      ...getState(),\n      equals,\n      error: err,\n      isNot,\n      promise,\n      utils,\n    };\n\n    const processResult = (\n      result: SyncExpectationResult,\n      asyncError?: JestAssertionError,\n    ) => {\n      _validateResult(result);\n\n      getState().assertionCalls++;\n\n      if ((result.pass && isNot) || (!result.pass && !isNot)) {\n        // XOR\n        const message = getMessage(result.message);\n        let error;\n\n        if (err) {\n          error = err;\n          error.message = message;\n        } else if (asyncError) {\n          error = asyncError;\n          error.message = message;\n        } else {\n          error = new JestAssertionError(message);\n\n          // Try to remove this function from the stack trace frame.\n          // Guard for some environments (browsers) that do not support this feature.\n          if (Error.captureStackTrace) {\n            Error.captureStackTrace(error, throwingMatcher);\n          }\n        }\n        // Passing the result of the matcher with the error so that a custom\n        // reporter could access the actual and expected objects of the result\n        // for example in order to display a custom visual diff\n        error.matcherResult = result;\n\n        if (throws) {\n          throw error;\n        } else {\n          getState().suppressedErrors.push(error);\n        }\n      }\n    };\n\n    const handleError = (error: Error) => {\n      if (\n        matcher[INTERNAL_MATCHER_FLAG] === true &&\n        !(error instanceof JestAssertionError) &&\n        error.name !== 'PrettyFormatPluginError' &&\n        // Guard for some environments (browsers) that do not support this feature.\n        Error.captureStackTrace\n      ) {\n        // Try to remove this and deeper functions from the stack trace frame.\n        Error.captureStackTrace(error, throwingMatcher);\n      }\n      throw error;\n    };\n\n    let potentialResult: ExpectationResult;\n\n    try {\n      potentialResult =\n        matcher[INTERNAL_MATCHER_FLAG] === true\n          ? matcher.call(matcherContext, actual, ...args)\n          : // It's a trap specifically for inline snapshot to capture this name\n            // in the stack trace, so that it can correctly get the custom matcher\n            // function call.\n            (function __EXTERNAL_MATCHER_TRAP__() {\n              return matcher.call(matcherContext, actual, ...args);\n            })();\n\n      if (isPromise(potentialResult)) {\n        const asyncResult = potentialResult as AsyncExpectationResult;\n        const asyncError = new JestAssertionError();\n        if (Error.captureStackTrace) {\n          Error.captureStackTrace(asyncError, throwingMatcher);\n        }\n\n        return asyncResult\n          .then(aResult => processResult(aResult, asyncError))\n          .catch(error => handleError(error));\n      } else {\n        const syncResult = potentialResult as SyncExpectationResult;\n\n        return processResult(syncResult);\n      }\n    } catch (error) {\n      return handleError(error);\n    }\n  };\n\nexpect.extend = (matchers: MatchersObject): void =>\n  setMatchers(matchers, false, expect);\n\nexpect.anything = anything;\nexpect.any = any;\n\nexpect.not = {\n  arrayContaining: arrayNotContaining,\n  objectContaining: objectNotContaining,\n  stringContaining: stringNotContaining,\n  stringMatching: stringNotMatching,\n};\n\nexpect.objectContaining = objectContaining;\nexpect.arrayContaining = arrayContaining;\nexpect.stringContaining = stringContaining;\nexpect.stringMatching = stringMatching;\n\nconst _validateResult = (result: any) => {\n  if (\n    typeof result !== 'object' ||\n    typeof result.pass !== 'boolean' ||\n    (result.message &&\n      typeof result.message !== 'string' &&\n      typeof result.message !== 'function')\n  ) {\n    throw new Error(\n      'Unexpected return from a matcher function.\\n' +\n        'Matcher functions should ' +\n        'return an object in the following format:\\n' +\n        '  {message?: string | function, pass: boolean}\\n' +\n        `'${matcherUtils.stringify(result)}' was returned`,\n    );\n  }\n};\n\nfunction assertions(expected: number) {\n  const error = new Error();\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(error, assertions);\n  }\n\n  getState().expectedAssertionsNumber = expected;\n  getState().expectedAssertionsNumberError = error;\n}\nfunction hasAssertions(...args: Array<any>) {\n  const error = new Error();\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(error, hasAssertions);\n  }\n\n  matcherUtils.ensureNoExpected(args[0], '.hasAssertions');\n  getState().isExpectingAssertions = true;\n  getState().isExpectingAssertionsError = error;\n}\n\n// add default jest matchers\nsetMatchers(matchers, true, expect as Expect);\nsetMatchers(spyMatchers, true, expect as Expect);\nsetMatchers(toThrowMatchers, true, expect as Expect);\n\nexpect.addSnapshotSerializer = () => void 0;\nexpect.assertions = assertions;\nexpect.hasAssertions = hasAssertions;\nexpect.getState = getState;\nexpect.setState = setState;\nexpect.extractExpectedAssertionsErrors = extractExpectedAssertionsErrors;\n\nconst expectExport = expect as Expect;\n\n// eslint-disable-next-line no-redeclare\nnamespace expectExport {\n  export type MatcherState = JestMatcherState;\n  export interface Matchers<R> extends MatcherInterface<R> {}\n}\n\nexport = expectExport;\n","/*\nCopyright (c) 2008-2016 Pivotal Labs\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n/* eslint-disable */\n\nimport type {Tester} from './types';\n\n// Extracted out of jasmine 2.5.2\nexport function equals(\n  a: unknown,\n  b: unknown,\n  customTesters?: Array<Tester>,\n  strictCheck?: boolean,\n): boolean {\n  customTesters = customTesters || [];\n  return eq(a, b, [], [], customTesters, strictCheck ? hasKey : hasDefinedKey);\n}\n\nconst functionToString = Function.prototype.toString;\n\nfunction isAsymmetric(obj: any) {\n  return !!obj && isA('Function', obj.asymmetricMatch);\n}\n\nfunction asymmetricMatch(a: any, b: any) {\n  var asymmetricA = isAsymmetric(a),\n    asymmetricB = isAsymmetric(b);\n\n  if (asymmetricA && asymmetricB) {\n    return undefined;\n  }\n\n  if (asymmetricA) {\n    return a.asymmetricMatch(b);\n  }\n\n  if (asymmetricB) {\n    return b.asymmetricMatch(a);\n  }\n}\n\n// Equality function lovingly adapted from isEqual in\n//   [Underscore](http://underscorejs.org)\nfunction eq(\n  a: any,\n  b: any,\n  aStack: Array<unknown>,\n  bStack: Array<unknown>,\n  customTesters: Array<Tester>,\n  hasKey: any,\n): boolean {\n  var result = true;\n\n  var asymmetricResult = asymmetricMatch(a, b);\n  if (asymmetricResult !== undefined) {\n    return asymmetricResult;\n  }\n\n  for (var i = 0; i < customTesters.length; i++) {\n    var customTesterResult = customTesters[i](a, b);\n    if (customTesterResult !== undefined) {\n      return customTesterResult;\n    }\n  }\n\n  if (a instanceof Error && b instanceof Error) {\n    return a.message == b.message;\n  }\n\n  if (Object.is(a, b)) {\n    return true;\n  }\n  // A strict comparison is necessary because `null == undefined`.\n  if (a === null || b === null) {\n    return a === b;\n  }\n  var className = Object.prototype.toString.call(a);\n  if (className != Object.prototype.toString.call(b)) {\n    return false;\n  }\n  switch (className) {\n    case '[object Boolean]':\n    case '[object String]':\n    case '[object Number]':\n      if (typeof a !== typeof b) {\n        // One is a primitive, one a `new Primitive()`\n        return false;\n      } else if (typeof a !== 'object' && typeof b !== 'object') {\n        // both are proper primitives\n        return Object.is(a, b);\n      } else {\n        // both are `new Primitive()`s\n        return Object.is(a.valueOf(), b.valueOf());\n      }\n    case '[object Date]':\n      // Coerce dates to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a == +b;\n    // RegExps are compared by their source patterns and flags.\n    case '[object RegExp]':\n      return a.source === b.source && a.flags === b.flags;\n  }\n  if (typeof a !== 'object' || typeof b !== 'object') {\n    return false;\n  }\n\n  // Use DOM3 method isEqualNode (IE>=9)\n  if (isDomNode(a) && isDomNode(b)) {\n    return a.isEqualNode(b);\n  }\n\n  // Used to detect circular references.\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    // circular references at same depth are equal\n    // circular reference is not equal to non-circular one\n    if (aStack[length] === a) {\n      return bStack[length] === b;\n    } else if (bStack[length] === b) {\n      return false;\n    }\n  }\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n  var size = 0;\n  // Recursively compare objects and arrays.\n  // Compare array lengths to determine if a deep comparison is necessary.\n  if (className == '[object Array]') {\n    size = a.length;\n    if (size !== b.length) {\n      return false;\n    }\n\n    while (size--) {\n      result = eq(a[size], b[size], aStack, bStack, customTesters, hasKey);\n      if (!result) {\n        return false;\n      }\n    }\n  }\n\n  // Deep compare objects.\n  var aKeys = keys(a, className == '[object Array]', hasKey),\n    key;\n  size = aKeys.length;\n\n  // Ensure that both objects contain the same number of properties before comparing deep equality.\n  if (keys(b, className == '[object Array]', hasKey).length !== size) {\n    return false;\n  }\n\n  while (size--) {\n    key = aKeys[size];\n\n    // Deep compare each member\n    result =\n      hasKey(b, key) &&\n      eq(a[key], b[key], aStack, bStack, customTesters, hasKey);\n\n    if (!result) {\n      return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n\n  return result;\n}\n\nfunction keys(\n  obj: object,\n  isArray: boolean,\n  hasKey: (obj: object, key: string) => boolean,\n) {\n  var allKeys = (function(o) {\n    var keys = [];\n    for (var key in o) {\n      if (hasKey(o, key)) {\n        keys.push(key);\n      }\n    }\n    return keys.concat(\n      (Object.getOwnPropertySymbols(o) as Array<any>).filter(\n        symbol =>\n          (Object.getOwnPropertyDescriptor(o, symbol) as PropertyDescriptor)\n            .enumerable,\n      ),\n    );\n  })(obj);\n\n  if (!isArray) {\n    return allKeys;\n  }\n\n  var extraKeys = [];\n  if (allKeys.length === 0) {\n    return allKeys;\n  }\n\n  for (var x = 0; x < allKeys.length; x++) {\n    if (typeof allKeys[x] === 'symbol' || !allKeys[x].match(/^[0-9]+$/)) {\n      extraKeys.push(allKeys[x]);\n    }\n  }\n\n  return extraKeys;\n}\n\nfunction hasDefinedKey(obj: any, key: string) {\n  return hasKey(obj, key) && obj[key] !== undefined;\n}\n\nfunction hasKey(obj: any, key: string) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function isA(typeName: string, value: unknown) {\n  return Object.prototype.toString.apply(value) === '[object ' + typeName + ']';\n}\n\nfunction isDomNode(obj: any): boolean {\n  return (\n    obj !== null &&\n    typeof obj === 'object' &&\n    typeof obj.nodeType === 'number' &&\n    typeof obj.nodeName === 'string' &&\n    typeof obj.isEqualNode === 'function'\n  );\n}\n\nexport function fnNameFor(func: Function) {\n  if (func.name) {\n    return func.name;\n  }\n\n  const matches = functionToString\n    .call(func)\n    .match(/^(?:async)?\\s*function\\s*\\*?\\s*([\\w$]+)\\s*\\(/);\n  return matches ? matches[1] : '<anonymous>';\n}\n\nexport function isUndefined(obj: any) {\n  return obj === void 0;\n}\n\nfunction getPrototype(obj: object) {\n  if (Object.getPrototypeOf) {\n    return Object.getPrototypeOf(obj);\n  }\n\n  if (obj.constructor.prototype == obj) {\n    return null;\n  }\n\n  return obj.constructor.prototype;\n}\n\nexport function hasProperty(obj: object | null, property: string): boolean {\n  if (!obj) {\n    return false;\n  }\n\n  if (Object.prototype.hasOwnProperty.call(obj, property)) {\n    return true;\n  }\n\n  return hasProperty(getPrototype(obj), property);\n}\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\nexport function isImmutableUnorderedKeyed(maybeKeyed: any) {\n  return !!(\n    maybeKeyed &&\n    maybeKeyed[IS_KEYED_SENTINEL] &&\n    !maybeKeyed[IS_ORDERED_SENTINEL]\n  );\n}\n\nexport function isImmutableUnorderedSet(maybeSet: any) {\n  return !!(\n    maybeSet &&\n    maybeSet[IS_SET_SENTINEL] &&\n    !maybeSet[IS_ORDERED_SENTINEL]\n  );\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {AsymmetricMatcher} from './asymmetricMatchers';\nimport type {Expect, MatchersObject, SyncExpectationResult} from './types';\n\n// Global matchers object holds the list of available matchers and\n// the state, that can hold matcher specific values that change over time.\nconst JEST_MATCHERS_OBJECT = Symbol.for('$$jest-matchers-object');\n\n// Notes a built-in/internal Jest matcher.\n// Jest may override the stack trace of Errors thrown by internal matchers.\nexport const INTERNAL_MATCHER_FLAG = Symbol.for('$$jest-internal-matcher');\n\nif (!global.hasOwnProperty(JEST_MATCHERS_OBJECT)) {\n  Object.defineProperty(global, JEST_MATCHERS_OBJECT, {\n    value: {\n      matchers: Object.create(null),\n      state: {\n        assertionCalls: 0,\n        expectedAssertionsNumber: null,\n        isExpectingAssertions: false,\n        suppressedErrors: [], // errors that are not thrown immediately.\n      },\n    },\n  });\n}\n\nexport const getState = (): any => (global as any)[JEST_MATCHERS_OBJECT].state;\n\nexport const setState = (state: object): void => {\n  Object.assign((global as any)[JEST_MATCHERS_OBJECT].state, state);\n};\n\nexport const getMatchers = (): MatchersObject =>\n  (global as any)[JEST_MATCHERS_OBJECT].matchers;\n\nexport const setMatchers = (\n  matchers: MatchersObject,\n  isInternal: boolean,\n  expect: Expect,\n): void => {\n  Object.keys(matchers).forEach(key => {\n    const matcher = matchers[key];\n    Object.defineProperty(matcher, INTERNAL_MATCHER_FLAG, {\n      value: isInternal,\n    });\n\n    if (!isInternal) {\n      // expect is defined\n\n      class CustomMatcher extends AsymmetricMatcher<[unknown, unknown]> {\n        constructor(inverse: boolean = false, ...sample: [unknown, unknown]) {\n          super(sample);\n          this.inverse = inverse;\n        }\n\n        asymmetricMatch(other: unknown) {\n          const {pass} = matcher(\n            other,\n            ...this.sample,\n          ) as SyncExpectationResult;\n\n          return this.inverse ? !pass : pass;\n        }\n\n        toString() {\n          return `${this.inverse ? 'not.' : ''}${key}`;\n        }\n\n        getExpectedType() {\n          return 'any';\n        }\n\n        toAsymmetricMatcher() {\n          return `${this.toString()}<${this.sample.map(String).join(', ')}>`;\n        }\n      }\n\n      expect[key] = (...sample: [unknown, unknown]) =>\n        new CustomMatcher(false, ...sample);\n      if (!expect.not) {\n        expect.not = {};\n      }\n      expect.not[key] = (...sample: [unknown, unknown]) =>\n        new CustomMatcher(true, ...sample);\n    }\n  });\n\n  Object.assign((global as any)[JEST_MATCHERS_OBJECT].matchers, matchers);\n};\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport getType = require('jest-get-type');\nimport {\n  DIM_COLOR,\n  EXPECTED_COLOR,\n  MatcherHintOptions,\n  RECEIVED_COLOR,\n  SUGGEST_TO_CONTAIN_EQUAL,\n  ensureExpectedIsNonNegativeInteger,\n  ensureNoExpected,\n  ensureNumbers,\n  getLabelPrinter,\n  matcherErrorMessage,\n  matcherHint,\n  printDiffOrStringify,\n  printExpected,\n  printReceived,\n  printWithType,\n  stringify,\n} from 'jest-matcher-utils';\nimport type {MatcherState, MatchersObject} from './types';\nimport {\n  printCloseTo,\n  printExpectedConstructorName,\n  printExpectedConstructorNameNot,\n  printReceivedArrayContainExpectedItem,\n  printReceivedConstructorName,\n  printReceivedConstructorNameNot,\n  printReceivedStringContainExpectedResult,\n  printReceivedStringContainExpectedSubstring,\n} from './print';\nimport {\n  getObjectSubset,\n  getPath,\n  iterableEquality,\n  sparseArrayEquality,\n  subsetEquality,\n  typeEquality,\n} from './utils';\nimport {equals} from './jasmineUtils';\n\n// Omit colon and one or more spaces, so can call getLabelPrinter.\nconst EXPECTED_LABEL = 'Expected';\nconst RECEIVED_LABEL = 'Received';\nconst EXPECTED_VALUE_LABEL = 'Expected value';\nconst RECEIVED_VALUE_LABEL = 'Received value';\n\n// The optional property of matcher context is true if undefined.\nconst isExpand = (expand?: boolean): boolean => expand !== false;\n\nconst toStrictEqualTesters = [\n  iterableEquality,\n  typeEquality,\n  sparseArrayEquality,\n];\n\ntype ContainIterable =\n  | Array<unknown>\n  | Set<unknown>\n  | NodeListOf<Node>\n  | DOMTokenList\n  | HTMLCollectionOf<any>;\n\nconst matchers: MatchersObject = {\n  toBe(this: MatcherState, received: unknown, expected: unknown) {\n    const matcherName = 'toBe';\n    const options: MatcherHintOptions = {\n      comment: 'Object.is equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = Object.is(received, expected);\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}`\n      : () => {\n          const expectedType = getType(expected);\n\n          let deepEqualityName = null;\n          if (expectedType !== 'map' && expectedType !== 'set') {\n            // If deep equality passes when referential identity fails,\n            // but exclude map and set until review of their equality logic.\n            if (equals(received, expected, toStrictEqualTesters, true)) {\n              deepEqualityName = 'toStrictEqual';\n            } else if (equals(received, expected, [iterableEquality])) {\n              deepEqualityName = 'toEqual';\n            }\n          }\n\n          return (\n            matcherHint(matcherName, undefined, undefined, options) +\n            '\\n\\n' +\n            (deepEqualityName !== null\n              ? DIM_COLOR(\n                  `If it should pass with deep equality, replace \"${matcherName}\" with \"${deepEqualityName}\"`,\n                ) + '\\n\\n'\n              : '') +\n            printDiffOrStringify(\n              expected,\n              received,\n              EXPECTED_LABEL,\n              RECEIVED_LABEL,\n              isExpand(this.expand),\n            )\n          );\n        };\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return {actual: received, expected, message, name: matcherName, pass};\n  },\n\n  toBeCloseTo(\n    this: MatcherState,\n    received: number,\n    expected: number,\n    precision: number = 2,\n  ) {\n    const matcherName = 'toBeCloseTo';\n    const secondArgument = arguments.length === 3 ? 'precision' : undefined;\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n      secondArgument,\n      secondArgumentColor: (arg: string) => arg,\n    };\n\n    if (typeof expected !== 'number') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${EXPECTED_COLOR('expected')} value must be a number`,\n          printWithType('Expected', expected, printExpected),\n        ),\n      );\n    }\n\n    if (typeof received !== 'number') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR('received')} value must be a number`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    let pass = false;\n    let expectedDiff = 0;\n    let receivedDiff = 0;\n\n    if (received === Infinity && expected === Infinity) {\n      pass = true; // Infinity - Infinity is NaN\n    } else if (received === -Infinity && expected === -Infinity) {\n      pass = true; // -Infinity - -Infinity is NaN\n    } else {\n      expectedDiff = Math.pow(10, -precision) / 2;\n      receivedDiff = Math.abs(expected - received);\n      pass = receivedDiff < expectedDiff;\n    }\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (receivedDiff === 0\n            ? ''\n            : `Received:     ${printReceived(received)}\\n` +\n              '\\n' +\n              printCloseTo(receivedDiff, expectedDiff, precision, isNot))\n      : () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: ${printExpected(expected)}\\n` +\n          `Received: ${printReceived(received)}\\n` +\n          '\\n' +\n          printCloseTo(receivedDiff, expectedDiff, precision, isNot);\n\n    return {message, pass};\n  },\n\n  toBeDefined(this: MatcherState, received: unknown, expected: void) {\n    const matcherName = 'toBeDefined';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received !== void 0;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeFalsy(this: MatcherState, received: unknown, expected: void) {\n    const matcherName = 'toBeFalsy';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = !received;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeGreaterThan(\n    this: MatcherState,\n    received: number | bigint,\n    expected: number | bigint,\n  ) {\n    const matcherName = 'toBeGreaterThan';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received > expected;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} > ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}   ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeGreaterThanOrEqual(\n    this: MatcherState,\n    received: number | bigint,\n    expected: number | bigint,\n  ) {\n    const matcherName = 'toBeGreaterThanOrEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received >= expected;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} >= ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}    ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeInstanceOf(this: MatcherState, received: any, expected: Function) {\n    const matcherName = 'toBeInstanceOf';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof expected !== 'function') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${EXPECTED_COLOR('expected')} value must be a function`,\n          printWithType('Expected', expected, printExpected),\n        ),\n      );\n    }\n\n    const pass = received instanceof expected;\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          printExpectedConstructorNameNot('Expected constructor', expected) +\n          (typeof received.constructor === 'function' &&\n          received.constructor !== expected\n            ? printReceivedConstructorNameNot(\n                'Received constructor',\n                received.constructor,\n                expected,\n              )\n            : '')\n      : () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          printExpectedConstructorName('Expected constructor', expected) +\n          (getType.isPrimitive(received) ||\n          Object.getPrototypeOf(received) === null\n            ? `\\nReceived value has no prototype\\nReceived value: ${printReceived(\n                received,\n              )}`\n            : typeof received.constructor !== 'function'\n            ? `\\nReceived value: ${printReceived(received)}`\n            : printReceivedConstructorName(\n                'Received constructor',\n                received.constructor,\n              ));\n\n    return {message, pass};\n  },\n\n  toBeLessThan(\n    this: MatcherState,\n    received: number | bigint,\n    expected: number | bigint,\n  ) {\n    const matcherName = 'toBeLessThan';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received < expected;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} < ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}   ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeLessThanOrEqual(\n    this: MatcherState,\n    received: number | bigint,\n    expected: number | bigint,\n  ) {\n    const matcherName = 'toBeLessThanOrEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received <= expected;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} <= ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}    ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeNaN(this: MatcherState, received: any, expected: void) {\n    const matcherName = 'toBeNaN';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = Number.isNaN(received);\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeNull(this: MatcherState, received: unknown, expected: void) {\n    const matcherName = 'toBeNull';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received === null;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeTruthy(this: MatcherState, received: unknown, expected: void) {\n    const matcherName = 'toBeTruthy';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = !!received;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toBeUndefined(this: MatcherState, received: unknown, expected: void) {\n    const matcherName = 'toBeUndefined';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received === void 0;\n\n    const message = () =>\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return {message, pass};\n  },\n\n  toContain(\n    this: MatcherState,\n    received: ContainIterable | string,\n    expected: unknown,\n  ) {\n    const matcherName = 'toContain';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      comment: 'indexOf',\n      isNot,\n      promise: this.promise,\n    };\n\n    if (received == null) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    if (typeof received === 'string') {\n      const index = received.indexOf(String(expected));\n      const pass = index !== -1;\n\n      const message = () => {\n        const labelExpected = `Expected ${\n          typeof expected === 'string' ? 'substring' : 'value'\n        }`;\n        const labelReceived = 'Received string';\n        const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n        return (\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n            expected,\n          )}\\n` +\n          `${printLabel(labelReceived)}${isNot ? '    ' : ''}${\n            isNot\n              ? printReceivedStringContainExpectedSubstring(\n                  received,\n                  index,\n                  String(expected).length,\n                )\n              : printReceived(received)\n          }`\n        );\n      };\n\n      return {message, pass};\n    }\n\n    const indexable = Array.from(received);\n    const index = indexable.indexOf(expected);\n    const pass = index !== -1;\n\n    const message = () => {\n      const labelExpected = 'Expected value';\n      const labelReceived = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n      return (\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n          expected,\n        )}\\n` +\n        `${printLabel(labelReceived)}${isNot ? '    ' : ''}${\n          isNot && Array.isArray(received)\n            ? printReceivedArrayContainExpectedItem(received, index)\n            : printReceived(received)\n        }` +\n        (!isNot &&\n        indexable.findIndex(item =>\n          equals(item, expected, [iterableEquality]),\n        ) !== -1\n          ? `\\n\\n${SUGGEST_TO_CONTAIN_EQUAL}`\n          : '')\n      );\n    };\n\n    return {message, pass};\n  },\n\n  toContainEqual(\n    this: MatcherState,\n    received: ContainIterable,\n    expected: unknown,\n  ) {\n    const matcherName = 'toContainEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot,\n      promise: this.promise,\n    };\n\n    if (received == null) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    const index = Array.from(received).findIndex(item =>\n      equals(item, expected, [iterableEquality]),\n    );\n    const pass = index !== -1;\n\n    const message = () => {\n      const labelExpected = 'Expected value';\n      const labelReceived = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n      return (\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n          expected,\n        )}\\n` +\n        `${printLabel(labelReceived)}${isNot ? '    ' : ''}${\n          isNot && Array.isArray(received)\n            ? printReceivedArrayContainExpectedItem(received, index)\n            : printReceived(received)\n        }`\n      );\n    };\n\n    return {message, pass};\n  },\n\n  toEqual(this: MatcherState, received: unknown, expected: unknown) {\n    const matcherName = 'toEqual';\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = equals(received, expected, [iterableEquality]);\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (stringify(expected) !== stringify(received)\n            ? `Received:     ${printReceived(received)}`\n            : '')\n      : () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          printDiffOrStringify(\n            expected,\n            received,\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n          );\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return {actual: received, expected, message, name: matcherName, pass};\n  },\n\n  toHaveLength(this: MatcherState, received: any, expected: number) {\n    const matcherName = 'toHaveLength';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received?.length !== 'number') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR(\n            'received',\n          )} value must have a length property whose value must be a number`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n\n    const pass = received.length === expected;\n\n    const message = () => {\n      const labelExpected = 'Expected length';\n      const labelReceivedLength = 'Received length';\n      const labelReceivedValue = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(\n        labelExpected,\n        labelReceivedLength,\n        labelReceivedValue,\n      );\n\n      return (\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n          expected,\n        )}\\n` +\n        (isNot\n          ? ''\n          : `${printLabel(labelReceivedLength)}${printReceived(\n              received.length,\n            )}\\n`) +\n        `${printLabel(labelReceivedValue)}${isNot ? '    ' : ''}${printReceived(\n          received,\n        )}`\n      );\n    };\n\n    return {message, pass};\n  },\n\n  toHaveProperty(\n    this: MatcherState,\n    received: object,\n    expectedPath: string | Array<string>,\n    expectedValue?: unknown,\n  ) {\n    const matcherName = 'toHaveProperty';\n    const expectedArgument = 'path';\n    const hasValue = arguments.length === 3;\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: hasValue ? 'value' : '',\n    };\n\n    if (received === null || received === undefined) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, expectedArgument, options),\n          `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    const expectedPathType = getType(expectedPath);\n\n    if (expectedPathType !== 'string' && expectedPathType !== 'array') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, expectedArgument, options),\n          `${EXPECTED_COLOR('expected')} path must be a string or array`,\n          printWithType('Expected', expectedPath, printExpected),\n        ),\n      );\n    }\n\n    const expectedPathLength =\n      typeof expectedPath === 'string'\n        ? expectedPath.split('.').length\n        : expectedPath.length;\n\n    if (expectedPathType === 'array' && expectedPathLength === 0) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, expectedArgument, options),\n          `${EXPECTED_COLOR('expected')} path must not be an empty array`,\n          printWithType('Expected', expectedPath, printExpected),\n        ),\n      );\n    }\n\n    const result = getPath(received, expectedPath);\n    const {lastTraversedObject, hasEndProp} = result;\n    const receivedPath = result.traversedPath;\n    const hasCompletePath = receivedPath.length === expectedPathLength;\n    const receivedValue = hasCompletePath ? result.value : lastTraversedObject;\n\n    const pass = hasValue\n      ? equals(result.value, expectedValue, [iterableEquality])\n      : Boolean(hasEndProp); // theoretically undefined if empty path\n    // Remove type cast if we rewrite getPath as iterative algorithm.\n\n    // Delete this unique report if future breaking change\n    // removes the edge case that expected value undefined\n    // also matches absence of a property with the key path.\n    if (pass && !hasCompletePath) {\n      const message = () =>\n        matcherHint(matcherName, undefined, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected path: ${printExpected(expectedPath)}\\n` +\n        `Received path: ${printReceived(\n          expectedPathType === 'array' || receivedPath.length === 0\n            ? receivedPath\n            : receivedPath.join('.'),\n        )}\\n\\n` +\n        `Expected value: not ${printExpected(expectedValue)}\\n` +\n        `Received value:     ${printReceived(receivedValue)}\\n\\n` +\n        DIM_COLOR(\n          'Because a positive assertion passes for expected value undefined if the property does not exist, this negative assertion fails unless the property does exist and has a defined value',\n        );\n\n      return {message, pass};\n    }\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, expectedArgument, options) +\n          '\\n\\n' +\n          (hasValue\n            ? `Expected path: ${printExpected(expectedPath)}\\n\\n` +\n              `Expected value: not ${printExpected(expectedValue)}` +\n              (stringify(expectedValue) !== stringify(receivedValue)\n                ? `\\nReceived value:     ${printReceived(receivedValue)}`\n                : '')\n            : `Expected path: not ${printExpected(expectedPath)}\\n\\n` +\n              `Received value: ${printReceived(receivedValue)}`)\n      : () =>\n          matcherHint(matcherName, undefined, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected path: ${printExpected(expectedPath)}\\n` +\n          (hasCompletePath\n            ? '\\n' +\n              printDiffOrStringify(\n                expectedValue,\n                receivedValue,\n                EXPECTED_VALUE_LABEL,\n                RECEIVED_VALUE_LABEL,\n                isExpand(this.expand),\n              )\n            : `Received path: ${printReceived(\n                expectedPathType === 'array' || receivedPath.length === 0\n                  ? receivedPath\n                  : receivedPath.join('.'),\n              )}\\n\\n` +\n              (hasValue\n                ? `Expected value: ${printExpected(expectedValue)}\\n`\n                : '') +\n              `Received value: ${printReceived(receivedValue)}`);\n\n    return {message, pass};\n  },\n\n  toMatch(this: MatcherState, received: string, expected: string | RegExp) {\n    const matcherName = 'toMatch';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received !== 'string') {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR('received')} value must be a string`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    if (\n      !(typeof expected === 'string') &&\n      !(expected && typeof expected.test === 'function')\n    ) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${EXPECTED_COLOR(\n            'expected',\n          )} value must be a string or regular expression`,\n          printWithType('Expected', expected, printExpected),\n        ),\n      );\n    }\n\n    const pass =\n      typeof expected === 'string'\n        ? received.includes(expected)\n        : new RegExp(expected).test(received);\n\n    const message = pass\n      ? () =>\n          typeof expected === 'string'\n            ? matcherHint(matcherName, undefined, undefined, options) +\n              '\\n\\n' +\n              `Expected substring: not ${printExpected(expected)}\\n` +\n              `Received string:        ${printReceivedStringContainExpectedSubstring(\n                received,\n                received.indexOf(expected),\n                expected.length,\n              )}`\n            : matcherHint(matcherName, undefined, undefined, options) +\n              '\\n\\n' +\n              `Expected pattern: not ${printExpected(expected)}\\n` +\n              `Received string:      ${printReceivedStringContainExpectedResult(\n                received,\n                typeof expected.exec === 'function'\n                  ? expected.exec(received)\n                  : null,\n              )}`\n      : () => {\n          const labelExpected = `Expected ${\n            typeof expected === 'string' ? 'substring' : 'pattern'\n          }`;\n          const labelReceived = 'Received string';\n          const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n          return (\n            matcherHint(matcherName, undefined, undefined, options) +\n            '\\n\\n' +\n            `${printLabel(labelExpected)}${printExpected(expected)}\\n` +\n            `${printLabel(labelReceived)}${printReceived(received)}`\n          );\n        };\n\n    return {message, pass};\n  },\n\n  toMatchObject(this: MatcherState, received: object, expected: object) {\n    const matcherName = 'toMatchObject';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received !== 'object' || received === null) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${RECEIVED_COLOR('received')} value must be a non-null object`,\n          printWithType('Received', received, printReceived),\n        ),\n      );\n    }\n\n    if (typeof expected !== 'object' || expected === null) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${EXPECTED_COLOR('expected')} value must be a non-null object`,\n          printWithType('Expected', expected, printExpected),\n        ),\n      );\n    }\n\n    const pass = equals(received, expected, [iterableEquality, subsetEquality]);\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}` +\n          (stringify(expected) !== stringify(received)\n            ? `\\nReceived:     ${printReceived(received)}`\n            : '')\n      : () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          printDiffOrStringify(\n            expected,\n            getObjectSubset(received, expected),\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n          );\n\n    return {message, pass};\n  },\n\n  toStrictEqual(this: MatcherState, received: unknown, expected: unknown) {\n    const matcherName = 'toStrictEqual';\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = equals(received, expected, toStrictEqualTesters, true);\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (stringify(expected) !== stringify(received)\n            ? `Received:     ${printReceived(received)}`\n            : '')\n      : () =>\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          printDiffOrStringify(\n            expected,\n            received,\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n          );\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return {actual: received, expected, message, name: matcherName, pass};\n  },\n};\n\nexport default matchers;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {\n  EXPECTED_COLOR,\n  INVERTED_COLOR,\n  RECEIVED_COLOR,\n  printReceived,\n  stringify,\n} from 'jest-matcher-utils';\n\n// Format substring but do not enclose in double quote marks.\n// The replacement is compatible with pretty-format package.\nconst printSubstring = (val: string): string => val.replace(/\"|\\\\/g, '\\\\$&');\n\nexport const printReceivedStringContainExpectedSubstring = (\n  received: string,\n  start: number,\n  length: number, // not end\n): string =>\n  RECEIVED_COLOR(\n    '\"' +\n      printSubstring(received.slice(0, start)) +\n      INVERTED_COLOR(printSubstring(received.slice(start, start + length))) +\n      printSubstring(received.slice(start + length)) +\n      '\"',\n  );\n\nexport const printReceivedStringContainExpectedResult = (\n  received: string,\n  result: RegExpExecArray | null,\n): string =>\n  result === null\n    ? printReceived(received)\n    : printReceivedStringContainExpectedSubstring(\n        received,\n        result.index,\n        result[0].length,\n      );\n\n// The serialized array is compatible with pretty-format package min option.\n// However, items have default stringify depth (instead of depth - 1)\n// so expected item looks consistent by itself and enclosed in the array.\nexport const printReceivedArrayContainExpectedItem = (\n  received: Array<unknown>,\n  index: number,\n): string =>\n  RECEIVED_COLOR(\n    '[' +\n      received\n        .map((item, i) => {\n          const stringified = stringify(item);\n          return i === index ? INVERTED_COLOR(stringified) : stringified;\n        })\n        .join(', ') +\n      ']',\n  );\n\nexport const printCloseTo = (\n  receivedDiff: number,\n  expectedDiff: number,\n  precision: number,\n  isNot: boolean,\n): string => {\n  const receivedDiffString = stringify(receivedDiff);\n  const expectedDiffString = receivedDiffString.includes('e')\n    ? // toExponential arg is number of digits after the decimal point.\n      expectedDiff.toExponential(0)\n    : 0 <= precision && precision < 20\n    ? // toFixed arg is number of digits after the decimal point.\n      // It may be a value between 0 and 20 inclusive.\n      // Implementations may optionally support a larger range of values.\n      expectedDiff.toFixed(precision + 1)\n    : stringify(expectedDiff);\n\n  return (\n    `Expected precision:  ${isNot ? '    ' : ''}  ${stringify(precision)}\\n` +\n    `Expected difference: ${isNot ? 'not ' : ''}< ${EXPECTED_COLOR(\n      expectedDiffString,\n    )}\\n` +\n    `Received difference: ${isNot ? '    ' : ''}  ${RECEIVED_COLOR(\n      receivedDiffString,\n    )}`\n  );\n};\n\nexport const printExpectedConstructorName = (\n  label: string,\n  expected: Function,\n): string => printConstructorName(label, expected, false, true) + '\\n';\n\nexport const printExpectedConstructorNameNot = (\n  label: string,\n  expected: Function,\n): string => printConstructorName(label, expected, true, true) + '\\n';\n\nexport const printReceivedConstructorName = (\n  label: string,\n  received: Function,\n): string => printConstructorName(label, received, false, false) + '\\n';\n\n// Do not call function if received is equal to expected.\nexport const printReceivedConstructorNameNot = (\n  label: string,\n  received: Function,\n  expected: Function,\n): string =>\n  typeof expected.name === 'string' &&\n  expected.name.length !== 0 &&\n  typeof received.name === 'string' &&\n  received.name.length !== 0\n    ? printConstructorName(label, received, true, false) +\n      ` ${\n        Object.getPrototypeOf(received) === expected\n          ? 'extends'\n          : 'extends … extends'\n      } ${EXPECTED_COLOR(expected.name)}` +\n      '\\n'\n    : printConstructorName(label, received, false, false) + '\\n';\n\nconst printConstructorName = (\n  label: string,\n  constructor: Function,\n  isNot: boolean,\n  isExpected: boolean,\n): string =>\n  typeof constructor.name !== 'string'\n    ? `${label} name is not a string`\n    : constructor.name.length === 0\n    ? `${label} name is an empty string`\n    : `${label}: ${!isNot ? '' : isExpected ? 'not ' : '    '}${\n        isExpected\n          ? EXPECTED_COLOR(constructor.name)\n          : RECEIVED_COLOR(constructor.name)\n      }`;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport getType = require('jest-get-type');\nimport {\n  DIM_COLOR,\n  EXPECTED_COLOR,\n  MatcherHintOptions,\n  RECEIVED_COLOR,\n  diff,\n  ensureExpectedIsNonNegativeInteger,\n  ensureNoExpected,\n  matcherErrorMessage,\n  matcherHint,\n  printExpected,\n  printReceived,\n  printWithType,\n  stringify,\n} from 'jest-matcher-utils';\nimport type {\n  MatcherState,\n  MatchersObject,\n  SyncExpectationResult,\n} from './types';\nimport {equals} from './jasmineUtils';\nimport {iterableEquality} from './utils';\n\n// The optional property of matcher context is true if undefined.\nconst isExpand = (expand?: boolean): boolean => expand !== false;\n\nconst PRINT_LIMIT = 3;\n\nconst NO_ARGUMENTS = 'called with 0 arguments';\n\nconst printExpectedArgs = (expected: Array<unknown>): string =>\n  expected.length === 0\n    ? NO_ARGUMENTS\n    : expected.map(arg => printExpected(arg)).join(', ');\n\nconst printReceivedArgs = (\n  received: Array<unknown>,\n  expected?: Array<unknown>,\n): string =>\n  received.length === 0\n    ? NO_ARGUMENTS\n    : received\n        .map((arg, i) =>\n          Array.isArray(expected) &&\n          i < expected.length &&\n          isEqualValue(expected[i], arg)\n            ? printCommon(arg)\n            : printReceived(arg),\n        )\n        .join(', ');\n\nconst printCommon = (val: unknown) => DIM_COLOR(stringify(val));\n\nconst isEqualValue = (expected: unknown, received: unknown): boolean =>\n  equals(expected, received, [iterableEquality]);\n\nconst isEqualCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n): boolean => isEqualValue(expected, received);\n\nconst isEqualReturn = (expected: unknown, result: any): boolean =>\n  result.type === 'return' && isEqualValue(expected, result.value);\n\nconst countReturns = (results: Array<any>): number =>\n  results.reduce(\n    (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n    0,\n  );\n\nconst printNumberOfReturns = (\n  countReturns: number,\n  countCalls: number,\n): string =>\n  `\\nNumber of returns: ${printReceived(countReturns)}` +\n  (countCalls !== countReturns\n    ? `\\nNumber of calls:   ${printReceived(countCalls)}`\n    : '');\n\ntype PrintLabel = (string: string, isExpectedCall: boolean) => string;\n\n// Given a label, return a function which given a string,\n// right-aligns it preceding the colon in the label.\nconst getRightAlignedPrinter = (label: string): PrintLabel => {\n  // Assume that the label contains a colon.\n  const index = label.indexOf(':');\n  const suffix = label.slice(index);\n\n  return (string: string, isExpectedCall: boolean) =>\n    (isExpectedCall\n      ? '->' + ' '.repeat(Math.max(0, index - 2 - string.length))\n      : ' '.repeat(Math.max(index - string.length))) +\n    string +\n    suffix;\n};\n\ntype IndexedCall = [number, Array<unknown>];\n\nconst printReceivedCallsNegative = (\n  expected: Array<unknown>,\n  indexedCalls: Array<IndexedCall>,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  if (indexedCalls.length === 0) {\n    return '';\n  }\n\n  const label = 'Received:     ';\n  if (isOnlyCall) {\n    return label + printReceivedArgs(indexedCalls[0], expected) + '\\n';\n  }\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return (\n    'Received\\n' +\n    indexedCalls.reduce(\n      (printed: string, [i, args]: IndexedCall) =>\n        printed +\n        printAligned(String(i + 1), i === iExpectedCall) +\n        printReceivedArgs(args, expected) +\n        '\\n',\n      '',\n    )\n  );\n};\n\nconst printExpectedReceivedCallsPositive = (\n  expected: Array<unknown>,\n  indexedCalls: Array<IndexedCall>,\n  expand: boolean,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  const expectedLine = `Expected: ${printExpectedArgs(expected)}\\n`;\n  if (indexedCalls.length === 0) {\n    return expectedLine;\n  }\n\n  const label = 'Received: ';\n  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined)) {\n    const received = indexedCalls[0][1];\n\n    if (isLineDiffableCall(expected, received)) {\n      // Display diff without indentation.\n      const lines = [\n        EXPECTED_COLOR('- Expected'),\n        RECEIVED_COLOR('+ Received'),\n        '',\n      ];\n\n      const length = Math.max(expected.length, received.length);\n      for (let i = 0; i < length; i += 1) {\n        if (i < expected.length && i < received.length) {\n          if (isEqualValue(expected[i], received[i])) {\n            lines.push(`  ${printCommon(received[i])},`);\n            continue;\n          }\n\n          if (isLineDiffableArg(expected[i], received[i])) {\n            const difference = diff(expected[i], received[i], {expand});\n            if (\n              typeof difference === 'string' &&\n              difference.includes('- Expected') &&\n              difference.includes('+ Received')\n            ) {\n              // Omit annotation in case multiple args have diff.\n              lines.push(difference.split('\\n').slice(3).join('\\n') + ',');\n              continue;\n            }\n          }\n        }\n\n        if (i < expected.length) {\n          lines.push(EXPECTED_COLOR('- ' + stringify(expected[i])) + ',');\n        }\n        if (i < received.length) {\n          lines.push(RECEIVED_COLOR('+ ' + stringify(received[i])) + ',');\n        }\n      }\n\n      return lines.join('\\n') + '\\n';\n    }\n\n    return expectedLine + label + printReceivedArgs(received, expected) + '\\n';\n  }\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return (\n    expectedLine +\n    'Received\\n' +\n    indexedCalls.reduce((printed: string, [i, received]: IndexedCall) => {\n      const aligned = printAligned(String(i + 1), i === iExpectedCall);\n      return (\n        printed +\n        ((i === iExpectedCall || iExpectedCall === undefined) &&\n        isLineDiffableCall(expected, received)\n          ? aligned.replace(': ', '\\n') +\n            printDiffCall(expected, received, expand)\n          : aligned + printReceivedArgs(received, expected)) +\n        '\\n'\n      );\n    }, '')\n  );\n};\n\nconst indentation = 'Received'.replace(/\\w/g, ' ');\n\nconst printDiffCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n  expand: boolean,\n) =>\n  received\n    .map((arg, i) => {\n      if (i < expected.length) {\n        if (isEqualValue(expected[i], arg)) {\n          return indentation + '  ' + printCommon(arg) + ',';\n        }\n\n        if (isLineDiffableArg(expected[i], arg)) {\n          const difference = diff(expected[i], arg, {expand});\n\n          if (\n            typeof difference === 'string' &&\n            difference.includes('- Expected') &&\n            difference.includes('+ Received')\n          ) {\n            // Display diff with indentation.\n            // Omit annotation in case multiple args have diff.\n            return (\n              difference\n                .split('\\n')\n                .slice(3)\n                .map(line => indentation + line)\n                .join('\\n') + ','\n            );\n          }\n        }\n      }\n\n      // Display + only if received arg has no corresponding expected arg.\n      return (\n        indentation +\n        (i < expected.length\n          ? '  ' + printReceived(arg)\n          : RECEIVED_COLOR('+ ' + stringify(arg))) +\n        ','\n      );\n    })\n    .join('\\n');\n\nconst isLineDiffableCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n): boolean =>\n  expected.some(\n    (arg, i) => i < received.length && isLineDiffableArg(arg, received[i]),\n  );\n\n// Almost redundant with function in jest-matcher-utils,\n// except no line diff for any strings.\nconst isLineDiffableArg = (expected: unknown, received: unknown): boolean => {\n  const expectedType = getType(expected);\n  const receivedType = getType(received);\n\n  if (expectedType !== receivedType) {\n    return false;\n  }\n\n  if (getType.isPrimitive(expected)) {\n    return false;\n  }\n\n  if (\n    expectedType === 'date' ||\n    expectedType === 'function' ||\n    expectedType === 'regexp'\n  ) {\n    return false;\n  }\n\n  if (expected instanceof Error && received instanceof Error) {\n    return false;\n  }\n\n  if (\n    expectedType === 'object' &&\n    typeof (expected as any).asymmetricMatch === 'function'\n  ) {\n    return false;\n  }\n\n  if (\n    receivedType === 'object' &&\n    typeof (received as any).asymmetricMatch === 'function'\n  ) {\n    return false;\n  }\n\n  return true;\n};\n\nconst printResult = (result: any, expected: unknown) =>\n  result.type === 'throw'\n    ? 'function call threw an error'\n    : result.type === 'incomplete'\n    ? 'function call has not returned yet'\n    : isEqualValue(expected, result.value)\n    ? printCommon(result.value)\n    : printReceived(result.value);\n\ntype IndexedResult = [number, any];\n\n// Return either empty string or one line per indexed result,\n// so additional empty line can separate from `Number of returns` which follows.\nconst printReceivedResults = (\n  label: string,\n  expected: unknown,\n  indexedResults: Array<IndexedResult>,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  if (indexedResults.length === 0) {\n    return '';\n  }\n\n  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined)) {\n    return label + printResult(indexedResults[0][1], expected) + '\\n';\n  }\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return (\n    label.replace(':', '').trim() +\n    '\\n' +\n    indexedResults.reduce(\n      (printed: string, [i, result]: IndexedResult) =>\n        printed +\n        printAligned(String(i + 1), i === iExpectedCall) +\n        printResult(result, expected) +\n        '\\n',\n      '',\n    )\n  );\n};\n\nconst createToBeCalledMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: unknown,\n  ): SyncExpectationResult {\n    const expectedArgument = '';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n    const count = receivedIsSpy\n      ? received.calls.count()\n      : received.mock.calls.length;\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const pass = count > 0;\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of calls: ${printExpected(0)}\\n` +\n          `Received number of calls: ${printReceived(count)}\\n\\n` +\n          calls\n            .reduce((lines: Array<string>, args: any, i: number) => {\n              if (lines.length < PRINT_LIMIT) {\n                lines.push(`${i + 1}: ${printReceivedArgs(args)}`);\n              }\n\n              return lines;\n            }, [])\n            .join('\\n')\n      : () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of calls: >= ${printExpected(1)}\\n` +\n          `Received number of calls:    ${printReceived(count)}`;\n\n    return {message, pass};\n  };\n\nconst createToReturnMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: unknown,\n  ): SyncExpectationResult {\n    const expectedArgument = '';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    // Count return values that correspond only to calls that returned\n    const count = received.mock.results.reduce(\n      (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n      0,\n    );\n\n    const pass = count > 0;\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of returns: ${printExpected(0)}\\n` +\n          `Received number of returns: ${printReceived(count)}\\n\\n` +\n          received.mock.results\n            .reduce((lines: Array<string>, result: any, i: number) => {\n              if (result.type === 'return' && lines.length < PRINT_LIMIT) {\n                lines.push(`${i + 1}: ${printReceived(result.value)}`);\n              }\n\n              return lines;\n            }, [])\n            .join('\\n') +\n          (received.mock.calls.length !== count\n            ? `\\n\\nReceived number of calls:   ${printReceived(\n                received.mock.calls.length,\n              )}`\n            : '')\n      : () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of returns: >= ${printExpected(1)}\\n` +\n          `Received number of returns:    ${printReceived(count)}` +\n          (received.mock.calls.length !== count\n            ? `\\nReceived number of calls:      ${printReceived(\n                received.mock.calls.length,\n              )}`\n            : '');\n\n    return {message, pass};\n  };\n\nconst createToBeCalledTimesMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: number,\n  ): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n    const count = receivedIsSpy\n      ? received.calls.count()\n      : received.mock.calls.length;\n\n    const pass = count === expected;\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          `\\n\\n` +\n          `Expected number of calls: not ${printExpected(expected)}`\n      : () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of calls: ${printExpected(expected)}\\n` +\n          `Received number of calls: ${printReceived(count)}`;\n\n    return {message, pass};\n  };\n\nconst createToReturnTimesMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: number,\n  ): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    // Count return values that correspond only to calls that returned\n    const count = received.mock.results.reduce(\n      (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n      0,\n    );\n\n    const pass = count === expected;\n\n    const message = pass\n      ? () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          `\\n\\n` +\n          `Expected number of returns: not ${printExpected(expected)}` +\n          (received.mock.calls.length !== count\n            ? `\\n\\nReceived number of calls:       ${printReceived(\n                received.mock.calls.length,\n              )}`\n            : '')\n      : () =>\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected number of returns: ${printExpected(expected)}\\n` +\n          `Received number of returns: ${printReceived(count)}` +\n          (received.mock.calls.length !== count\n            ? `\\nReceived number of calls:   ${printReceived(\n                received.mock.calls.length,\n              )}`\n            : '');\n\n    return {message, pass};\n  };\n\nconst createToBeCalledWithMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    ...expected: Array<unknown>\n  ): SyncExpectationResult {\n    const expectedArgument = '...expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n\n    const pass = calls.some((call: any) => isEqualCall(expected, call));\n\n    const message = pass\n      ? () => {\n          // Some examples of calls that are equal to expected value.\n          const indexedCalls: Array<IndexedCall> = [];\n          let i = 0;\n          while (i < calls.length && indexedCalls.length < PRINT_LIMIT) {\n            if (isEqualCall(expected, calls[i])) {\n              indexedCalls.push([i, calls[i]]);\n            }\n            i += 1;\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: not ${printExpectedArgs(expected)}\\n` +\n            (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n              ? ''\n              : printReceivedCallsNegative(\n                  expected,\n                  indexedCalls,\n                  calls.length === 1,\n                )) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        }\n      : () => {\n          // Some examples of calls that are not equal to expected value.\n          const indexedCalls: Array<IndexedCall> = [];\n          let i = 0;\n          while (i < calls.length && indexedCalls.length < PRINT_LIMIT) {\n            indexedCalls.push([i, calls[i]]);\n            i += 1;\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n            ) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst createToReturnWithMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: unknown,\n  ): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n    const {calls, results} = received.mock;\n\n    const pass = results.some((result: any) => isEqualReturn(expected, result));\n\n    const message = pass\n      ? () => {\n          // Some examples of results that are equal to expected value.\n          const indexedResults: Array<IndexedResult> = [];\n          let i = 0;\n          while (i < results.length && indexedResults.length < PRINT_LIMIT) {\n            if (isEqualReturn(expected, results[i])) {\n              indexedResults.push([i, results[i]]);\n            }\n            i += 1;\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: not ${printExpected(expected)}\\n` +\n            (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n              ? ''\n              : printReceivedResults(\n                  'Received:     ',\n                  expected,\n                  indexedResults,\n                  results.length === 1,\n                )) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        }\n      : () => {\n          // Some examples of results that are not equal to expected value.\n          const indexedResults: Array<IndexedResult> = [];\n          let i = 0;\n          while (i < results.length && indexedResults.length < PRINT_LIMIT) {\n            indexedResults.push([i, results[i]]);\n            i += 1;\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: ${printExpected(expected)}\\n` +\n            printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n            ) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst createLastCalledWithMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    ...expected: Array<unknown>\n  ): SyncExpectationResult {\n    const expectedArgument = '...expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const iLast = calls.length - 1;\n\n    const pass = iLast >= 0 && isEqualCall(expected, calls[iLast]);\n\n    const message = pass\n      ? () => {\n          const indexedCalls: Array<IndexedCall> = [];\n          if (iLast > 0) {\n            // Display preceding call as context.\n            indexedCalls.push([iLast - 1, calls[iLast - 1]]);\n          }\n          indexedCalls.push([iLast, calls[iLast]]);\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: not ${printExpectedArgs(expected)}\\n` +\n            (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n              ? ''\n              : printReceivedCallsNegative(\n                  expected,\n                  indexedCalls,\n                  calls.length === 1,\n                  iLast,\n                )) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        }\n      : () => {\n          const indexedCalls: Array<IndexedCall> = [];\n          if (iLast >= 0) {\n            if (iLast > 0) {\n              let i = iLast - 1;\n              // Is there a preceding call that is equal to expected args?\n              while (i >= 0 && !isEqualCall(expected, calls[i])) {\n                i -= 1;\n              }\n              if (i < 0) {\n                i = iLast - 1; // otherwise, preceding call\n              }\n\n              indexedCalls.push([i, calls[i]]);\n            }\n\n            indexedCalls.push([iLast, calls[iLast]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n              iLast,\n            ) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst createLastReturnedMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    expected: unknown,\n  ): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    const {calls, results} = received.mock;\n    const iLast = results.length - 1;\n\n    const pass = iLast >= 0 && isEqualReturn(expected, results[iLast]);\n\n    const message = pass\n      ? () => {\n          const indexedResults: Array<IndexedResult> = [];\n          if (iLast > 0) {\n            // Display preceding result as context.\n            indexedResults.push([iLast - 1, results[iLast - 1]]);\n          }\n          indexedResults.push([iLast, results[iLast]]);\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: not ${printExpected(expected)}\\n` +\n            (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n              ? ''\n              : printReceivedResults(\n                  'Received:     ',\n                  expected,\n                  indexedResults,\n                  results.length === 1,\n                  iLast,\n                )) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        }\n      : () => {\n          const indexedResults: Array<IndexedResult> = [];\n          if (iLast >= 0) {\n            if (iLast > 0) {\n              let i = iLast - 1;\n              // Is there a preceding result that is equal to expected value?\n              while (i >= 0 && !isEqualReturn(expected, results[i])) {\n                i -= 1;\n              }\n              if (i < 0) {\n                i = iLast - 1; // otherwise, preceding result\n              }\n\n              indexedResults.push([i, results[i]]);\n            }\n\n            indexedResults.push([iLast, results[iLast]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `Expected: ${printExpected(expected)}\\n` +\n            printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n              iLast,\n            ) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst createNthCalledWithMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    nth: number,\n    ...expected: Array<unknown>\n  ): SyncExpectationResult {\n    const expectedArgument = 'n';\n    const options: MatcherHintOptions = {\n      expectedColor: (arg: string) => arg,\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: '...expected',\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    if (!Number.isSafeInteger(nth) || nth < 1) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, expectedArgument, options),\n          `${expectedArgument} must be a positive integer`,\n          printWithType(expectedArgument, nth, stringify),\n        ),\n      );\n    }\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const length = calls.length;\n    const iNth = nth - 1;\n\n    const pass = iNth < length && isEqualCall(expected, calls[iNth]);\n\n    const message = pass\n      ? () => {\n          // Display preceding and following calls,\n          // in case assertions fails because index is off by one.\n          const indexedCalls: Array<IndexedCall> = [];\n          if (iNth - 1 >= 0) {\n            indexedCalls.push([iNth - 1, calls[iNth - 1]]);\n          }\n          indexedCalls.push([iNth, calls[iNth]]);\n          if (iNth + 1 < length) {\n            indexedCalls.push([iNth + 1, calls[iNth + 1]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `n: ${nth}\\n` +\n            `Expected: not ${printExpectedArgs(expected)}\\n` +\n            (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n              ? ''\n              : printReceivedCallsNegative(\n                  expected,\n                  indexedCalls,\n                  calls.length === 1,\n                  iNth,\n                )) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        }\n      : () => {\n          // Display preceding and following calls:\n          // * nearest call that is equal to expected args\n          // * otherwise, adjacent call\n          // in case assertions fails because of index, especially off by one.\n          const indexedCalls: Array<IndexedCall> = [];\n          if (iNth < length) {\n            if (iNth - 1 >= 0) {\n              let i = iNth - 1;\n              // Is there a preceding call that is equal to expected args?\n              while (i >= 0 && !isEqualCall(expected, calls[i])) {\n                i -= 1;\n              }\n              if (i < 0) {\n                i = iNth - 1; // otherwise, adjacent call\n              }\n\n              indexedCalls.push([i, calls[i]]);\n            }\n            indexedCalls.push([iNth, calls[iNth]]);\n            if (iNth + 1 < length) {\n              let i = iNth + 1;\n              // Is there a following call that is equal to expected args?\n              while (i < length && !isEqualCall(expected, calls[i])) {\n                i += 1;\n              }\n              if (i >= length) {\n                i = iNth + 1; // otherwise, adjacent call\n              }\n\n              indexedCalls.push([i, calls[i]]);\n            }\n          } else if (length > 0) {\n            // The number of received calls is fewer than the expected number.\n            let i = length - 1;\n            // Is there a call that is equal to expected args?\n            while (i >= 0 && !isEqualCall(expected, calls[i])) {\n              i -= 1;\n            }\n            if (i < 0) {\n              i = length - 1; // otherwise, last call\n            }\n\n            indexedCalls.push([i, calls[i]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `n: ${nth}\\n` +\n            printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n              iNth,\n            ) +\n            `\\nNumber of calls: ${printReceived(calls.length)}`\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst createNthReturnedWithMatcher = (matcherName: string) =>\n  function (\n    this: MatcherState,\n    received: any,\n    nth: number,\n    expected: unknown,\n  ): SyncExpectationResult {\n    const expectedArgument = 'n';\n    const options: MatcherHintOptions = {\n      expectedColor: (arg: string) => arg,\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: 'expected',\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    if (!Number.isSafeInteger(nth) || nth < 1) {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, expectedArgument, options),\n          `${expectedArgument} must be a positive integer`,\n          printWithType(expectedArgument, nth, stringify),\n        ),\n      );\n    }\n\n    const receivedName = received.getMockName();\n    const {calls, results} = received.mock;\n    const length = results.length;\n    const iNth = nth - 1;\n\n    const pass = iNth < length && isEqualReturn(expected, results[iNth]);\n\n    const message = pass\n      ? () => {\n          // Display preceding and following results,\n          // in case assertions fails because index is off by one.\n          const indexedResults: Array<IndexedResult> = [];\n          if (iNth - 1 >= 0) {\n            indexedResults.push([iNth - 1, results[iNth - 1]]);\n          }\n          indexedResults.push([iNth, results[iNth]]);\n          if (iNth + 1 < length) {\n            indexedResults.push([iNth + 1, results[iNth + 1]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `n: ${nth}\\n` +\n            `Expected: not ${printExpected(expected)}\\n` +\n            (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n              ? ''\n              : printReceivedResults(\n                  'Received:     ',\n                  expected,\n                  indexedResults,\n                  results.length === 1,\n                  iNth,\n                )) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        }\n      : () => {\n          // Display preceding and following results:\n          // * nearest result that is equal to expected value\n          // * otherwise, adjacent result\n          // in case assertions fails because of index, especially off by one.\n          const indexedResults: Array<IndexedResult> = [];\n          if (iNth < length) {\n            if (iNth - 1 >= 0) {\n              let i = iNth - 1;\n              // Is there a preceding result that is equal to expected value?\n              while (i >= 0 && !isEqualReturn(expected, results[i])) {\n                i -= 1;\n              }\n              if (i < 0) {\n                i = iNth - 1; // otherwise, adjacent result\n              }\n\n              indexedResults.push([i, results[i]]);\n            }\n            indexedResults.push([iNth, results[iNth]]);\n            if (iNth + 1 < length) {\n              let i = iNth + 1;\n              // Is there a following result that is equal to expected value?\n              while (i < length && !isEqualReturn(expected, results[i])) {\n                i += 1;\n              }\n              if (i >= length) {\n                i = iNth + 1; // otherwise, adjacent result\n              }\n\n              indexedResults.push([i, results[i]]);\n            }\n          } else if (length > 0) {\n            // The number of received calls is fewer than the expected number.\n            let i = length - 1;\n            // Is there a result that is equal to expected value?\n            while (i >= 0 && !isEqualReturn(expected, results[i])) {\n              i -= 1;\n            }\n            if (i < 0) {\n              i = length - 1; // otherwise, last result\n            }\n\n            indexedResults.push([i, results[i]]);\n          }\n\n          return (\n            matcherHint(matcherName, receivedName, expectedArgument, options) +\n            '\\n\\n' +\n            `n: ${nth}\\n` +\n            `Expected: ${printExpected(expected)}\\n` +\n            printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n              iNth,\n            ) +\n            printNumberOfReturns(countReturns(results), calls.length)\n          );\n        };\n\n    return {message, pass};\n  };\n\nconst spyMatchers: MatchersObject = {\n  lastCalledWith: createLastCalledWithMatcher('lastCalledWith'),\n  lastReturnedWith: createLastReturnedMatcher('lastReturnedWith'),\n  nthCalledWith: createNthCalledWithMatcher('nthCalledWith'),\n  nthReturnedWith: createNthReturnedWithMatcher('nthReturnedWith'),\n  toBeCalled: createToBeCalledMatcher('toBeCalled'),\n  toBeCalledTimes: createToBeCalledTimesMatcher('toBeCalledTimes'),\n  toBeCalledWith: createToBeCalledWithMatcher('toBeCalledWith'),\n  toHaveBeenCalled: createToBeCalledMatcher('toHaveBeenCalled'),\n  toHaveBeenCalledTimes: createToBeCalledTimesMatcher('toHaveBeenCalledTimes'),\n  toHaveBeenCalledWith: createToBeCalledWithMatcher('toHaveBeenCalledWith'),\n  toHaveBeenLastCalledWith: createLastCalledWithMatcher(\n    'toHaveBeenLastCalledWith',\n  ),\n  toHaveBeenNthCalledWith: createNthCalledWithMatcher(\n    'toHaveBeenNthCalledWith',\n  ),\n  toHaveLastReturnedWith: createLastReturnedMatcher('toHaveLastReturnedWith'),\n  toHaveNthReturnedWith: createNthReturnedWithMatcher('toHaveNthReturnedWith'),\n  toHaveReturned: createToReturnMatcher('toHaveReturned'),\n  toHaveReturnedTimes: createToReturnTimesMatcher('toHaveReturnedTimes'),\n  toHaveReturnedWith: createToReturnWithMatcher('toHaveReturnedWith'),\n  toReturn: createToReturnMatcher('toReturn'),\n  toReturnTimes: createToReturnTimesMatcher('toReturnTimes'),\n  toReturnWith: createToReturnWithMatcher('toReturnWith'),\n};\n\nconst isMock = (received: any) =>\n  received != null && received._isMockFunction === true;\n\nconst isSpy = (received: any) =>\n  received != null &&\n  received.calls != null &&\n  typeof received.calls.all === 'function' &&\n  typeof received.calls.count === 'function';\n\nconst ensureMockOrSpy = (\n  received: any,\n  matcherName: string,\n  expectedArgument: string,\n  options: MatcherHintOptions,\n) => {\n  if (!isMock(received) && !isSpy(received)) {\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherName, undefined, expectedArgument, options),\n        `${RECEIVED_COLOR('received')} value must be a mock or spy function`,\n        printWithType('Received', received, printReceived),\n      ),\n    );\n  }\n};\n\nconst ensureMock = (\n  received: any,\n  matcherName: string,\n  expectedArgument: string,\n  options: MatcherHintOptions,\n) => {\n  if (!isMock(received)) {\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherName, undefined, expectedArgument, options),\n        `${RECEIVED_COLOR('received')} value must be a mock function`,\n        printWithType('Received', received, printReceived),\n      ),\n    );\n  }\n};\n\nexport default spyMatchers;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {formatStackTrace, separateMessageFromStack} from 'jest-message-util';\nimport {\n  EXPECTED_COLOR,\n  MatcherHintOptions,\n  RECEIVED_COLOR,\n  matcherErrorMessage,\n  matcherHint,\n  printDiffOrStringify,\n  printExpected,\n  printReceived,\n  printWithType,\n} from 'jest-matcher-utils';\nimport {\n  printExpectedConstructorName,\n  printExpectedConstructorNameNot,\n  printReceivedConstructorName,\n  printReceivedConstructorNameNot,\n  printReceivedStringContainExpectedResult,\n  printReceivedStringContainExpectedSubstring,\n} from './print';\nimport type {\n  ExpectationResult,\n  MatcherState,\n  MatchersObject,\n  RawMatcherFn,\n  SyncExpectationResult,\n} from './types';\nimport {isError} from './utils';\n\nconst DID_NOT_THROW = 'Received function did not throw';\n\ntype Thrown =\n  | {\n      hasMessage: true;\n      isError: true;\n      message: string;\n      value: Error;\n    }\n  | {\n      hasMessage: boolean;\n      isError: false;\n      message: string;\n      value: any;\n    };\n\nconst getThrown = (e: any): Thrown => {\n  const hasMessage =\n    e !== null && e !== undefined && typeof e.message === 'string';\n\n  if (hasMessage && typeof e.name === 'string' && typeof e.stack === 'string') {\n    return {\n      hasMessage,\n      isError: true,\n      message: e.message,\n      value: e,\n    };\n  }\n\n  return {\n    hasMessage,\n    isError: false,\n    message: hasMessage ? e.message : String(e),\n    value: e,\n  };\n};\n\nexport const createMatcher = (\n  matcherName: string,\n  fromPromise?: boolean,\n): RawMatcherFn =>\n  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n  function (\n    this: MatcherState,\n    received: Function,\n    expected: any,\n  ): ExpectationResult {\n    const options = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    let thrown = null;\n\n    if (fromPromise && isError(received)) {\n      thrown = getThrown(received);\n    } else {\n      if (typeof received !== 'function') {\n        if (!fromPromise) {\n          const placeholder = expected === undefined ? '' : 'expected';\n          throw new Error(\n            matcherErrorMessage(\n              matcherHint(matcherName, undefined, placeholder, options),\n              `${RECEIVED_COLOR('received')} value must be a function`,\n              printWithType('Received', received, printReceived),\n            ),\n          );\n        }\n      } else {\n        try {\n          received();\n        } catch (e) {\n          thrown = getThrown(e);\n        }\n      }\n    }\n\n    if (expected === undefined) {\n      return toThrow(matcherName, options, thrown);\n    } else if (typeof expected === 'function') {\n      return toThrowExpectedClass(matcherName, options, thrown, expected);\n    } else if (typeof expected === 'string') {\n      return toThrowExpectedString(matcherName, options, thrown, expected);\n    } else if (expected !== null && typeof expected.test === 'function') {\n      return toThrowExpectedRegExp(matcherName, options, thrown, expected);\n    } else if (\n      expected !== null &&\n      typeof expected.asymmetricMatch === 'function'\n    ) {\n      return toThrowExpectedAsymmetric(matcherName, options, thrown, expected);\n    } else if (expected !== null && typeof expected === 'object') {\n      return toThrowExpectedObject(matcherName, options, thrown, expected);\n    } else {\n      throw new Error(\n        matcherErrorMessage(\n          matcherHint(matcherName, undefined, undefined, options),\n          `${EXPECTED_COLOR(\n            'expected',\n          )} value must be a string or regular expression or class or error`,\n          printWithType('Expected', expected, printExpected),\n        ),\n      );\n    }\n  };\n\nconst matchers: MatchersObject = {\n  toThrow: createMatcher('toThrow'),\n  toThrowError: createMatcher('toThrowError'),\n};\n\nconst toThrowExpectedRegExp = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: RegExp,\n): SyncExpectationResult => {\n  const pass = thrown !== null && expected.test(thrown.message);\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected pattern: not ', expected) +\n        (thrown !== null && thrown.hasMessage\n          ? formatReceived(\n              'Received message:     ',\n              thrown,\n              'message',\n              expected,\n            ) + formatStack(thrown)\n          : formatReceived('Received value:       ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected pattern: ', expected) +\n        (thrown === null\n          ? '\\n' + DID_NOT_THROW\n          : thrown.hasMessage\n          ? formatReceived('Received message: ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Received value:   ', thrown, 'value'));\n\n  return {message, pass};\n};\n\ntype AsymmetricMatcher = {\n  asymmetricMatch: (received: unknown) => boolean;\n};\n\nconst toThrowExpectedAsymmetric = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: AsymmetricMatcher,\n): SyncExpectationResult => {\n  const pass = thrown !== null && expected.asymmetricMatch(thrown.value);\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected asymmetric matcher: not ', expected) +\n        '\\n' +\n        (thrown !== null && thrown.hasMessage\n          ? formatReceived('Received name:    ', thrown, 'name') +\n            formatReceived('Received message: ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Thrown value: ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected asymmetric matcher: ', expected) +\n        '\\n' +\n        (thrown === null\n          ? DID_NOT_THROW\n          : thrown.hasMessage\n          ? formatReceived('Received name:    ', thrown, 'name') +\n            formatReceived('Received message: ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Thrown value: ', thrown, 'value'));\n\n  return {message, pass};\n};\n\nconst toThrowExpectedObject = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: Error,\n): SyncExpectationResult => {\n  const pass = thrown !== null && thrown.message === expected.message;\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected message: not ', expected.message) +\n        (thrown !== null && thrown.hasMessage\n          ? formatStack(thrown)\n          : formatReceived('Received value:       ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        (thrown === null\n          ? formatExpected('Expected message: ', expected.message) +\n            '\\n' +\n            DID_NOT_THROW\n          : thrown.hasMessage\n          ? printDiffOrStringify(\n              expected.message,\n              thrown.message,\n              'Expected message',\n              'Received message',\n              true,\n            ) +\n            '\\n' +\n            formatStack(thrown)\n          : formatExpected('Expected message: ', expected.message) +\n            formatReceived('Received value:   ', thrown, 'value'));\n\n  return {message, pass};\n};\n\nconst toThrowExpectedClass = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: Function,\n): SyncExpectationResult => {\n  const pass = thrown !== null && thrown.value instanceof expected;\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printExpectedConstructorNameNot('Expected constructor', expected) +\n        (thrown !== null &&\n        thrown.value != null &&\n        typeof thrown.value.constructor === 'function' &&\n        thrown.value.constructor !== expected\n          ? printReceivedConstructorNameNot(\n              'Received constructor',\n              thrown.value.constructor,\n              expected,\n            )\n          : '') +\n        '\\n' +\n        (thrown !== null && thrown.hasMessage\n          ? formatReceived('Received message: ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Received value: ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printExpectedConstructorName('Expected constructor', expected) +\n        (thrown === null\n          ? '\\n' + DID_NOT_THROW\n          : (thrown.value != null &&\n            typeof thrown.value.constructor === 'function'\n              ? printReceivedConstructorName(\n                  'Received constructor',\n                  thrown.value.constructor,\n                )\n              : '') +\n            '\\n' +\n            (thrown.hasMessage\n              ? formatReceived('Received message: ', thrown, 'message') +\n                formatStack(thrown)\n              : formatReceived('Received value: ', thrown, 'value')));\n\n  return {message, pass};\n};\n\nconst toThrowExpectedString = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: string,\n): SyncExpectationResult => {\n  const pass = thrown !== null && thrown.message.includes(expected);\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected substring: not ', expected) +\n        (thrown !== null && thrown.hasMessage\n          ? formatReceived(\n              'Received message:       ',\n              thrown,\n              'message',\n              expected,\n            ) + formatStack(thrown)\n          : formatReceived('Received value:         ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        formatExpected('Expected substring: ', expected) +\n        (thrown === null\n          ? '\\n' + DID_NOT_THROW\n          : thrown.hasMessage\n          ? formatReceived('Received message:   ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Received value:     ', thrown, 'value'));\n\n  return {message, pass};\n};\n\nconst toThrow = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n): SyncExpectationResult => {\n  const pass = thrown !== null;\n\n  const message = pass\n    ? () =>\n        matcherHint(matcherName, undefined, '', options) +\n        '\\n\\n' +\n        (thrown !== null && thrown.hasMessage\n          ? formatReceived('Error name:    ', thrown, 'name') +\n            formatReceived('Error message: ', thrown, 'message') +\n            formatStack(thrown)\n          : formatReceived('Thrown value: ', thrown, 'value'))\n    : () =>\n        matcherHint(matcherName, undefined, '', options) +\n        '\\n\\n' +\n        DID_NOT_THROW;\n\n  return {message, pass};\n};\n\nconst formatExpected = (label: string, expected: unknown) =>\n  label + printExpected(expected) + '\\n';\n\nconst formatReceived = (\n  label: string,\n  thrown: Thrown | null,\n  key: string,\n  expected?: string | RegExp,\n) => {\n  if (thrown === null) {\n    return '';\n  }\n\n  if (key === 'message') {\n    const message = thrown.message;\n\n    if (typeof expected === 'string') {\n      const index = message.indexOf(expected);\n      if (index !== -1) {\n        return (\n          label +\n          printReceivedStringContainExpectedSubstring(\n            message,\n            index,\n            expected.length,\n          ) +\n          '\\n'\n        );\n      }\n    } else if (expected instanceof RegExp) {\n      return (\n        label +\n        printReceivedStringContainExpectedResult(\n          message,\n          typeof expected.exec === 'function' ? expected.exec(message) : null,\n        ) +\n        '\\n'\n      );\n    }\n\n    return label + printReceived(message) + '\\n';\n  }\n\n  if (key === 'name') {\n    return thrown.isError\n      ? label + printReceived(thrown.value.name) + '\\n'\n      : '';\n  }\n\n  if (key === 'value') {\n    return thrown.isError ? '' : label + printReceived(thrown.value) + '\\n';\n  }\n\n  return '';\n};\n\nconst formatStack = (thrown: Thrown | null) =>\n  thrown === null || !thrown.isError\n    ? ''\n    : formatStackTrace(\n        separateMessageFromStack(thrown.value.stack!).stack,\n        {\n          rootDir: process.cwd(),\n          testMatch: [],\n        },\n        {\n          noStackTrace: false,\n        },\n      );\n\nexport default matchers;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {isPrimitive} from 'jest-get-type';\nimport {\n  equals,\n  isA,\n  isImmutableUnorderedKeyed,\n  isImmutableUnorderedSet,\n} from './jasmineUtils';\n\ntype GetPath = {\n  hasEndProp?: boolean;\n  lastTraversedObject: unknown;\n  traversedPath: Array<string>;\n  value?: unknown;\n};\n\n// Return whether object instance inherits getter from its class.\nconst hasGetterFromConstructor = (object: object, key: string) => {\n  const constructor = object.constructor;\n  if (constructor === Object) {\n    // A literal object has Object as constructor.\n    // Therefore, it cannot inherit application-specific getters.\n    // Furthermore, Object has __proto__ getter which is not relevant.\n    // Array, Boolean, Number, String constructors don’t have any getters.\n    return false;\n  }\n  if (typeof constructor !== 'function') {\n    // Object.create(null) constructs object with no constructor nor prototype.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Custom_and_Null_objects\n    return false;\n  }\n\n  const descriptor = Object.getOwnPropertyDescriptor(\n    constructor.prototype,\n    key,\n  );\n  return descriptor !== undefined && typeof descriptor.get === 'function';\n};\n\nexport const hasOwnProperty = (object: object, key: string): boolean =>\n  Object.prototype.hasOwnProperty.call(object, key) ||\n  hasGetterFromConstructor(object, key);\n\nexport const getPath = (\n  object: Record<string, any>,\n  propertyPath: string | Array<string>,\n): GetPath => {\n  if (!Array.isArray(propertyPath)) {\n    propertyPath = (propertyPath as string).split('.');\n  }\n\n  if (propertyPath.length) {\n    const lastProp = propertyPath.length === 1;\n    const prop = propertyPath[0];\n    const newObject = object[prop];\n\n    if (!lastProp && (newObject === null || newObject === undefined)) {\n      // This is not the last prop in the chain. If we keep recursing it will\n      // hit a `can't access property X of undefined | null`. At this point we\n      // know that the chain has broken and we can return right away.\n      return {\n        hasEndProp: false,\n        lastTraversedObject: object,\n        traversedPath: [],\n      };\n    }\n\n    const result = getPath(newObject, propertyPath.slice(1));\n\n    if (result.lastTraversedObject === null) {\n      result.lastTraversedObject = object;\n    }\n\n    result.traversedPath.unshift(prop);\n\n    if (lastProp) {\n      // Does object have the property with an undefined value?\n      // Although primitive values support bracket notation (above)\n      // they would throw TypeError for in operator (below).\n      result.hasEndProp =\n        newObject !== undefined || (!isPrimitive(object) && prop in object);\n\n      if (!result.hasEndProp) {\n        result.traversedPath.shift();\n      }\n    }\n\n    return result;\n  }\n\n  return {\n    lastTraversedObject: null,\n    traversedPath: [],\n    value: object,\n  };\n};\n\n// Strip properties from object that are not present in the subset. Useful for\n// printing the diff for toMatchObject() without adding unrelated noise.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getObjectSubset = (\n  object: any,\n  subset: any,\n  seenReferences: WeakMap<object, boolean> = new WeakMap(),\n): any => {\n  if (Array.isArray(object)) {\n    if (Array.isArray(subset) && subset.length === object.length) {\n      // The map method returns correct subclass of subset.\n      return subset.map((sub: any, i: number) =>\n        getObjectSubset(object[i], sub),\n      );\n    }\n  } else if (object instanceof Date) {\n    return object;\n  } else if (isObject(object) && isObject(subset)) {\n    if (equals(object, subset, [iterableEquality, subsetEquality])) {\n      // Avoid unnecessary copy which might return Object instead of subclass.\n      return subset;\n    }\n\n    const trimmed: any = {};\n    seenReferences.set(object, trimmed);\n\n    Object.keys(object)\n      .filter(key => hasOwnProperty(subset, key))\n      .forEach(key => {\n        trimmed[key] = seenReferences.has(object[key])\n          ? seenReferences.get(object[key])\n          : getObjectSubset(object[key], subset[key], seenReferences);\n      });\n\n    if (Object.keys(trimmed).length > 0) {\n      return trimmed;\n    }\n  }\n  return object;\n};\n\nconst IteratorSymbol = Symbol.iterator;\n\nconst hasIterator = (object: any) =>\n  !!(object != null && object[IteratorSymbol]);\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const iterableEquality = (\n  a: any,\n  b: any,\n  aStack: Array<any> = [],\n  bStack: Array<any> = [],\n): boolean | undefined => {\n  if (\n    typeof a !== 'object' ||\n    typeof b !== 'object' ||\n    Array.isArray(a) ||\n    Array.isArray(b) ||\n    !hasIterator(a) ||\n    !hasIterator(b)\n  ) {\n    return undefined;\n  }\n  if (a.constructor !== b.constructor) {\n    return false;\n  }\n  let length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    // circular references at same depth are equal\n    // circular reference is not equal to non-circular one\n    if (aStack[length] === a) {\n      return bStack[length] === b;\n    }\n  }\n  aStack.push(a);\n  bStack.push(b);\n\n  const iterableEqualityWithStack = (a: any, b: any) =>\n    iterableEquality(a, b, [...aStack], [...bStack]);\n\n  if (a.size !== undefined) {\n    if (a.size !== b.size) {\n      return false;\n    } else if (isA('Set', a) || isImmutableUnorderedSet(a)) {\n      let allFound = true;\n      for (const aValue of a) {\n        if (!b.has(aValue)) {\n          let has = false;\n          for (const bValue of b) {\n            const isEqual = equals(aValue, bValue, [iterableEqualityWithStack]);\n            if (isEqual === true) {\n              has = true;\n            }\n          }\n\n          if (has === false) {\n            allFound = false;\n            break;\n          }\n        }\n      }\n      // Remove the first value from the stack of traversed values.\n      aStack.pop();\n      bStack.pop();\n      return allFound;\n    } else if (isA('Map', a) || isImmutableUnorderedKeyed(a)) {\n      let allFound = true;\n      for (const aEntry of a) {\n        if (\n          !b.has(aEntry[0]) ||\n          !equals(aEntry[1], b.get(aEntry[0]), [iterableEqualityWithStack])\n        ) {\n          let has = false;\n          for (const bEntry of b) {\n            const matchedKey = equals(aEntry[0], bEntry[0], [\n              iterableEqualityWithStack,\n            ]);\n\n            let matchedValue = false;\n            if (matchedKey === true) {\n              matchedValue = equals(aEntry[1], bEntry[1], [\n                iterableEqualityWithStack,\n              ]);\n            }\n            if (matchedValue === true) {\n              has = true;\n            }\n          }\n\n          if (has === false) {\n            allFound = false;\n            break;\n          }\n        }\n      }\n      // Remove the first value from the stack of traversed values.\n      aStack.pop();\n      bStack.pop();\n      return allFound;\n    }\n  }\n\n  const bIterator = b[IteratorSymbol]();\n\n  for (const aValue of a) {\n    const nextB = bIterator.next();\n    if (\n      nextB.done ||\n      !equals(aValue, nextB.value, [iterableEqualityWithStack])\n    ) {\n      return false;\n    }\n  }\n  if (!bIterator.next().done) {\n    return false;\n  }\n\n  // Remove the first value from the stack of traversed values.\n  aStack.pop();\n  bStack.pop();\n  return true;\n};\n\nconst isObject = (a: any) => a !== null && typeof a === 'object';\n\nconst isObjectWithKeys = (a: any) =>\n  isObject(a) &&\n  !(a instanceof Error) &&\n  !(a instanceof Array) &&\n  !(a instanceof Date);\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const subsetEquality = (\n  object: any,\n  subset: any,\n): boolean | undefined => {\n  // subsetEquality needs to keep track of the references\n  // it has already visited to avoid infinite loops in case\n  // there are circular references in the subset passed to it.\n  const subsetEqualityWithContext = (\n    seenReferences: WeakMap<object, boolean> = new WeakMap(),\n  ) => (object: any, subset: any): boolean | undefined => {\n    if (!isObjectWithKeys(subset)) {\n      return undefined;\n    }\n\n    return Object.keys(subset).every(key => {\n      if (isObjectWithKeys(subset[key])) {\n        if (seenReferences.has(subset[key])) {\n          return equals(object[key], subset[key], [iterableEquality]);\n        }\n        seenReferences.set(subset[key], true);\n      }\n      const result =\n        object != null &&\n        hasOwnProperty(object, key) &&\n        equals(object[key], subset[key], [\n          iterableEquality,\n          subsetEqualityWithContext(seenReferences),\n        ]);\n      // The main goal of using seenReference is to avoid circular node on tree.\n      // It will only happen within a parent and its child, not a node and nodes next to it (same level)\n      // We should keep the reference for a parent and its child only\n      // Thus we should delete the reference immediately so that it doesn't interfere\n      // other nodes within the same level on tree.\n      seenReferences.delete(subset[key]);\n      return result;\n    });\n  };\n\n  return subsetEqualityWithContext()(object, subset);\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const typeEquality = (a: any, b: any): boolean | undefined => {\n  if (a == null || b == null || a.constructor === b.constructor) {\n    return undefined;\n  }\n\n  return false;\n};\n\nexport const sparseArrayEquality = (\n  a: unknown,\n  b: unknown,\n): boolean | undefined => {\n  if (!Array.isArray(a) || !Array.isArray(b)) {\n    return undefined;\n  }\n\n  // A sparse array [, , 1] will have keys [\"2\"] whereas [undefined, undefined, 1] will have keys [\"0\", \"1\", \"2\"]\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  return (\n    equals(a, b, [iterableEquality, typeEquality], true) && equals(aKeys, bKeys)\n  );\n};\n\nexport const partition = <T>(\n  items: Array<T>,\n  predicate: (arg: T) => boolean,\n): [Array<T>, Array<T>] => {\n  const result: [Array<T>, Array<T>] = [[], []];\n\n  items.forEach(item => result[predicate(item) ? 0 : 1].push(item));\n\n  return result;\n};\n\n// Copied from https://github.com/graingert/angular.js/blob/a43574052e9775cbc1d7dd8a086752c979b0f020/src/Angular.js#L685-L693\nexport const isError = (value: unknown): value is Error => {\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Error]':\n      return true;\n    case '[object Exception]':\n      return true;\n    case '[object DOMException]':\n      return true;\n    default:\n      return value instanceof Error;\n  }\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function emptyObject(obj: any): boolean {\n  return obj && typeof obj === 'object' ? !Object.keys(obj).length : false;\n}\n\nconst MULTILINE_REGEXP = /[\\r\\n]/;\n\nexport const isOneline = (expected: unknown, received: unknown): boolean =>\n  typeof expected === 'string' &&\n  typeof received === 'string' &&\n  (!MULTILINE_REGEXP.test(expected) || !MULTILINE_REGEXP.test(received));\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.cleanupSemantic = exports.DIFF_INSERT = exports.DIFF_DELETE = exports.DIFF_EQUAL = exports.Diff = void 0;\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * CHANGES by pedrottimark to diff_match_patch_uncompressed.ts file:\n *\n * 1. Delete anything not needed to use diff_cleanupSemantic method\n * 2. Convert from prototype properties to var declarations\n * 3. Convert Diff to class from constructor and prototype\n * 4. Add type annotations for arguments and return values\n * 5. Add exports\n */\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nexports.DIFF_DELETE = DIFF_DELETE;\nvar DIFF_INSERT = 1;\nexports.DIFF_INSERT = DIFF_INSERT;\nvar DIFF_EQUAL = 0;\n/**\n * Class representing one diff tuple.\n * Attempts to look like a two-element array (which is what this used to be).\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\n\nexports.DIFF_EQUAL = DIFF_EQUAL;\n\nclass Diff {\n  constructor(op, text) {\n    _defineProperty(this, 0, void 0);\n\n    _defineProperty(this, 1, void 0);\n\n    this[0] = op;\n    this[1] = text;\n  }\n}\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\n\nexports.Diff = Diff;\n\nvar diff_commonPrefix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  } // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(pointerstart, pointermid) ==\n      text2.substring(pointerstart, pointermid)\n    ) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  return pointermid;\n};\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\n\nvar diff_commonSuffix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (\n    !text1 ||\n    !text2 ||\n    text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)\n  ) {\n    return 0;\n  } // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n      text2.substring(text2.length - pointermid, text2.length - pointerend)\n    ) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n\n  return pointermid;\n};\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\n\nvar diff_commonOverlap_ = function (text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length; // Eliminate the null case.\n\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  } // Truncate the longer string.\n\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n\n  var text_length = Math.min(text1_length, text2_length); // Quick check for the worst case.\n\n  if (text1 == text2) {\n    return text_length;\n  } // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n\n  var best = 0;\n  var length = 1;\n\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n\n    if (found == -1) {\n      return best;\n    }\n\n    length += found;\n\n    if (\n      found == 0 ||\n      text1.substring(text_length - length) == text2.substring(0, length)\n    ) {\n      best = length;\n      length++;\n    }\n  }\n};\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\n\nvar diff_cleanupSemantic = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n\n  /** @type {?string} */\n\n  var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n\n  var pointer = 0; // Index of current position.\n  // Number of characters that changed prior to the equality.\n\n  var length_insertions1 = 0;\n  var length_deletions1 = 0; // Number of characters that changed after the equality.\n\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastEquality = diffs[pointer][1];\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      } // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n\n      if (\n        lastEquality &&\n        lastEquality.length <=\n          Math.max(length_insertions1, length_deletions1) &&\n        lastEquality.length <= Math.max(length_insertions2, length_deletions2)\n      ) {\n        // Duplicate record.\n        diffs.splice(\n          equalities[equalitiesLength - 1],\n          0,\n          new Diff(DIFF_DELETE, lastEquality)\n        ); // Change second copy to insert.\n\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; // Throw away the equality we just deleted.\n\n        equalitiesLength--; // Throw away the previous equality (it needs to be reevaluated).\n\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0; // Reset the counters.\n\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastEquality = null;\n        changes = true;\n      }\n    }\n\n    pointer++;\n  } // Normalize the diff.\n\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n\n  diff_cleanupSemanticLossless(diffs); // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n\n  pointer = 1;\n\n  while (pointer < diffs.length) {\n    if (\n      diffs[pointer - 1][0] == DIFF_DELETE &&\n      diffs[pointer][0] == DIFF_INSERT\n    ) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = diff_commonOverlap_(insertion, deletion);\n\n      if (overlap_length1 >= overlap_length2) {\n        if (\n          overlap_length1 >= deletion.length / 2 ||\n          overlap_length1 >= insertion.length / 2\n        ) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(\n            pointer,\n            0,\n            new Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1))\n          );\n          diffs[pointer - 1][1] = deletion.substring(\n            0,\n            deletion.length - overlap_length1\n          );\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (\n          overlap_length2 >= deletion.length / 2 ||\n          overlap_length2 >= insertion.length / 2\n        ) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(\n            pointer,\n            0,\n            new Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2))\n          );\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(\n            0,\n            insertion.length - overlap_length2\n          );\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n\n      pointer++;\n    }\n\n    pointer++;\n  }\n};\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\n\nexports.cleanupSemantic = diff_cleanupSemantic;\n\nvar diff_cleanupSemanticLossless = function (diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    } // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(blanklineStartRegex_);\n\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n\n    return 0;\n  }\n\n  var pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] == DIFF_EQUAL &&\n      diffs[pointer + 1][0] == DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1]; // First, shift the edit as far left as possible.\n\n      var commonOffset = diff_commonSuffix(equality1, edit);\n\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      } // Second, step character by character right, looking for the best fit.\n\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore =\n        diff_cleanupSemanticScore_(equality1, edit) +\n        diff_cleanupSemanticScore_(edit, equality2);\n\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score =\n          diff_cleanupSemanticScore_(equality1, edit) +\n          diff_cleanupSemanticScore_(edit, equality2); // The >= encourages trailing rather than leading whitespace on edits.\n\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n\n        diffs[pointer][1] = bestEdit;\n\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n\n    pointer++;\n  }\n}; // Define some regex patterns for matching boundaries.\n\nvar nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\nvar whitespaceRegex_ = /\\s/;\nvar linebreakRegex_ = /[\\r\\n]/;\nvar blanklineEndRegex_ = /\\n\\r?\\n$/;\nvar blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\n\nvar diff_cleanupMerge = function (diffs) {\n  // Add a dummy entry at the end.\n  diffs.push(new Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n\n            if (commonlength !== 0) {\n              if (\n                pointer - count_delete - count_insert > 0 &&\n                diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL\n              ) {\n                diffs[\n                  pointer - count_delete - count_insert - 1\n                ][1] += text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(\n                  0,\n                  0,\n                  new Diff(DIFF_EQUAL, text_insert.substring(0, commonlength))\n                );\n                pointer++;\n              }\n\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            } // Factor out any common suffixies.\n\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n\n            if (commonlength !== 0) {\n              diffs[pointer][1] =\n                text_insert.substring(text_insert.length - commonlength) +\n                diffs[pointer][1];\n              text_insert = text_insert.substring(\n                0,\n                text_insert.length - commonlength\n              );\n              text_delete = text_delete.substring(\n                0,\n                text_delete.length - commonlength\n              );\n            }\n          } // Delete the offending records and add the merged ones.\n\n          pointer -= count_delete + count_insert;\n          diffs.splice(pointer, count_delete + count_insert);\n\n          if (text_delete.length) {\n            diffs.splice(pointer, 0, new Diff(DIFF_DELETE, text_delete));\n            pointer++;\n          }\n\n          if (text_insert.length) {\n            diffs.splice(pointer, 0, new Diff(DIFF_INSERT, text_insert));\n            pointer++;\n          }\n\n          pointer++;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop(); // Remove the dummy entry at the end.\n  } // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n\n  var changes = false;\n  pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] == DIFF_EQUAL &&\n      diffs[pointer + 1][0] == DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      if (\n        diffs[pointer][1].substring(\n          diffs[pointer][1].length - diffs[pointer - 1][1].length\n        ) == diffs[pointer - 1][1]\n      ) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] =\n          diffs[pointer - 1][1] +\n          diffs[pointer][1].substring(\n            0,\n            diffs[pointer][1].length - diffs[pointer - 1][1].length\n          );\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (\n        diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n        diffs[pointer + 1][1]\n      ) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n          diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n          diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n\n    pointer++;\n  } // If shifts were made, the diff needs reordering and another shift sweep.\n\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.SIMILAR_MESSAGE = exports.NO_DIFF_MESSAGE = void 0;\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst NO_DIFF_MESSAGE = _chalk.default.dim(\n  'Compared values have no visual difference.'\n);\n\nexports.NO_DIFF_MESSAGE = NO_DIFF_MESSAGE;\n\nconst SIMILAR_MESSAGE = _chalk.default.dim(\n  'Compared values serialize to the same structure.\\n' +\n    'Printing internal object structure without calling `toJSON` instead.'\n);\n\nexports.SIMILAR_MESSAGE = SIMILAR_MESSAGE;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.diffLinesRaw = exports.diffLinesUnified2 = exports.diffLinesUnified = void 0;\n\nvar _diffSequences = _interopRequireDefault(require('diff-sequences'));\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nvar _normalizeDiffOptions = require('./normalizeDiffOptions');\n\nvar _printDiffs = require('./printDiffs');\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst isEmptyString = lines => lines.length === 1 && lines[0].length === 0; // Compare two arrays of strings line-by-line. Format as comparison lines.\n\nconst diffLinesUnified = (aLines, bLines, options) =>\n  (0, _printDiffs.printDiffLines)(\n    diffLinesRaw(\n      isEmptyString(aLines) ? [] : aLines,\n      isEmptyString(bLines) ? [] : bLines\n    ),\n    (0, _normalizeDiffOptions.normalizeDiffOptions)(options)\n  ); // Given two pairs of arrays of strings:\n// Compare the pair of comparison arrays line-by-line.\n// Format the corresponding lines in the pair of displayable arrays.\n\nexports.diffLinesUnified = diffLinesUnified;\n\nconst diffLinesUnified2 = (\n  aLinesDisplay,\n  bLinesDisplay,\n  aLinesCompare,\n  bLinesCompare,\n  options\n) => {\n  if (isEmptyString(aLinesDisplay) && isEmptyString(aLinesCompare)) {\n    aLinesDisplay = [];\n    aLinesCompare = [];\n  }\n\n  if (isEmptyString(bLinesDisplay) && isEmptyString(bLinesCompare)) {\n    bLinesDisplay = [];\n    bLinesCompare = [];\n  }\n\n  if (\n    aLinesDisplay.length !== aLinesCompare.length ||\n    bLinesDisplay.length !== bLinesCompare.length\n  ) {\n    // Fall back to diff of display lines.\n    return diffLinesUnified(aLinesDisplay, bLinesDisplay, options);\n  }\n\n  const diffs = diffLinesRaw(aLinesCompare, bLinesCompare); // Replace comparison lines with displayable lines.\n\n  let aIndex = 0;\n  let bIndex = 0;\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        diff[1] = aLinesDisplay[aIndex];\n        aIndex += 1;\n        break;\n\n      case _cleanupSemantic.DIFF_INSERT:\n        diff[1] = bLinesDisplay[bIndex];\n        bIndex += 1;\n        break;\n\n      default:\n        diff[1] = bLinesDisplay[bIndex];\n        aIndex += 1;\n        bIndex += 1;\n    }\n  });\n  return (0, _printDiffs.printDiffLines)(\n    diffs,\n    (0, _normalizeDiffOptions.normalizeDiffOptions)(options)\n  );\n}; // Compare two arrays of strings line-by-line.\n\nexports.diffLinesUnified2 = diffLinesUnified2;\n\nconst diffLinesRaw = (aLines, bLines) => {\n  const aLength = aLines.length;\n  const bLength = bLines.length;\n\n  const isCommon = (aIndex, bIndex) => aLines[aIndex] === bLines[bIndex];\n\n  const diffs = [];\n  let aIndex = 0;\n  let bIndex = 0;\n\n  const foundSubsequence = (nCommon, aCommon, bCommon) => {\n    for (; aIndex !== aCommon; aIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, aLines[aIndex])\n      );\n    }\n\n    for (; bIndex !== bCommon; bIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, bLines[bIndex])\n      );\n    }\n\n    for (; nCommon !== 0; nCommon -= 1, aIndex += 1, bIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_EQUAL, bLines[bIndex])\n      );\n    }\n  };\n\n  (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence); // After the last common subsequence, push remaining change items.\n\n  for (; aIndex !== aLength; aIndex += 1) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, aLines[aIndex])\n    );\n  }\n\n  for (; bIndex !== bLength; bIndex += 1) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, bLines[bIndex])\n    );\n  }\n\n  return diffs;\n};\n\nexports.diffLinesRaw = diffLinesRaw;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\n\nvar _diffSequences = _interopRequireDefault(require('diff-sequences'));\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst diffStrings = (a, b) => {\n  const isCommon = (aIndex, bIndex) => a[aIndex] === b[bIndex];\n\n  let aIndex = 0;\n  let bIndex = 0;\n  const diffs = [];\n\n  const foundSubsequence = (nCommon, aCommon, bCommon) => {\n    if (aIndex !== aCommon) {\n      diffs.push(\n        new _cleanupSemantic.Diff(\n          _cleanupSemantic.DIFF_DELETE,\n          a.slice(aIndex, aCommon)\n        )\n      );\n    }\n\n    if (bIndex !== bCommon) {\n      diffs.push(\n        new _cleanupSemantic.Diff(\n          _cleanupSemantic.DIFF_INSERT,\n          b.slice(bIndex, bCommon)\n        )\n      );\n    }\n\n    aIndex = aCommon + nCommon; // number of characters compared in a\n\n    bIndex = bCommon + nCommon; // number of characters compared in b\n\n    diffs.push(\n      new _cleanupSemantic.Diff(\n        _cleanupSemantic.DIFF_EQUAL,\n        b.slice(bCommon, bIndex)\n      )\n    );\n  };\n\n  (0, _diffSequences.default)(a.length, b.length, isCommon, foundSubsequence); // After the last common subsequence, push remaining change items.\n\n  if (aIndex !== a.length) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, a.slice(aIndex))\n    );\n  }\n\n  if (bIndex !== b.length) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, b.slice(bIndex))\n    );\n  }\n\n  return diffs;\n};\n\nvar _default = diffStrings;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Given change op and array of diffs, return concatenated string:\n// * include common strings\n// * include change strings which have argument op with changeColor\n// * exclude change strings which have opposite op\nconst concatenateRelevantDiffs = (op, diffs, changeColor) =>\n  diffs.reduce(\n    (reduced, diff) =>\n      reduced +\n      (diff[0] === _cleanupSemantic.DIFF_EQUAL\n        ? diff[1]\n        : diff[0] === op && diff[1].length !== 0 // empty if change is newline\n        ? changeColor(diff[1])\n        : ''),\n    ''\n  ); // Encapsulate change lines until either a common newline or the end.\n\nclass ChangeBuffer {\n  // incomplete line\n  // complete lines\n  constructor(op, changeColor) {\n    _defineProperty(this, 'op', void 0);\n\n    _defineProperty(this, 'line', void 0);\n\n    _defineProperty(this, 'lines', void 0);\n\n    _defineProperty(this, 'changeColor', void 0);\n\n    this.op = op;\n    this.line = [];\n    this.lines = [];\n    this.changeColor = changeColor;\n  }\n\n  pushSubstring(substring) {\n    this.pushDiff(new _cleanupSemantic.Diff(this.op, substring));\n  }\n\n  pushLine() {\n    // Assume call only if line has at least one diff,\n    // therefore an empty line must have a diff which has an empty string.\n    // If line has multiple diffs, then assume it has a common diff,\n    // therefore change diffs have change color;\n    // otherwise then it has line color only.\n    this.lines.push(\n      this.line.length !== 1\n        ? new _cleanupSemantic.Diff(\n            this.op,\n            concatenateRelevantDiffs(this.op, this.line, this.changeColor)\n          )\n        : this.line[0][0] === this.op\n        ? this.line[0] // can use instance\n        : new _cleanupSemantic.Diff(this.op, this.line[0][1]) // was common diff\n    );\n    this.line.length = 0;\n  }\n\n  isLineEmpty() {\n    return this.line.length === 0;\n  } // Minor input to buffer.\n\n  pushDiff(diff) {\n    this.line.push(diff);\n  } // Main input to buffer.\n\n  align(diff) {\n    const string = diff[1];\n\n    if (string.includes('\\n')) {\n      const substrings = string.split('\\n');\n      const iLast = substrings.length - 1;\n      substrings.forEach((substring, i) => {\n        if (i < iLast) {\n          // The first substring completes the current change line.\n          // A middle substring is a change line.\n          this.pushSubstring(substring);\n          this.pushLine();\n        } else if (substring.length !== 0) {\n          // The last substring starts a change line, if it is not empty.\n          // Important: This non-empty condition also automatically omits\n          // the newline appended to the end of expected and received strings.\n          this.pushSubstring(substring);\n        }\n      });\n    } else {\n      // Append non-multiline string to current change line.\n      this.pushDiff(diff);\n    }\n  } // Output from buffer.\n\n  moveLinesTo(lines) {\n    if (!this.isLineEmpty()) {\n      this.pushLine();\n    }\n\n    lines.push(...this.lines);\n    this.lines.length = 0;\n  }\n} // Encapsulate common and change lines.\n\nclass CommonBuffer {\n  constructor(deleteBuffer, insertBuffer) {\n    _defineProperty(this, 'deleteBuffer', void 0);\n\n    _defineProperty(this, 'insertBuffer', void 0);\n\n    _defineProperty(this, 'lines', void 0);\n\n    this.deleteBuffer = deleteBuffer;\n    this.insertBuffer = insertBuffer;\n    this.lines = [];\n  }\n\n  pushDiffCommonLine(diff) {\n    this.lines.push(diff);\n  }\n\n  pushDiffChangeLines(diff) {\n    const isDiffEmpty = diff[1].length === 0; // An empty diff string is redundant, unless a change line is empty.\n\n    if (!isDiffEmpty || this.deleteBuffer.isLineEmpty()) {\n      this.deleteBuffer.pushDiff(diff);\n    }\n\n    if (!isDiffEmpty || this.insertBuffer.isLineEmpty()) {\n      this.insertBuffer.pushDiff(diff);\n    }\n  }\n\n  flushChangeLines() {\n    this.deleteBuffer.moveLinesTo(this.lines);\n    this.insertBuffer.moveLinesTo(this.lines);\n  } // Input to buffer.\n\n  align(diff) {\n    const op = diff[0];\n    const string = diff[1];\n\n    if (string.includes('\\n')) {\n      const substrings = string.split('\\n');\n      const iLast = substrings.length - 1;\n      substrings.forEach((substring, i) => {\n        if (i === 0) {\n          const subdiff = new _cleanupSemantic.Diff(op, substring);\n\n          if (\n            this.deleteBuffer.isLineEmpty() &&\n            this.insertBuffer.isLineEmpty()\n          ) {\n            // If both current change lines are empty,\n            // then the first substring is a common line.\n            this.flushChangeLines();\n            this.pushDiffCommonLine(subdiff);\n          } else {\n            // If either current change line is non-empty,\n            // then the first substring completes the change lines.\n            this.pushDiffChangeLines(subdiff);\n            this.flushChangeLines();\n          }\n        } else if (i < iLast) {\n          // A middle substring is a common line.\n          this.pushDiffCommonLine(new _cleanupSemantic.Diff(op, substring));\n        } else if (substring.length !== 0) {\n          // The last substring starts a change line, if it is not empty.\n          // Important: This non-empty condition also automatically omits\n          // the newline appended to the end of expected and received strings.\n          this.pushDiffChangeLines(new _cleanupSemantic.Diff(op, substring));\n        }\n      });\n    } else {\n      // Append non-multiline string to current change lines.\n      // Important: It cannot be at the end following empty change lines,\n      // because newline appended to the end of expected and received strings.\n      this.pushDiffChangeLines(diff);\n    }\n  } // Output from buffer.\n\n  getLines() {\n    this.flushChangeLines();\n    return this.lines;\n  }\n} // Given diffs from expected and received strings,\n// return new array of diffs split or joined into lines.\n//\n// To correctly align a change line at the end, the algorithm:\n// * assumes that a newline was appended to the strings\n// * omits the last newline from the output array\n//\n// Assume the function is not called:\n// * if either expected or received is empty string\n// * if neither expected nor received is multiline string\n\nconst getAlignedDiffs = (diffs, changeColor) => {\n  const deleteBuffer = new ChangeBuffer(\n    _cleanupSemantic.DIFF_DELETE,\n    changeColor\n  );\n  const insertBuffer = new ChangeBuffer(\n    _cleanupSemantic.DIFF_INSERT,\n    changeColor\n  );\n  const commonBuffer = new CommonBuffer(deleteBuffer, insertBuffer);\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        deleteBuffer.align(diff);\n        break;\n\n      case _cleanupSemantic.DIFF_INSERT:\n        insertBuffer.align(diff);\n        break;\n\n      default:\n        commonBuffer.align(diff);\n    }\n  });\n  return commonBuffer.getLines();\n};\n\nvar _default = getAlignedDiffs;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nObject.defineProperty(exports, 'DIFF_DELETE', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_DELETE;\n  }\n});\nObject.defineProperty(exports, 'DIFF_EQUAL', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_EQUAL;\n  }\n});\nObject.defineProperty(exports, 'DIFF_INSERT', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_INSERT;\n  }\n});\nObject.defineProperty(exports, 'Diff', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.Diff;\n  }\n});\nObject.defineProperty(exports, 'diffLinesRaw', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesRaw;\n  }\n});\nObject.defineProperty(exports, 'diffLinesUnified', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesUnified;\n  }\n});\nObject.defineProperty(exports, 'diffLinesUnified2', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesUnified2;\n  }\n});\nObject.defineProperty(exports, 'diffStringsRaw', {\n  enumerable: true,\n  get: function () {\n    return _printDiffs.diffStringsRaw;\n  }\n});\nObject.defineProperty(exports, 'diffStringsUnified', {\n  enumerable: true,\n  get: function () {\n    return _printDiffs.diffStringsUnified;\n  }\n});\nexports.default = void 0;\n\nvar _prettyFormat = _interopRequireDefault(require('pretty-format'));\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _jestGetType = _interopRequireDefault(require('jest-get-type'));\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nvar _diffLines = require('./diffLines');\n\nvar _printDiffs = require('./printDiffs');\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nconst {\n  AsymmetricMatcher,\n  DOMCollection,\n  DOMElement,\n  Immutable,\n  ReactElement,\n  ReactTestComponent\n} = _prettyFormat.default.plugins;\nconst PLUGINS = [\n  ReactTestComponent,\n  ReactElement,\n  DOMElement,\n  DOMCollection,\n  Immutable,\n  AsymmetricMatcher\n];\nconst FORMAT_OPTIONS = {\n  plugins: PLUGINS\n};\nconst FORMAT_OPTIONS_0 = {...FORMAT_OPTIONS, indent: 0};\nconst FALLBACK_FORMAT_OPTIONS = {\n  callToJSON: false,\n  maxDepth: 10,\n  plugins: PLUGINS\n};\nconst FALLBACK_FORMAT_OPTIONS_0 = {...FALLBACK_FORMAT_OPTIONS, indent: 0}; // Generate a string that will highlight the difference between two values\n// with green and red. (similar to how github does code diffing)\n\nfunction diff(a, b, options) {\n  if (Object.is(a, b)) {\n    return _constants.NO_DIFF_MESSAGE;\n  }\n\n  const aType = (0, _jestGetType.default)(a);\n  let expectedType = aType;\n  let omitDifference = false;\n\n  if (aType === 'object' && typeof a.asymmetricMatch === 'function') {\n    if (a.$$typeof !== Symbol.for('jest.asymmetricMatcher')) {\n      // Do not know expected type of user-defined asymmetric matcher.\n      return null;\n    }\n\n    if (typeof a.getExpectedType !== 'function') {\n      // For example, expect.anything() matches either null or undefined\n      return null;\n    }\n\n    expectedType = a.getExpectedType(); // Primitive types boolean and number omit difference below.\n    // For example, omit difference for expect.stringMatching(regexp)\n\n    omitDifference = expectedType === 'string';\n  }\n\n  if (expectedType !== (0, _jestGetType.default)(b)) {\n    return (\n      '  Comparing two different types of values.' +\n      ` Expected ${_chalk.default.green(expectedType)} but ` +\n      `received ${_chalk.default.red((0, _jestGetType.default)(b))}.`\n    );\n  }\n\n  if (omitDifference) {\n    return null;\n  }\n\n  switch (aType) {\n    case 'string':\n      return (0, _diffLines.diffLinesUnified)(\n        a.split('\\n'),\n        b.split('\\n'),\n        options\n      );\n\n    case 'boolean':\n    case 'number':\n      return comparePrimitive(a, b, options);\n\n    case 'map':\n      return compareObjects(sortMap(a), sortMap(b), options);\n\n    case 'set':\n      return compareObjects(sortSet(a), sortSet(b), options);\n\n    default:\n      return compareObjects(a, b, options);\n  }\n}\n\nfunction comparePrimitive(a, b, options) {\n  const aFormat = (0, _prettyFormat.default)(a, FORMAT_OPTIONS);\n  const bFormat = (0, _prettyFormat.default)(b, FORMAT_OPTIONS);\n  return aFormat === bFormat\n    ? _constants.NO_DIFF_MESSAGE\n    : (0, _diffLines.diffLinesUnified)(\n        aFormat.split('\\n'),\n        bFormat.split('\\n'),\n        options\n      );\n}\n\nfunction sortMap(map) {\n  return new Map(Array.from(map.entries()).sort());\n}\n\nfunction sortSet(set) {\n  return new Set(Array.from(set.values()).sort());\n}\n\nfunction compareObjects(a, b, options) {\n  let difference;\n  let hasThrown = false;\n\n  try {\n    const aCompare = (0, _prettyFormat.default)(a, FORMAT_OPTIONS_0);\n    const bCompare = (0, _prettyFormat.default)(b, FORMAT_OPTIONS_0);\n\n    if (aCompare === bCompare) {\n      difference = _constants.NO_DIFF_MESSAGE;\n    } else {\n      const aDisplay = (0, _prettyFormat.default)(a, FORMAT_OPTIONS);\n      const bDisplay = (0, _prettyFormat.default)(b, FORMAT_OPTIONS);\n      difference = (0, _diffLines.diffLinesUnified2)(\n        aDisplay.split('\\n'),\n        bDisplay.split('\\n'),\n        aCompare.split('\\n'),\n        bCompare.split('\\n'),\n        options\n      );\n    }\n  } catch (e) {\n    hasThrown = true;\n  } // If the comparison yields no results, compare again but this time\n  // without calling `toJSON`. It's also possible that toJSON might throw.\n\n  if (difference === undefined || difference === _constants.NO_DIFF_MESSAGE) {\n    const aCompare = (0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS_0);\n    const bCompare = (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS_0);\n\n    if (aCompare === bCompare) {\n      difference = _constants.NO_DIFF_MESSAGE;\n    } else {\n      const aDisplay = (0, _prettyFormat.default)(a, FALLBACK_FORMAT_OPTIONS);\n      const bDisplay = (0, _prettyFormat.default)(b, FALLBACK_FORMAT_OPTIONS);\n      difference = (0, _diffLines.diffLinesUnified2)(\n        aDisplay.split('\\n'),\n        bDisplay.split('\\n'),\n        aCompare.split('\\n'),\n        bCompare.split('\\n'),\n        options\n      );\n    }\n\n    if (difference !== _constants.NO_DIFF_MESSAGE && !hasThrown) {\n      difference = _constants.SIMILAR_MESSAGE + '\\n\\n' + difference;\n    }\n  }\n\n  return difference;\n}\n\nvar _default = diff;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.joinAlignedDiffsExpand = exports.joinAlignedDiffsNoExpand = void 0;\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nvar _printDiffs = require('./printDiffs');\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// jest --no-expand\n//\n// Given array of aligned strings with inverse highlight formatting,\n// return joined lines with diff formatting (and patch marks, if needed).\nconst joinAlignedDiffsNoExpand = (diffs, options) => {\n  const iLength = diffs.length;\n  const nContextLines = options.contextLines;\n  const nContextLines2 = nContextLines + nContextLines; // First pass: count output lines and see if it has patches.\n\n  let jLength = iLength;\n  let hasExcessAtStartOrEnd = false;\n  let nExcessesBetweenChanges = 0;\n  let i = 0;\n\n  while (i !== iLength) {\n    const iStart = i;\n\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n\n    if (iStart !== i) {\n      if (iStart === 0) {\n        // at start\n        if (i > nContextLines) {\n          jLength -= i - nContextLines; // subtract excess common lines\n\n          hasExcessAtStartOrEnd = true;\n        }\n      } else if (i === iLength) {\n        // at end\n        const n = i - iStart;\n\n        if (n > nContextLines) {\n          jLength -= n - nContextLines; // subtract excess common lines\n\n          hasExcessAtStartOrEnd = true;\n        }\n      } else {\n        // between changes\n        const n = i - iStart;\n\n        if (n > nContextLines2) {\n          jLength -= n - nContextLines2; // subtract excess common lines\n\n          nExcessesBetweenChanges += 1;\n        }\n      }\n    }\n\n    while (i !== iLength && diffs[i][0] !== _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n  }\n\n  const hasPatch = nExcessesBetweenChanges !== 0 || hasExcessAtStartOrEnd;\n\n  if (nExcessesBetweenChanges !== 0) {\n    jLength += nExcessesBetweenChanges + 1; // add patch lines\n  } else if (hasExcessAtStartOrEnd) {\n    jLength += 1; // add patch line\n  }\n\n  const jLast = jLength - 1;\n  const lines = [];\n  let jPatchMark = 0; // index of placeholder line for current patch mark\n\n  if (hasPatch) {\n    lines.push(''); // placeholder line for first patch mark\n  } // Indexes of expected or received lines in current patch:\n\n  let aStart = 0;\n  let bStart = 0;\n  let aEnd = 0;\n  let bEnd = 0;\n\n  const pushCommonLine = line => {\n    const j = lines.length;\n    lines.push(\n      (0, _printDiffs.printCommonLine)(line, j === 0 || j === jLast, options)\n    );\n    aEnd += 1;\n    bEnd += 1;\n  };\n\n  const pushDeleteLine = line => {\n    const j = lines.length;\n    lines.push(\n      (0, _printDiffs.printDeleteLine)(line, j === 0 || j === jLast, options)\n    );\n    aEnd += 1;\n  };\n\n  const pushInsertLine = line => {\n    const j = lines.length;\n    lines.push(\n      (0, _printDiffs.printInsertLine)(line, j === 0 || j === jLast, options)\n    );\n    bEnd += 1;\n  }; // Second pass: push lines with diff formatting (and patch marks, if needed).\n\n  i = 0;\n\n  while (i !== iLength) {\n    let iStart = i;\n\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n\n    if (iStart !== i) {\n      if (iStart === 0) {\n        // at beginning\n        if (i > nContextLines) {\n          iStart = i - nContextLines;\n          aStart = iStart;\n          bStart = iStart;\n          aEnd = aStart;\n          bEnd = bStart;\n        }\n\n        for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n          pushCommonLine(diffs[iCommon][1]);\n        }\n      } else if (i === iLength) {\n        // at end\n        const iEnd = i - iStart > nContextLines ? iStart + nContextLines : i;\n\n        for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n          pushCommonLine(diffs[iCommon][1]);\n        }\n      } else {\n        // between changes\n        const nCommon = i - iStart;\n\n        if (nCommon > nContextLines2) {\n          const iEnd = iStart + nContextLines;\n\n          for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n\n          lines[jPatchMark] = (0, _printDiffs.createPatchMark)(\n            aStart,\n            aEnd,\n            bStart,\n            bEnd,\n            options\n          );\n          jPatchMark = lines.length;\n          lines.push(''); // placeholder line for next patch mark\n\n          const nOmit = nCommon - nContextLines2;\n          aStart = aEnd + nOmit;\n          bStart = bEnd + nOmit;\n          aEnd = aStart;\n          bEnd = bStart;\n\n          for (let iCommon = i - nContextLines; iCommon !== i; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n        } else {\n          for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n        }\n      }\n    }\n\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_DELETE) {\n      pushDeleteLine(diffs[i][1]);\n      i += 1;\n    }\n\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_INSERT) {\n      pushInsertLine(diffs[i][1]);\n      i += 1;\n    }\n  }\n\n  if (hasPatch) {\n    lines[jPatchMark] = (0, _printDiffs.createPatchMark)(\n      aStart,\n      aEnd,\n      bStart,\n      bEnd,\n      options\n    );\n  }\n\n  return lines.join('\\n');\n}; // jest --expand\n//\n// Given array of aligned strings with inverse highlight formatting,\n// return joined lines with diff formatting.\n\nexports.joinAlignedDiffsNoExpand = joinAlignedDiffsNoExpand;\n\nconst joinAlignedDiffsExpand = (diffs, options) =>\n  diffs\n    .map((diff, i, diffs) => {\n      const line = diff[1];\n      const isFirstOrLast = i === 0 || i === diffs.length - 1;\n\n      switch (diff[0]) {\n        case _cleanupSemantic.DIFF_DELETE:\n          return (0, _printDiffs.printDeleteLine)(line, isFirstOrLast, options);\n\n        case _cleanupSemantic.DIFF_INSERT:\n          return (0, _printDiffs.printInsertLine)(line, isFirstOrLast, options);\n\n        default:\n          return (0, _printDiffs.printCommonLine)(line, isFirstOrLast, options);\n      }\n    })\n    .join('\\n');\n\nexports.joinAlignedDiffsExpand = joinAlignedDiffsExpand;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.normalizeDiffOptions = exports.noColor = void 0;\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst noColor = string => string;\n\nexports.noColor = noColor;\nconst DIFF_CONTEXT_DEFAULT = 5;\nconst OPTIONS_DEFAULT = {\n  aAnnotation: 'Expected',\n  aColor: _chalk.default.green,\n  aIndicator: '-',\n  bAnnotation: 'Received',\n  bColor: _chalk.default.red,\n  bIndicator: '+',\n  changeColor: _chalk.default.inverse,\n  changeLineTrailingSpaceColor: noColor,\n  commonColor: _chalk.default.dim,\n  commonIndicator: ' ',\n  commonLineTrailingSpaceColor: noColor,\n  contextLines: DIFF_CONTEXT_DEFAULT,\n  emptyFirstOrLastLinePlaceholder: '',\n  expand: true,\n  includeChangeCounts: false,\n  omitAnnotationLines: false,\n  patchColor: _chalk.default.yellow\n};\n\nconst getContextLines = contextLines =>\n  typeof contextLines === 'number' &&\n  Number.isSafeInteger(contextLines) &&\n  contextLines >= 0\n    ? contextLines\n    : DIFF_CONTEXT_DEFAULT; // Pure function returns options with all properties.\n\nconst normalizeDiffOptions = (options = {}) => ({\n  ...OPTIONS_DEFAULT,\n  ...options,\n  contextLines: getContextLines(options.contextLines)\n});\n\nexports.normalizeDiffOptions = normalizeDiffOptions;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.diffStringsRaw = exports.diffStringsUnified = exports.createPatchMark = exports.printDiffLines = exports.printAnnotation = exports.countChanges = exports.hasCommonDiff = exports.printCommonLine = exports.printInsertLine = exports.printDeleteLine = void 0;\n\nvar _cleanupSemantic = require('./cleanupSemantic');\n\nvar _diffLines = require('./diffLines');\n\nvar _diffStrings = _interopRequireDefault(require('./diffStrings'));\n\nvar _getAlignedDiffs = _interopRequireDefault(require('./getAlignedDiffs'));\n\nvar _joinAlignedDiffs = require('./joinAlignedDiffs');\n\nvar _normalizeDiffOptions = require('./normalizeDiffOptions');\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst formatTrailingSpaces = (line, trailingSpaceFormatter) =>\n  line.replace(/\\s+$/, match => trailingSpaceFormatter(match));\n\nconst printDiffLine = (\n  line,\n  isFirstOrLast,\n  color,\n  indicator,\n  trailingSpaceFormatter,\n  emptyFirstOrLastLinePlaceholder\n) =>\n  line.length !== 0\n    ? color(\n        indicator + ' ' + formatTrailingSpaces(line, trailingSpaceFormatter)\n      )\n    : indicator !== ' '\n    ? color(indicator)\n    : isFirstOrLast && emptyFirstOrLastLinePlaceholder.length !== 0\n    ? color(indicator + ' ' + emptyFirstOrLastLinePlaceholder)\n    : '';\n\nconst printDeleteLine = (\n  line,\n  isFirstOrLast,\n  {\n    aColor,\n    aIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    aColor,\n    aIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\n\nexports.printDeleteLine = printDeleteLine;\n\nconst printInsertLine = (\n  line,\n  isFirstOrLast,\n  {\n    bColor,\n    bIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    bColor,\n    bIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\n\nexports.printInsertLine = printInsertLine;\n\nconst printCommonLine = (\n  line,\n  isFirstOrLast,\n  {\n    commonColor,\n    commonIndicator,\n    commonLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    commonColor,\n    commonIndicator,\n    commonLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\n\nexports.printCommonLine = printCommonLine;\n\nconst hasCommonDiff = (diffs, isMultiline) => {\n  if (isMultiline) {\n    // Important: Ignore common newline that was appended to multiline strings!\n    const iLast = diffs.length - 1;\n    return diffs.some(\n      (diff, i) =>\n        diff[0] === _cleanupSemantic.DIFF_EQUAL &&\n        (i !== iLast || diff[1] !== '\\n')\n    );\n  }\n\n  return diffs.some(diff => diff[0] === _cleanupSemantic.DIFF_EQUAL);\n};\n\nexports.hasCommonDiff = hasCommonDiff;\n\nconst countChanges = diffs => {\n  let a = 0;\n  let b = 0;\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        a += 1;\n        break;\n\n      case _cleanupSemantic.DIFF_INSERT:\n        b += 1;\n        break;\n    }\n  });\n  return {\n    a,\n    b\n  };\n};\n\nexports.countChanges = countChanges;\n\nconst printAnnotation = (\n  {\n    aAnnotation,\n    aColor,\n    aIndicator,\n    bAnnotation,\n    bColor,\n    bIndicator,\n    includeChangeCounts,\n    omitAnnotationLines\n  },\n  changeCounts\n) => {\n  if (omitAnnotationLines) {\n    return '';\n  }\n\n  let aRest = '';\n  let bRest = '';\n\n  if (includeChangeCounts) {\n    const aCount = String(changeCounts.a);\n    const bCount = String(changeCounts.b); // Padding right aligns the ends of the annotations.\n\n    const baAnnotationLengthDiff = bAnnotation.length - aAnnotation.length;\n    const aAnnotationPadding = ' '.repeat(Math.max(0, baAnnotationLengthDiff));\n    const bAnnotationPadding = ' '.repeat(Math.max(0, -baAnnotationLengthDiff)); // Padding left aligns the ends of the counts.\n\n    const baCountLengthDiff = bCount.length - aCount.length;\n    const aCountPadding = ' '.repeat(Math.max(0, baCountLengthDiff));\n    const bCountPadding = ' '.repeat(Math.max(0, -baCountLengthDiff));\n    aRest =\n      aAnnotationPadding + '  ' + aIndicator + ' ' + aCountPadding + aCount;\n    bRest =\n      bAnnotationPadding + '  ' + bIndicator + ' ' + bCountPadding + bCount;\n  }\n\n  return (\n    aColor(aIndicator + ' ' + aAnnotation + aRest) +\n    '\\n' +\n    bColor(bIndicator + ' ' + bAnnotation + bRest) +\n    '\\n\\n'\n  );\n};\n\nexports.printAnnotation = printAnnotation;\n\nconst printDiffLines = (diffs, options) =>\n  printAnnotation(options, countChanges(diffs)) +\n  (options.expand\n    ? (0, _joinAlignedDiffs.joinAlignedDiffsExpand)(diffs, options)\n    : (0, _joinAlignedDiffs.joinAlignedDiffsNoExpand)(diffs, options)); // In GNU diff format, indexes are one-based instead of zero-based.\n\nexports.printDiffLines = printDiffLines;\n\nconst createPatchMark = (aStart, aEnd, bStart, bEnd, {patchColor}) =>\n  patchColor(\n    `@@ -${aStart + 1},${aEnd - aStart} +${bStart + 1},${bEnd - bStart} @@`\n  ); // Compare two strings character-by-character.\n// Format as comparison lines in which changed substrings have inverse colors.\n\nexports.createPatchMark = createPatchMark;\n\nconst diffStringsUnified = (a, b, options) => {\n  if (a !== b && a.length !== 0 && b.length !== 0) {\n    const isMultiline = a.includes('\\n') || b.includes('\\n'); // getAlignedDiffs assumes that a newline was appended to the strings.\n\n    const diffs = diffStringsRaw(\n      isMultiline ? a + '\\n' : a,\n      isMultiline ? b + '\\n' : b,\n      true // cleanupSemantic\n    );\n\n    if (hasCommonDiff(diffs, isMultiline)) {\n      const optionsNormalized = (0, _normalizeDiffOptions.normalizeDiffOptions)(\n        options\n      );\n      const lines = (0, _getAlignedDiffs.default)(\n        diffs,\n        optionsNormalized.changeColor\n      );\n      return printDiffLines(lines, optionsNormalized);\n    }\n  } // Fall back to line-by-line diff.\n\n  return (0, _diffLines.diffLinesUnified)(\n    a.split('\\n'),\n    b.split('\\n'),\n    options\n  );\n}; // Compare two strings character-by-character.\n// Optionally clean up small common substrings, also known as chaff.\n\nexports.diffStringsUnified = diffStringsUnified;\n\nconst diffStringsRaw = (a, b, cleanup) => {\n  const diffs = (0, _diffStrings.default)(a, b);\n\n  if (cleanup) {\n    (0, _cleanupSemantic.cleanupSemantic)(diffs); // impure function\n  }\n\n  return diffs;\n};\n\nexports.diffStringsRaw = diffStringsRaw;\n","'use strict';\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// get the type of a value with handling the edge cases like `typeof []`\n// and `typeof null`\nfunction getType(value) {\n  if (value === undefined) {\n    return 'undefined';\n  } else if (value === null) {\n    return 'null';\n  } else if (Array.isArray(value)) {\n    return 'array';\n  } else if (typeof value === 'boolean') {\n    return 'boolean';\n  } else if (typeof value === 'function') {\n    return 'function';\n  } else if (typeof value === 'number') {\n    return 'number';\n  } else if (typeof value === 'string') {\n    return 'string';\n  } else if (typeof value === 'bigint') {\n    return 'bigint';\n  } else if (typeof value === 'object') {\n    if (value != null) {\n      if (value.constructor === RegExp) {\n        return 'regexp';\n      } else if (value.constructor === Map) {\n        return 'map';\n      } else if (value.constructor === Set) {\n        return 'set';\n      } else if (value.constructor === Date) {\n        return 'date';\n      }\n    }\n\n    return 'object';\n  } else if (typeof value === 'symbol') {\n    return 'symbol';\n  }\n\n  throw new Error(`value of unknown type: ${value}`);\n}\n\ngetType.isPrimitive = value => Object(value) !== value;\n\nmodule.exports = getType;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\n\nvar _jestGetType = _interopRequireDefault(require('jest-get-type'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\nconst supportTypes = ['map', 'array', 'object'];\n\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nclass Replaceable {\n  constructor(object) {\n    _defineProperty(this, 'object', void 0);\n\n    _defineProperty(this, 'type', void 0);\n\n    this.object = object;\n    this.type = (0, _jestGetType.default)(object);\n\n    if (!supportTypes.includes(this.type)) {\n      throw new Error(`Type ${this.type} is not support in Replaceable!`);\n    }\n  }\n\n  static isReplaceable(obj1, obj2) {\n    const obj1Type = (0, _jestGetType.default)(obj1);\n    const obj2Type = (0, _jestGetType.default)(obj2);\n    return obj1Type === obj2Type && supportTypes.includes(obj1Type);\n  }\n\n  forEach(cb) {\n    if (this.type === 'object') {\n      Object.entries(this.object).forEach(([key, value]) => {\n        cb(value, key, this.object);\n      });\n      Object.getOwnPropertySymbols(this.object).forEach(key => {\n        cb(this.object[key], key, this.object);\n      });\n    } else {\n      this.object.forEach(cb);\n    }\n  }\n\n  get(key) {\n    if (this.type === 'map') {\n      return this.object.get(key);\n    }\n\n    return this.object[key];\n  }\n\n  set(key, value) {\n    if (this.type === 'map') {\n      this.object.set(key, value);\n    } else {\n      this.object[key] = value;\n    }\n  }\n}\n/* eslint-enable */\n\nexports.default = Replaceable;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = deepCyclicCopyReplaceable;\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst builtInObject = [\n  Array,\n  Buffer,\n  Date,\n  Float32Array,\n  Float64Array,\n  Int16Array,\n  Int32Array,\n  Int8Array,\n  Map,\n  Set,\n  RegExp,\n  Uint16Array,\n  Uint32Array,\n  Uint8Array,\n  Uint8ClampedArray\n];\n\nconst isBuiltInObject = object => builtInObject.includes(object.constructor);\n\nconst isMap = value => value.constructor === Map;\n\nfunction deepCyclicCopyReplaceable(value, cycles = new WeakMap()) {\n  if (typeof value !== 'object' || value === null) {\n    return value;\n  } else if (cycles.has(value)) {\n    return cycles.get(value);\n  } else if (Array.isArray(value)) {\n    return deepCyclicCopyArray(value, cycles);\n  } else if (isMap(value)) {\n    return deepCyclicCopyMap(value, cycles);\n  } else if (isBuiltInObject(value)) {\n    return value;\n  } else {\n    return deepCyclicCopyObject(value, cycles);\n  }\n}\n\nfunction deepCyclicCopyObject(object, cycles) {\n  const newObject = Object.create(Object.getPrototypeOf(object));\n  const descriptors = Object.getOwnPropertyDescriptors(object);\n  cycles.set(object, newObject);\n  Object.keys(descriptors).forEach(key => {\n    if (descriptors[key].enumerable) {\n      descriptors[key] = {\n        configurable: true,\n        enumerable: true,\n        value: deepCyclicCopyReplaceable(\n          // this accesses the value or getter, depending. We just care about the value anyways, and this allows us to not mess with accessors\n          // it has the side effect of invoking the getter here though, rather than copying it over\n          object[key],\n          cycles\n        ),\n        writable: true\n      };\n    } else {\n      delete descriptors[key];\n    }\n  });\n  return Object.defineProperties(newObject, descriptors);\n}\n\nfunction deepCyclicCopyArray(array, cycles) {\n  const newArray = new (Object.getPrototypeOf(array).constructor)(array.length);\n  const length = array.length;\n  cycles.set(array, newArray);\n\n  for (let i = 0; i < length; i++) {\n    newArray[i] = deepCyclicCopyReplaceable(array[i], cycles);\n  }\n\n  return newArray;\n}\n\nfunction deepCyclicCopyMap(map, cycles) {\n  const newMap = new Map();\n  cycles.set(map, newMap);\n  map.forEach((value, key) => {\n    newMap.set(key, deepCyclicCopyReplaceable(value, cycles));\n  });\n  return newMap;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.matcherHint = exports.matcherErrorMessage = exports.getLabelPrinter = exports.pluralize = exports.diff = exports.printDiffOrStringify = exports.ensureExpectedIsNonNegativeInteger = exports.ensureNumbers = exports.ensureExpectedIsNumber = exports.ensureActualIsNumber = exports.ensureNoExpected = exports.printWithType = exports.printExpected = exports.printReceived = exports.highlightTrailingWhitespace = exports.stringify = exports.SUGGEST_TO_CONTAIN_EQUAL = exports.DIM_COLOR = exports.BOLD_WEIGHT = exports.INVERTED_COLOR = exports.RECEIVED_COLOR = exports.EXPECTED_COLOR = void 0;\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _jestDiff = _interopRequireWildcard(require('jest-diff'));\n\nvar _jestGetType = _interopRequireDefault(require('jest-get-type'));\n\nvar _prettyFormat = _interopRequireDefault(require('pretty-format'));\n\nvar _Replaceable = _interopRequireDefault(require('./Replaceable'));\n\nvar _deepCyclicCopyReplaceable = _interopRequireDefault(\n  require('./deepCyclicCopyReplaceable')\n);\n\nfunction _getRequireWildcardCache() {\n  if (typeof WeakMap !== 'function') return null;\n  var cache = new WeakMap();\n  _getRequireWildcardCache = function () {\n    return cache;\n  };\n  return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache();\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst {\n  AsymmetricMatcher,\n  DOMCollection,\n  DOMElement,\n  Immutable,\n  ReactElement,\n  ReactTestComponent\n} = _prettyFormat.default.plugins;\nconst PLUGINS = [\n  ReactTestComponent,\n  ReactElement,\n  DOMElement,\n  DOMCollection,\n  Immutable,\n  AsymmetricMatcher\n];\nconst EXPECTED_COLOR = _chalk.default.green;\nexports.EXPECTED_COLOR = EXPECTED_COLOR;\nconst RECEIVED_COLOR = _chalk.default.red;\nexports.RECEIVED_COLOR = RECEIVED_COLOR;\nconst INVERTED_COLOR = _chalk.default.inverse;\nexports.INVERTED_COLOR = INVERTED_COLOR;\nconst BOLD_WEIGHT = _chalk.default.bold;\nexports.BOLD_WEIGHT = BOLD_WEIGHT;\nconst DIM_COLOR = _chalk.default.dim;\nexports.DIM_COLOR = DIM_COLOR;\nconst MULTILINE_REGEXP = /\\n/;\nconst SPACE_SYMBOL = '\\u{00B7}'; // middle dot\n\nconst NUMBERS = [\n  'zero',\n  'one',\n  'two',\n  'three',\n  'four',\n  'five',\n  'six',\n  'seven',\n  'eight',\n  'nine',\n  'ten',\n  'eleven',\n  'twelve',\n  'thirteen'\n];\n\nconst SUGGEST_TO_CONTAIN_EQUAL = _chalk.default.dim(\n  'Looks like you wanted to test for object/array equality with the stricter `toContain` matcher. You probably need to use `toContainEqual` instead.'\n);\n\nexports.SUGGEST_TO_CONTAIN_EQUAL = SUGGEST_TO_CONTAIN_EQUAL;\n\nconst stringify = (object, maxDepth = 10) => {\n  const MAX_LENGTH = 10000;\n  let result;\n\n  try {\n    result = (0, _prettyFormat.default)(object, {\n      maxDepth,\n      min: true,\n      plugins: PLUGINS\n    });\n  } catch (e) {\n    result = (0, _prettyFormat.default)(object, {\n      callToJSON: false,\n      maxDepth,\n      min: true,\n      plugins: PLUGINS\n    });\n  }\n\n  return result.length >= MAX_LENGTH && maxDepth > 1\n    ? stringify(object, Math.floor(maxDepth / 2))\n    : result;\n};\n\nexports.stringify = stringify;\n\nconst highlightTrailingWhitespace = text =>\n  text.replace(/\\s+$/gm, _chalk.default.inverse('$&')); // Instead of inverse highlight which now implies a change,\n// replace common spaces with middle dot at the end of any line.\n\nexports.highlightTrailingWhitespace = highlightTrailingWhitespace;\n\nconst replaceTrailingSpaces = text =>\n  text.replace(/\\s+$/gm, spaces => SPACE_SYMBOL.repeat(spaces.length));\n\nconst printReceived = object =>\n  RECEIVED_COLOR(replaceTrailingSpaces(stringify(object)));\n\nexports.printReceived = printReceived;\n\nconst printExpected = value =>\n  EXPECTED_COLOR(replaceTrailingSpaces(stringify(value)));\n\nexports.printExpected = printExpected;\n\nconst printWithType = (name, value, print) => {\n  const type = (0, _jestGetType.default)(value);\n  const hasType =\n    type !== 'null' && type !== 'undefined'\n      ? `${name} has type:  ${type}\\n`\n      : '';\n  const hasValue = `${name} has value: ${print(value)}`;\n  return hasType + hasValue;\n};\n\nexports.printWithType = printWithType;\n\nconst ensureNoExpected = (expected, matcherName, options) => {\n  if (typeof expected !== 'undefined') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, '', options), // Because expected is omitted in hint above,\n        // expected is black instead of green in message below.\n        'this matcher must not have an expected argument',\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n};\n/**\n * Ensures that `actual` is of type `number | bigint`\n */\n\nexports.ensureNoExpected = ensureNoExpected;\n\nconst ensureActualIsNumber = (actual, matcherName, options) => {\n  if (typeof actual !== 'number' && typeof actual !== 'bigint') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${RECEIVED_COLOR('received')} value must be a number or bigint`,\n        printWithType('Received', actual, printReceived)\n      )\n    );\n  }\n};\n/**\n * Ensures that `expected` is of type `number | bigint`\n */\n\nexports.ensureActualIsNumber = ensureActualIsNumber;\n\nconst ensureExpectedIsNumber = (expected, matcherName, options) => {\n  if (typeof expected !== 'number' && typeof expected !== 'bigint') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${EXPECTED_COLOR('expected')} value must be a number or bigint`,\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n};\n/**\n * Ensures that `actual` & `expected` are of type `number | bigint`\n */\n\nexports.ensureExpectedIsNumber = ensureExpectedIsNumber;\n\nconst ensureNumbers = (actual, expected, matcherName, options) => {\n  ensureActualIsNumber(actual, matcherName, options);\n  ensureExpectedIsNumber(expected, matcherName, options);\n};\n\nexports.ensureNumbers = ensureNumbers;\n\nconst ensureExpectedIsNonNegativeInteger = (expected, matcherName, options) => {\n  if (\n    typeof expected !== 'number' ||\n    !Number.isSafeInteger(expected) ||\n    expected < 0\n  ) {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${EXPECTED_COLOR('expected')} value must be a non-negative integer`,\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n}; // Given array of diffs, return concatenated string:\n// * include common substrings\n// * exclude change substrings which have opposite op\n// * include change substrings which have argument op\n//   with inverse highlight only if there is a common substring\n\nexports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger;\n\nconst getCommonAndChangedSubstrings = (diffs, op, hasCommonDiff) =>\n  diffs.reduce(\n    (reduced, diff) =>\n      reduced +\n      (diff[0] === _jestDiff.DIFF_EQUAL\n        ? diff[1]\n        : diff[0] !== op\n        ? ''\n        : hasCommonDiff\n        ? INVERTED_COLOR(diff[1])\n        : diff[1]),\n    ''\n  );\n\nconst isLineDiffable = (expected, received) => {\n  const expectedType = (0, _jestGetType.default)(expected);\n  const receivedType = (0, _jestGetType.default)(received);\n\n  if (expectedType !== receivedType) {\n    return false;\n  }\n\n  if (_jestGetType.default.isPrimitive(expected)) {\n    // Print generic line diff for strings only:\n    // * if neither string is empty\n    // * if either string has more than one line\n    return (\n      typeof expected === 'string' &&\n      typeof received === 'string' &&\n      expected.length !== 0 &&\n      received.length !== 0 &&\n      (MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received))\n    );\n  }\n\n  if (\n    expectedType === 'date' ||\n    expectedType === 'function' ||\n    expectedType === 'regexp'\n  ) {\n    return false;\n  }\n\n  if (expected instanceof Error && received instanceof Error) {\n    return false;\n  }\n\n  if (\n    expectedType === 'object' &&\n    typeof expected.asymmetricMatch === 'function'\n  ) {\n    return false;\n  }\n\n  if (\n    receivedType === 'object' &&\n    typeof received.asymmetricMatch === 'function'\n  ) {\n    return false;\n  }\n\n  return true;\n};\n\nconst MAX_DIFF_STRING_LENGTH = 20000;\n\nconst printDiffOrStringify = (\n  expected,\n  received,\n  expectedLabel,\n  receivedLabel,\n  expand\n) => {\n  if (\n    typeof expected === 'string' &&\n    typeof received === 'string' &&\n    expected.length !== 0 &&\n    received.length !== 0 &&\n    expected.length <= MAX_DIFF_STRING_LENGTH &&\n    received.length <= MAX_DIFF_STRING_LENGTH &&\n    expected !== received\n  ) {\n    if (expected.includes('\\n') || received.includes('\\n')) {\n      return (0, _jestDiff.diffStringsUnified)(expected, received, {\n        aAnnotation: expectedLabel,\n        bAnnotation: receivedLabel,\n        changeLineTrailingSpaceColor: _chalk.default.bgYellow,\n        commonLineTrailingSpaceColor: _chalk.default.bgYellow,\n        emptyFirstOrLastLinePlaceholder: '↵',\n        // U+21B5\n        expand,\n        includeChangeCounts: true\n      });\n    }\n\n    const diffs = (0, _jestDiff.diffStringsRaw)(expected, received, true);\n    const hasCommonDiff = diffs.some(diff => diff[0] === _jestDiff.DIFF_EQUAL);\n    const printLabel = getLabelPrinter(expectedLabel, receivedLabel);\n    const expectedLine =\n      printLabel(expectedLabel) +\n      printExpected(\n        getCommonAndChangedSubstrings(\n          diffs,\n          _jestDiff.DIFF_DELETE,\n          hasCommonDiff\n        )\n      );\n    const receivedLine =\n      printLabel(receivedLabel) +\n      printReceived(\n        getCommonAndChangedSubstrings(\n          diffs,\n          _jestDiff.DIFF_INSERT,\n          hasCommonDiff\n        )\n      );\n    return expectedLine + '\\n' + receivedLine;\n  }\n\n  if (isLineDiffable(expected, received)) {\n    const {\n      replacedExpected,\n      replacedReceived\n    } = replaceMatchedToAsymmetricMatcher(\n      (0, _deepCyclicCopyReplaceable.default)(expected),\n      (0, _deepCyclicCopyReplaceable.default)(received),\n      [],\n      []\n    );\n    const difference = (0, _jestDiff.default)(\n      replacedExpected,\n      replacedReceived,\n      {\n        aAnnotation: expectedLabel,\n        bAnnotation: receivedLabel,\n        expand,\n        includeChangeCounts: true\n      }\n    );\n\n    if (\n      typeof difference === 'string' &&\n      difference.includes('- ' + expectedLabel) &&\n      difference.includes('+ ' + receivedLabel)\n    ) {\n      return difference;\n    }\n  }\n\n  const printLabel = getLabelPrinter(expectedLabel, receivedLabel);\n  const expectedLine = printLabel(expectedLabel) + printExpected(expected);\n  const receivedLine =\n    printLabel(receivedLabel) +\n    (stringify(expected) === stringify(received)\n      ? 'serializes to the same string'\n      : printReceived(received));\n  return expectedLine + '\\n' + receivedLine;\n}; // Sometimes, e.g. when comparing two numbers, the output from jest-diff\n// does not contain more information than the `Expected:` / `Received:` already gives.\n// In those cases, we do not print a diff to make the output shorter and not redundant.\n\nexports.printDiffOrStringify = printDiffOrStringify;\n\nconst shouldPrintDiff = (actual, expected) => {\n  if (typeof actual === 'number' && typeof expected === 'number') {\n    return false;\n  }\n\n  if (typeof actual === 'bigint' && typeof expected === 'bigint') {\n    return false;\n  }\n\n  if (typeof actual === 'boolean' && typeof expected === 'boolean') {\n    return false;\n  }\n\n  return true;\n};\n\nfunction replaceMatchedToAsymmetricMatcher(\n  replacedExpected,\n  replacedReceived,\n  expectedCycles,\n  receivedCycles\n) {\n  if (!_Replaceable.default.isReplaceable(replacedExpected, replacedReceived)) {\n    return {\n      replacedExpected,\n      replacedReceived\n    };\n  }\n\n  if (\n    expectedCycles.includes(replacedExpected) ||\n    receivedCycles.includes(replacedReceived)\n  ) {\n    return {\n      replacedExpected,\n      replacedReceived\n    };\n  }\n\n  expectedCycles.push(replacedExpected);\n  receivedCycles.push(replacedReceived);\n  const expectedReplaceable = new _Replaceable.default(replacedExpected);\n  const receivedReplaceable = new _Replaceable.default(replacedReceived);\n  expectedReplaceable.forEach((expectedValue, key) => {\n    const receivedValue = receivedReplaceable.get(key);\n\n    if (isAsymmetricMatcher(expectedValue)) {\n      if (expectedValue.asymmetricMatch(receivedValue)) {\n        receivedReplaceable.set(key, expectedValue);\n      }\n    } else if (isAsymmetricMatcher(receivedValue)) {\n      if (receivedValue.asymmetricMatch(expectedValue)) {\n        expectedReplaceable.set(key, receivedValue);\n      }\n    } else if (\n      _Replaceable.default.isReplaceable(expectedValue, receivedValue)\n    ) {\n      const replaced = replaceMatchedToAsymmetricMatcher(\n        expectedValue,\n        receivedValue,\n        expectedCycles,\n        receivedCycles\n      );\n      expectedReplaceable.set(key, replaced.replacedExpected);\n      receivedReplaceable.set(key, replaced.replacedReceived);\n    }\n  });\n  return {\n    replacedExpected: expectedReplaceable.object,\n    replacedReceived: receivedReplaceable.object\n  };\n}\n\nfunction isAsymmetricMatcher(data) {\n  const type = (0, _jestGetType.default)(data);\n  return type === 'object' && typeof data.asymmetricMatch === 'function';\n}\n\nconst diff = (a, b, options) =>\n  shouldPrintDiff(a, b) ? (0, _jestDiff.default)(a, b, options) : null;\n\nexports.diff = diff;\n\nconst pluralize = (word, count) =>\n  (NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); // To display lines of labeled values as two columns with monospace alignment:\n// given the strings which will describe the values,\n// return function which given each string, returns the label:\n// string, colon, space, and enough padding spaces to align the value.\n\nexports.pluralize = pluralize;\n\nconst getLabelPrinter = (...strings) => {\n  const maxLength = strings.reduce(\n    (max, string) => (string.length > max ? string.length : max),\n    0\n  );\n  return string => `${string}: ${' '.repeat(maxLength - string.length)}`;\n};\n\nexports.getLabelPrinter = getLabelPrinter;\n\nconst matcherErrorMessage = (hint, generic, specific) =>\n  `${hint}\\n\\n${_chalk.default.bold('Matcher error')}: ${generic}${\n    typeof specific === 'string' ? '\\n\\n' + specific : ''\n  }`; // Display assertion for the report when a test fails.\n// New format: rejects/resolves, not, and matcher name have black color\n// Old format: matcher name has dim color\n\nexports.matcherErrorMessage = matcherErrorMessage;\n\nconst matcherHint = (\n  matcherName,\n  received = 'received',\n  expected = 'expected',\n  options = {}\n) => {\n  const {\n    comment = '',\n    expectedColor = EXPECTED_COLOR,\n    isDirectExpectCall = false,\n    // seems redundant with received === ''\n    isNot = false,\n    promise = '',\n    receivedColor = RECEIVED_COLOR,\n    secondArgument = '',\n    secondArgumentColor = EXPECTED_COLOR\n  } = options;\n  let hint = '';\n  let dimString = 'expect'; // concatenate adjacent dim substrings\n\n  if (!isDirectExpectCall && received !== '') {\n    hint += DIM_COLOR(dimString + '(') + receivedColor(received);\n    dimString = ')';\n  }\n\n  if (promise !== '') {\n    hint += DIM_COLOR(dimString + '.') + promise;\n    dimString = '';\n  }\n\n  if (isNot) {\n    hint += DIM_COLOR(dimString + '.') + 'not';\n    dimString = '';\n  }\n\n  if (matcherName.includes('.')) {\n    // Old format: for backward compatibility,\n    // especially without promise or isNot options\n    dimString += matcherName;\n  } else {\n    // New format: omit period from matcherName arg\n    hint += DIM_COLOR(dimString + '.') + matcherName;\n    dimString = '';\n  }\n\n  if (expected === '') {\n    dimString += '()';\n  } else {\n    hint += DIM_COLOR(dimString + '(') + expectedColor(expected);\n\n    if (secondArgument) {\n      hint += DIM_COLOR(', ') + secondArgumentColor(secondArgument);\n    }\n\n    dimString = ')';\n  }\n\n  if (comment !== '') {\n    dimString += ' // ' + comment;\n  }\n\n  if (dimString !== '') {\n    hint += DIM_COLOR(dimString);\n  }\n\n  return hint;\n};\n\nexports.matcherHint = matcherHint;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.separateMessageFromStack = exports.formatResultsErrors = exports.formatStackTrace = exports.getTopFrame = exports.getStackTraceLines = exports.formatExecError = void 0;\n\nvar path = _interopRequireWildcard(require('path'));\n\nvar fs = _interopRequireWildcard(require('graceful-fs'));\n\nvar _chalk = _interopRequireDefault(require('chalk'));\n\nvar _micromatch = _interopRequireDefault(require('micromatch'));\n\nvar _slash = _interopRequireDefault(require('slash'));\n\nvar _codeFrame = require('@babel/code-frame');\n\nvar _stackUtils = _interopRequireDefault(require('stack-utils'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\nfunction _getRequireWildcardCache() {\n  if (typeof WeakMap !== 'function') return null;\n  var cache = new WeakMap();\n  _getRequireWildcardCache = function () {\n    return cache;\n  };\n  return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache();\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nvar jestReadFile =\n  global[Symbol.for('jest-native-read-file')] || fs.readFileSync;\n// stack utils tries to create pretty stack by making paths relative.\nconst stackUtils = new _stackUtils.default({\n  cwd: 'something which does not exist'\n});\nlet nodeInternals = [];\n\ntry {\n  nodeInternals = _stackUtils.default.nodeInternals();\n} catch (e) {\n  // `StackUtils.nodeInternals()` fails in browsers. We don't need to remove\n  // node internals in the browser though, so no issue.\n}\n\nconst PATH_NODE_MODULES = `${path.sep}node_modules${path.sep}`;\nconst PATH_JEST_PACKAGES = `${path.sep}jest${path.sep}packages${path.sep}`; // filter for noisy stack trace lines\n\nconst JASMINE_IGNORE = /^\\s+at(?:(?:.jasmine\\-)|\\s+jasmine\\.buildExpectationResult)/;\nconst JEST_INTERNALS_IGNORE = /^\\s+at.*?jest(-.*?)?(\\/|\\\\)(build|node_modules|packages)(\\/|\\\\)/;\nconst ANONYMOUS_FN_IGNORE = /^\\s+at <anonymous>.*$/;\nconst ANONYMOUS_PROMISE_IGNORE = /^\\s+at (new )?Promise \\(<anonymous>\\).*$/;\nconst ANONYMOUS_GENERATOR_IGNORE = /^\\s+at Generator.next \\(<anonymous>\\).*$/;\nconst NATIVE_NEXT_IGNORE = /^\\s+at next \\(native\\).*$/;\nconst TITLE_INDENT = '  ';\nconst MESSAGE_INDENT = '    ';\nconst STACK_INDENT = '      ';\nconst ANCESTRY_SEPARATOR = ' \\u203A ';\n\nconst TITLE_BULLET = _chalk.default.bold('\\u25cf ');\n\nconst STACK_TRACE_COLOR = _chalk.default.dim;\nconst STACK_PATH_REGEXP = /\\s*at.*\\(?(\\:\\d*\\:\\d*|native)\\)?/;\nconst EXEC_ERROR_MESSAGE = 'Test suite failed to run';\nconst NOT_EMPTY_LINE_REGEXP = /^(?!$)/gm;\n\nconst indentAllLines = (lines, indent) =>\n  lines.replace(NOT_EMPTY_LINE_REGEXP, indent);\n\nconst trim = string => (string || '').trim(); // Some errors contain not only line numbers in stack traces\n// e.g. SyntaxErrors can contain snippets of code, and we don't\n// want to trim those, because they may have pointers to the column/character\n// which will get misaligned.\n\nconst trimPaths = string =>\n  string.match(STACK_PATH_REGEXP) ? trim(string) : string;\n\nconst getRenderedCallsite = (fileContent, line, column) => {\n  let renderedCallsite = (0, _codeFrame.codeFrameColumns)(\n    fileContent,\n    {\n      start: {\n        column,\n        line\n      }\n    },\n    {\n      highlightCode: true\n    }\n  );\n  renderedCallsite = indentAllLines(renderedCallsite, MESSAGE_INDENT);\n  renderedCallsite = `\\n${renderedCallsite}\\n`;\n  return renderedCallsite;\n};\n\nconst blankStringRegexp = /^\\s*$/;\n\nfunction checkForCommonEnvironmentErrors(error) {\n  if (\n    error.includes('ReferenceError: document is not defined') ||\n    error.includes('ReferenceError: window is not defined') ||\n    error.includes('ReferenceError: navigator is not defined')\n  ) {\n    return warnAboutWrongTestEnvironment(error, 'jsdom');\n  } else if (error.includes('.unref is not a function')) {\n    return warnAboutWrongTestEnvironment(error, 'node');\n  }\n\n  return error;\n}\n\nfunction warnAboutWrongTestEnvironment(error, env) {\n  return (\n    _chalk.default.bold.red(\n      `The error below may be caused by using the wrong test environment, see ${_chalk.default.dim.underline(\n        'https://jestjs.io/docs/en/configuration#testenvironment-string'\n      )}.\\nConsider using the \"${env}\" test environment.\\n\\n`\n    ) + error\n  );\n} // ExecError is an error thrown outside of the test suite (not inside an `it` or\n// `before/after each` hooks). If it's thrown, none of the tests in the file\n// are executed.\n\nconst formatExecError = (error, config, options, testPath, reuseMessage) => {\n  if (!error || typeof error === 'number') {\n    error = new Error(`Expected an Error, but \"${String(error)}\" was thrown`);\n    error.stack = '';\n  }\n\n  let message, stack;\n\n  if (typeof error === 'string' || !error) {\n    error || (error = 'EMPTY ERROR');\n    message = '';\n    stack = error;\n  } else {\n    message = error.message;\n    stack = error.stack;\n  }\n\n  const separated = separateMessageFromStack(stack || '');\n  stack = separated.stack;\n\n  if (separated.message.includes(trim(message))) {\n    // Often stack trace already contains the duplicate of the message\n    message = separated.message;\n  }\n\n  message = checkForCommonEnvironmentErrors(message);\n  message = indentAllLines(message, MESSAGE_INDENT);\n  stack =\n    stack && !options.noStackTrace\n      ? '\\n' + formatStackTrace(stack, config, options, testPath)\n      : '';\n\n  if (blankStringRegexp.test(message) && blankStringRegexp.test(stack)) {\n    // this can happen if an empty object is thrown.\n    message = MESSAGE_INDENT + 'Error: No message was provided';\n  }\n\n  let messageToUse;\n\n  if (reuseMessage) {\n    messageToUse = ` ${message.trim()}`;\n  } else {\n    messageToUse = `${EXEC_ERROR_MESSAGE}\\n\\n${message}`;\n  }\n\n  return TITLE_INDENT + TITLE_BULLET + messageToUse + stack + '\\n';\n};\n\nexports.formatExecError = formatExecError;\n\nconst removeInternalStackEntries = (lines, options) => {\n  let pathCounter = 0;\n  return lines.filter(line => {\n    if (ANONYMOUS_FN_IGNORE.test(line)) {\n      return false;\n    }\n\n    if (ANONYMOUS_PROMISE_IGNORE.test(line)) {\n      return false;\n    }\n\n    if (ANONYMOUS_GENERATOR_IGNORE.test(line)) {\n      return false;\n    }\n\n    if (NATIVE_NEXT_IGNORE.test(line)) {\n      return false;\n    }\n\n    if (nodeInternals.some(internal => internal.test(line))) {\n      return false;\n    }\n\n    if (!STACK_PATH_REGEXP.test(line)) {\n      return true;\n    }\n\n    if (JASMINE_IGNORE.test(line)) {\n      return false;\n    }\n\n    if (++pathCounter === 1) {\n      return true; // always keep the first line even if it's from Jest\n    }\n\n    if (options.noStackTrace) {\n      return false;\n    }\n\n    if (JEST_INTERNALS_IGNORE.test(line)) {\n      return false;\n    }\n\n    return true;\n  });\n};\n\nconst formatPaths = (config, relativeTestPath, line) => {\n  // Extract the file path from the trace line.\n  const match = line.match(/(^\\s*at .*?\\(?)([^()]+)(:[0-9]+:[0-9]+\\)?.*$)/);\n\n  if (!match) {\n    return line;\n  }\n\n  let filePath = (0, _slash.default)(path.relative(config.rootDir, match[2])); // highlight paths from the current test file\n\n  if (\n    (config.testMatch &&\n      config.testMatch.length &&\n      (0, _micromatch.default)([filePath], config.testMatch).length > 0) ||\n    filePath === relativeTestPath\n  ) {\n    filePath = _chalk.default.reset.cyan(filePath);\n  }\n\n  return STACK_TRACE_COLOR(match[1]) + filePath + STACK_TRACE_COLOR(match[3]);\n};\n\nconst getStackTraceLines = (\n  stack,\n  options = {\n    noCodeFrame: false,\n    noStackTrace: false\n  }\n) => removeInternalStackEntries(stack.split(/\\n/), options);\n\nexports.getStackTraceLines = getStackTraceLines;\n\nconst getTopFrame = lines => {\n  for (const line of lines) {\n    if (line.includes(PATH_NODE_MODULES) || line.includes(PATH_JEST_PACKAGES)) {\n      continue;\n    }\n\n    const parsedFrame = stackUtils.parseLine(line.trim());\n\n    if (parsedFrame && parsedFrame.file) {\n      return parsedFrame;\n    }\n  }\n\n  return null;\n};\n\nexports.getTopFrame = getTopFrame;\n\nconst formatStackTrace = (stack, config, options, testPath) => {\n  const lines = getStackTraceLines(stack, options);\n  let renderedCallsite = '';\n  const relativeTestPath = testPath\n    ? (0, _slash.default)(path.relative(config.rootDir, testPath))\n    : null;\n\n  if (!options.noStackTrace && !options.noCodeFrame) {\n    const topFrame = getTopFrame(lines);\n\n    if (topFrame) {\n      const {column, file: filename, line} = topFrame;\n\n      if (line && filename && path.isAbsolute(filename)) {\n        let fileContent;\n\n        try {\n          // TODO: check & read HasteFS instead of reading the filesystem:\n          // see: https://github.com/facebook/jest/pull/5405#discussion_r164281696\n          fileContent = jestReadFile(filename, 'utf8');\n          renderedCallsite = getRenderedCallsite(fileContent, line, column);\n        } catch (e) {\n          // the file does not exist or is inaccessible, we ignore\n        }\n      }\n    }\n  }\n\n  const stacktrace = lines\n    .filter(Boolean)\n    .map(\n      line =>\n        STACK_INDENT + formatPaths(config, relativeTestPath, trimPaths(line))\n    )\n    .join('\\n');\n  return renderedCallsite\n    ? `${renderedCallsite}\\n${stacktrace}`\n    : `\\n${stacktrace}`;\n};\n\nexports.formatStackTrace = formatStackTrace;\n\nconst formatResultsErrors = (testResults, config, options, testPath) => {\n  const failedResults = testResults.reduce((errors, result) => {\n    result.failureMessages\n      .map(checkForCommonEnvironmentErrors)\n      .forEach(content =>\n        errors.push({\n          content,\n          result\n        })\n      );\n    return errors;\n  }, []);\n\n  if (!failedResults.length) {\n    return null;\n  }\n\n  return failedResults\n    .map(({result, content}) => {\n      let {message, stack} = separateMessageFromStack(content);\n      stack = options.noStackTrace\n        ? ''\n        : STACK_TRACE_COLOR(\n            formatStackTrace(stack, config, options, testPath)\n          ) + '\\n';\n      message = indentAllLines(message, MESSAGE_INDENT);\n      const title =\n        _chalk.default.bold.red(\n          TITLE_INDENT +\n            TITLE_BULLET +\n            result.ancestorTitles.join(ANCESTRY_SEPARATOR) +\n            (result.ancestorTitles.length ? ANCESTRY_SEPARATOR : '') +\n            result.title\n        ) + '\\n';\n      return title + '\\n' + message + '\\n' + stack;\n    })\n    .join('\\n');\n};\n\nexports.formatResultsErrors = formatResultsErrors;\nconst errorRegexp = /^Error:?\\s*$/;\n\nconst removeBlankErrorLine = str =>\n  str\n    .split('\\n') // Lines saying just `Error:` are useless\n    .filter(line => !errorRegexp.test(line))\n    .join('\\n')\n    .trimRight(); // jasmine and worker farm sometimes don't give us access to the actual\n// Error object, so we have to regexp out the message from the stack string\n// to format it.\n\nconst separateMessageFromStack = content => {\n  if (!content) {\n    return {\n      message: '',\n      stack: ''\n    };\n  } // All lines up to what looks like a stack -- or if nothing looks like a stack\n  // (maybe it's a code frame instead), just the first non-empty line.\n  // If the error is a plain \"Error:\" instead of a SyntaxError or TypeError we\n  // remove the prefix from the message because it is generally not useful.\n\n  const messageMatch = content.match(\n    /^(?:Error: )?([\\s\\S]*?(?=\\n\\s*at\\s.*:\\d*:\\d*)|\\s*.*)([\\s\\S]*)$/\n  );\n\n  if (!messageMatch) {\n    // For typescript\n    throw new Error('If you hit this error, the regex above is buggy.');\n  }\n\n  const message = removeBlankErrorLine(messageMatch[1]);\n  const stack = removeBlankErrorLine(messageMatch[2]);\n  return {\n    message,\n    stack\n  };\n};\n\nexports.separateMessageFromStack = separateMessageFromStack;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nconst getKeysOfEnumerableProperties = object => {\n  const keys = Object.keys(object).sort();\n\n  if (Object.getOwnPropertySymbols) {\n    Object.getOwnPropertySymbols(object).forEach(symbol => {\n      if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n        keys.push(symbol);\n      }\n    });\n  }\n\n  return keys;\n};\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\n\nfunction printIteratorEntries(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer, // Too bad, so sad that separator for ECMAScript Map has been ' => '\n  // What a distracting diff if you change a data structure to/from\n  // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n  separator = ': '\n) {\n  let result = '';\n  let current = iterator.next();\n\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n\n    while (!current.done) {\n      const name = printer(\n        current.value[0],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      const value = printer(\n        current.value[1],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      result += indentationNext + name + separator + value;\n      current = iterator.next();\n\n      if (!current.done) {\n        result += ',' + config.spacingInner;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n\n    result += config.spacingOuter + indentation;\n  }\n\n  return result;\n}\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\n\nfunction printIteratorValues(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) {\n  let result = '';\n  let current = iterator.next();\n\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n\n    while (!current.done) {\n      result +=\n        indentationNext +\n        printer(current.value, config, indentationNext, depth, refs);\n      current = iterator.next();\n\n      if (!current.done) {\n        result += ',' + config.spacingInner;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n\n    result += config.spacingOuter + indentation;\n  }\n\n  return result;\n}\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\n\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n  let result = '';\n\n  if (list.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n\n    for (let i = 0; i < list.length; i++) {\n      result +=\n        indentationNext +\n        printer(list[i], config, indentationNext, depth, refs);\n\n      if (i < list.length - 1) {\n        result += ',' + config.spacingInner;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n\n    result += config.spacingOuter + indentation;\n  }\n\n  return result;\n}\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\n\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n  let result = '';\n  const keys = getKeysOfEnumerableProperties(val);\n\n  if (keys.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const name = printer(key, config, indentationNext, depth, refs);\n      const value = printer(val[key], config, indentationNext, depth, refs);\n      result += indentationNext + name + ': ' + value;\n\n      if (i < keys.length - 1) {\n        result += ',' + config.spacingInner;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n\n    result += config.spacingOuter + indentation;\n  }\n\n  return result;\n}\n","'use strict';\n\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\n\nvar _collections = require('./collections');\n\nvar _AsymmetricMatcher = _interopRequireDefault(\n  require('./plugins/AsymmetricMatcher')\n);\n\nvar _ConvertAnsi = _interopRequireDefault(require('./plugins/ConvertAnsi'));\n\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\n\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\n\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\n\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\n\nvar _ReactTestComponent = _interopRequireDefault(\n  require('./plugins/ReactTestComponent')\n);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\n\nconst getConstructorName = val =>\n  (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n/* global window */\n\n/** Is val is equal to global window object? Works even if it does not exist :) */\n\nconst isWindow = val => typeof window !== 'undefined' && val === window;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\n\nclass PrettyFormatPluginError extends Error {\n  constructor(message, stack) {\n    super(message);\n    this.stack = stack;\n    this.name = this.constructor.name;\n  }\n}\n\nfunction isToStringedArrayType(toStringed) {\n  return (\n    toStringed === '[object Array]' ||\n    toStringed === '[object ArrayBuffer]' ||\n    toStringed === '[object DataView]' ||\n    toStringed === '[object Float32Array]' ||\n    toStringed === '[object Float64Array]' ||\n    toStringed === '[object Int8Array]' ||\n    toStringed === '[object Int16Array]' ||\n    toStringed === '[object Int32Array]' ||\n    toStringed === '[object Uint8Array]' ||\n    toStringed === '[object Uint8ClampedArray]' ||\n    toStringed === '[object Uint16Array]' ||\n    toStringed === '[object Uint32Array]'\n  );\n}\n\nfunction printNumber(val) {\n  return Object.is(val, -0) ? '-0' : String(val);\n}\n\nfunction printBigInt(val) {\n  return String(`${val}n`);\n}\n\nfunction printFunction(val, printFunctionName) {\n  if (!printFunctionName) {\n    return '[Function]';\n  }\n\n  return '[Function ' + (val.name || 'anonymous') + ']';\n}\n\nfunction printSymbol(val) {\n  return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n  return '[' + errorToString.call(val) + ']';\n}\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\n\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n  if (val === true || val === false) {\n    return '' + val;\n  }\n\n  if (val === undefined) {\n    return 'undefined';\n  }\n\n  if (val === null) {\n    return 'null';\n  }\n\n  const typeOf = typeof val;\n\n  if (typeOf === 'number') {\n    return printNumber(val);\n  }\n\n  if (typeOf === 'bigint') {\n    return printBigInt(val);\n  }\n\n  if (typeOf === 'string') {\n    if (escapeString) {\n      return '\"' + val.replace(/\"|\\\\/g, '\\\\$&') + '\"';\n    }\n\n    return '\"' + val + '\"';\n  }\n\n  if (typeOf === 'function') {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (typeOf === 'symbol') {\n    return printSymbol(val);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object WeakMap]') {\n    return 'WeakMap {}';\n  }\n\n  if (toStringed === '[object WeakSet]') {\n    return 'WeakSet {}';\n  }\n\n  if (\n    toStringed === '[object Function]' ||\n    toStringed === '[object GeneratorFunction]'\n  ) {\n    return printFunction(val, printFunctionName);\n  }\n\n  if (toStringed === '[object Symbol]') {\n    return printSymbol(val);\n  }\n\n  if (toStringed === '[object Date]') {\n    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n  }\n\n  if (toStringed === '[object Error]') {\n    return printError(val);\n  }\n\n  if (toStringed === '[object RegExp]') {\n    if (escapeRegex) {\n      // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js\n      return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    return regExpToString.call(val);\n  }\n\n  if (val instanceof Error) {\n    return printError(val);\n  }\n\n  return null;\n}\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\n\nfunction printComplexValue(\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  hasCalledToJSON\n) {\n  if (refs.indexOf(val) !== -1) {\n    return '[Circular]';\n  }\n\n  refs = refs.slice();\n  refs.push(val);\n  const hitMaxDepth = ++depth > config.maxDepth;\n  const min = config.min;\n\n  if (\n    config.callToJSON &&\n    !hitMaxDepth &&\n    val.toJSON &&\n    typeof val.toJSON === 'function' &&\n    !hasCalledToJSON\n  ) {\n    return printer(val.toJSON(), config, indentation, depth, refs, true);\n  }\n\n  const toStringed = toString.call(val);\n\n  if (toStringed === '[object Arguments]') {\n    return hitMaxDepth\n      ? '[Arguments]'\n      : (min ? '' : 'Arguments ') +\n          '[' +\n          (0, _collections.printListItems)(\n            val,\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          ']';\n  }\n\n  if (isToStringedArrayType(toStringed)) {\n    return hitMaxDepth\n      ? '[' + val.constructor.name + ']'\n      : (min ? '' : val.constructor.name + ' ') +\n          '[' +\n          (0, _collections.printListItems)(\n            val,\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          ']';\n  }\n\n  if (toStringed === '[object Map]') {\n    return hitMaxDepth\n      ? '[Map]'\n      : 'Map {' +\n          (0, _collections.printIteratorEntries)(\n            val.entries(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer,\n            ' => '\n          ) +\n          '}';\n  }\n\n  if (toStringed === '[object Set]') {\n    return hitMaxDepth\n      ? '[Set]'\n      : 'Set {' +\n          (0, _collections.printIteratorValues)(\n            val.values(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          ) +\n          '}';\n  } // Avoid failure to serialize global window object in jsdom test environment.\n  // For example, not even relevant if window is prop of React element.\n\n  return hitMaxDepth || isWindow(val)\n    ? '[' + getConstructorName(val) + ']'\n    : (min ? '' : getConstructorName(val) + ' ') +\n        '{' +\n        (0, _collections.printObjectProperties)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        ) +\n        '}';\n}\n\nfunction isNewPlugin(plugin) {\n  return plugin.serialize != null;\n}\n\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n  let printed;\n\n  try {\n    printed = isNewPlugin(plugin)\n      ? plugin.serialize(val, config, indentation, depth, refs, printer)\n      : plugin.print(\n          val,\n          valChild => printer(valChild, config, indentation, depth, refs),\n          str => {\n            const indentationNext = indentation + config.indent;\n            return (\n              indentationNext +\n              str.replace(NEWLINE_REGEXP, '\\n' + indentationNext)\n            );\n          },\n          {\n            edgeSpacing: config.spacingOuter,\n            min: config.min,\n            spacing: config.spacingInner\n          },\n          config.colors\n        );\n  } catch (error) {\n    throw new PrettyFormatPluginError(error.message, error.stack);\n  }\n\n  if (typeof printed !== 'string') {\n    throw new Error(\n      `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n    );\n  }\n\n  return printed;\n}\n\nfunction findPlugin(plugins, val) {\n  for (let p = 0; p < plugins.length; p++) {\n    try {\n      if (plugins[p].test(val)) {\n        return plugins[p];\n      }\n    } catch (error) {\n      throw new PrettyFormatPluginError(error.message, error.stack);\n    }\n  }\n\n  return null;\n}\n\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n  const plugin = findPlugin(config.plugins, val);\n\n  if (plugin !== null) {\n    return printPlugin(plugin, val, config, indentation, depth, refs);\n  }\n\n  const basicResult = printBasicValue(\n    val,\n    config.printFunctionName,\n    config.escapeRegex,\n    config.escapeString\n  );\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(\n    val,\n    config,\n    indentation,\n    depth,\n    refs,\n    hasCalledToJSON\n  );\n}\n\nconst DEFAULT_THEME = {\n  comment: 'gray',\n  content: 'reset',\n  prop: 'yellow',\n  tag: 'cyan',\n  value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\nconst DEFAULT_OPTIONS = {\n  callToJSON: true,\n  escapeRegex: false,\n  escapeString: true,\n  highlight: false,\n  indent: 2,\n  maxDepth: Infinity,\n  min: false,\n  plugins: [],\n  printFunctionName: true,\n  theme: DEFAULT_THEME\n};\n\nfunction validateOptions(options) {\n  Object.keys(options).forEach(key => {\n    if (!DEFAULT_OPTIONS.hasOwnProperty(key)) {\n      throw new Error(`pretty-format: Unknown option \"${key}\".`);\n    }\n  });\n\n  if (options.min && options.indent !== undefined && options.indent !== 0) {\n    throw new Error(\n      'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n    );\n  }\n\n  if (options.theme !== undefined) {\n    if (options.theme === null) {\n      throw new Error(`pretty-format: Option \"theme\" must not be null.`);\n    }\n\n    if (typeof options.theme !== 'object') {\n      throw new Error(\n        `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n      );\n    }\n  }\n}\n\nconst getColorsHighlight = options =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    const value =\n      options.theme && options.theme[key] !== undefined\n        ? options.theme[key]\n        : DEFAULT_THEME[key];\n    const color = value && _ansiStyles.default[value];\n\n    if (\n      color &&\n      typeof color.close === 'string' &&\n      typeof color.open === 'string'\n    ) {\n      colors[key] = color;\n    } else {\n      throw new Error(\n        `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n      );\n    }\n\n    return colors;\n  }, Object.create(null));\n\nconst getColorsEmpty = () =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    colors[key] = {\n      close: '',\n      open: ''\n    };\n    return colors;\n  }, Object.create(null));\n\nconst getPrintFunctionName = options =>\n  options && options.printFunctionName !== undefined\n    ? options.printFunctionName\n    : DEFAULT_OPTIONS.printFunctionName;\n\nconst getEscapeRegex = options =>\n  options && options.escapeRegex !== undefined\n    ? options.escapeRegex\n    : DEFAULT_OPTIONS.escapeRegex;\n\nconst getEscapeString = options =>\n  options && options.escapeString !== undefined\n    ? options.escapeString\n    : DEFAULT_OPTIONS.escapeString;\n\nconst getConfig = options => ({\n  callToJSON:\n    options && options.callToJSON !== undefined\n      ? options.callToJSON\n      : DEFAULT_OPTIONS.callToJSON,\n  colors:\n    options && options.highlight\n      ? getColorsHighlight(options)\n      : getColorsEmpty(),\n  escapeRegex: getEscapeRegex(options),\n  escapeString: getEscapeString(options),\n  indent:\n    options && options.min\n      ? ''\n      : createIndent(\n          options && options.indent !== undefined\n            ? options.indent\n            : DEFAULT_OPTIONS.indent\n        ),\n  maxDepth:\n    options && options.maxDepth !== undefined\n      ? options.maxDepth\n      : DEFAULT_OPTIONS.maxDepth,\n  min: options && options.min !== undefined ? options.min : DEFAULT_OPTIONS.min,\n  plugins:\n    options && options.plugins !== undefined\n      ? options.plugins\n      : DEFAULT_OPTIONS.plugins,\n  printFunctionName: getPrintFunctionName(options),\n  spacingInner: options && options.min ? ' ' : '\\n',\n  spacingOuter: options && options.min ? '' : '\\n'\n});\n\nfunction createIndent(indent) {\n  return new Array(indent + 1).join(' ');\n}\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\n\nfunction prettyFormat(val, options) {\n  if (options) {\n    validateOptions(options);\n\n    if (options.plugins) {\n      const plugin = findPlugin(options.plugins, val);\n\n      if (plugin !== null) {\n        return printPlugin(plugin, val, getConfig(options), '', 0, []);\n      }\n    }\n  }\n\n  const basicResult = printBasicValue(\n    val,\n    getPrintFunctionName(options),\n    getEscapeRegex(options),\n    getEscapeString(options)\n  );\n\n  if (basicResult !== null) {\n    return basicResult;\n  }\n\n  return printComplexValue(val, getConfig(options), '', 0, []);\n}\n\nprettyFormat.plugins = {\n  AsymmetricMatcher: _AsymmetricMatcher.default,\n  ConvertAnsi: _ConvertAnsi.default,\n  DOMCollection: _DOMCollection.default,\n  DOMElement: _DOMElement.default,\n  Immutable: _Immutable.default,\n  ReactElement: _ReactElement.default,\n  ReactTestComponent: _ReactTestComponent.default\n}; // eslint-disable-next-line no-redeclare\n\nmodule.exports = prettyFormat;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.test = exports.serialize = void 0;\n\nvar _collections = require('../collections');\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nconst asymmetricMatcher =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('jest.asymmetricMatcher')\n    : 0x1357a5;\nconst SPACE = ' ';\n\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  const stringedValue = val.toString();\n\n  if (\n    stringedValue === 'ArrayContaining' ||\n    stringedValue === 'ArrayNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return '[' + stringedValue + ']';\n    }\n\n    return (\n      stringedValue +\n      SPACE +\n      '[' +\n      (0, _collections.printListItems)(\n        val.sample,\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      ) +\n      ']'\n    );\n  }\n\n  if (\n    stringedValue === 'ObjectContaining' ||\n    stringedValue === 'ObjectNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return '[' + stringedValue + ']';\n    }\n\n    return (\n      stringedValue +\n      SPACE +\n      '{' +\n      (0, _collections.printObjectProperties)(\n        val.sample,\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      ) +\n      '}'\n    );\n  }\n\n  if (\n    stringedValue === 'StringMatching' ||\n    stringedValue === 'StringNotMatching'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n\n  if (\n    stringedValue === 'StringContaining' ||\n    stringedValue === 'StringNotContaining'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n\n  return val.toAsymmetricMatcher();\n};\n\nexports.serialize = serialize;\n\nconst test = val => val && val.$$typeof === asymmetricMatcher;\n\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.serialize = exports.test = void 0;\n\nvar _ansiRegex = _interopRequireDefault(require('ansi-regex'));\n\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst toHumanReadableAnsi = text =>\n  text.replace((0, _ansiRegex.default)(), match => {\n    switch (match) {\n      case _ansiStyles.default.red.close:\n      case _ansiStyles.default.green.close:\n      case _ansiStyles.default.cyan.close:\n      case _ansiStyles.default.gray.close:\n      case _ansiStyles.default.white.close:\n      case _ansiStyles.default.yellow.close:\n      case _ansiStyles.default.bgRed.close:\n      case _ansiStyles.default.bgGreen.close:\n      case _ansiStyles.default.bgYellow.close:\n      case _ansiStyles.default.inverse.close:\n      case _ansiStyles.default.dim.close:\n      case _ansiStyles.default.bold.close:\n      case _ansiStyles.default.reset.open:\n      case _ansiStyles.default.reset.close:\n        return '</>';\n\n      case _ansiStyles.default.red.open:\n        return '<red>';\n\n      case _ansiStyles.default.green.open:\n        return '<green>';\n\n      case _ansiStyles.default.cyan.open:\n        return '<cyan>';\n\n      case _ansiStyles.default.gray.open:\n        return '<gray>';\n\n      case _ansiStyles.default.white.open:\n        return '<white>';\n\n      case _ansiStyles.default.yellow.open:\n        return '<yellow>';\n\n      case _ansiStyles.default.bgRed.open:\n        return '<bgRed>';\n\n      case _ansiStyles.default.bgGreen.open:\n        return '<bgGreen>';\n\n      case _ansiStyles.default.bgYellow.open:\n        return '<bgYellow>';\n\n      case _ansiStyles.default.inverse.open:\n        return '<inverse>';\n\n      case _ansiStyles.default.dim.open:\n        return '<dim>';\n\n      case _ansiStyles.default.bold.open:\n        return '<bold>';\n\n      default:\n        return '';\n    }\n  });\n\nconst test = val =>\n  typeof val === 'string' && !!val.match((0, _ansiRegex.default)());\n\nexports.test = test;\n\nconst serialize = (val, config, indentation, depth, refs, printer) =>\n  printer(toHumanReadableAnsi(val), config, indentation, depth, refs);\n\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.serialize = exports.test = void 0;\n\nvar _collections = require('../collections');\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\n\nconst testName = name =>\n  OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\n\nconst test = val =>\n  val &&\n  val.constructor &&\n  !!val.constructor.name &&\n  testName(val.constructor.name);\n\nexports.test = test;\n\nconst isNamedNodeMap = collection =>\n  collection.constructor.name === 'NamedNodeMap';\n\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n  const name = collection.constructor.name;\n\n  if (++depth > config.maxDepth) {\n    return '[' + name + ']';\n  }\n\n  return (\n    (config.min ? '' : name + SPACE) +\n    (OBJECT_NAMES.indexOf(name) !== -1\n      ? '{' +\n        (0, _collections.printObjectProperties)(\n          isNamedNodeMap(collection)\n            ? Array.from(collection).reduce((props, attribute) => {\n                props[attribute.name] = attribute.value;\n                return props;\n              }, {})\n            : {...collection},\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        ) +\n        '}'\n      : '[' +\n        (0, _collections.printListItems)(\n          Array.from(collection),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        ) +\n        ']')\n  );\n};\n\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.serialize = exports.test = void 0;\n\nvar _markup = require('./lib/markup');\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\n\nconst testNode = (nodeType, name) =>\n  (nodeType === ELEMENT_NODE && ELEMENT_REGEXP.test(name)) ||\n  (nodeType === TEXT_NODE && name === 'Text') ||\n  (nodeType === COMMENT_NODE && name === 'Comment') ||\n  (nodeType === FRAGMENT_NODE && name === 'DocumentFragment');\n\nconst test = val =>\n  val &&\n  val.constructor &&\n  val.constructor.name &&\n  testNode(val.nodeType, val.constructor.name);\n\nexports.test = test;\n\nfunction nodeIsText(node) {\n  return node.nodeType === TEXT_NODE;\n}\n\nfunction nodeIsComment(node) {\n  return node.nodeType === COMMENT_NODE;\n}\n\nfunction nodeIsFragment(node) {\n  return node.nodeType === FRAGMENT_NODE;\n}\n\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n  if (nodeIsText(node)) {\n    return (0, _markup.printText)(node.data, config);\n  }\n\n  if (nodeIsComment(node)) {\n    return (0, _markup.printComment)(node.data, config);\n  }\n\n  const type = nodeIsFragment(node)\n    ? `DocumentFragment`\n    : node.tagName.toLowerCase();\n\n  if (++depth > config.maxDepth) {\n    return (0, _markup.printElementAsLeaf)(type, config);\n  }\n\n  return (0, _markup.printElement)(\n    type,\n    (0, _markup.printProps)(\n      nodeIsFragment(node)\n        ? []\n        : Array.from(node.attributes)\n            .map(attr => attr.name)\n            .sort(),\n      nodeIsFragment(node)\n        ? {}\n        : Array.from(node.attributes).reduce((props, attribute) => {\n            props[attribute.name] = attribute.value;\n            return props;\n          }, {}),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    (0, _markup.printChildren)(\n      Array.prototype.slice.call(node.childNodes || node.children),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    config,\n    indentation\n  );\n};\n\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.test = exports.serialize = void 0;\n\nvar _collections = require('../collections');\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\n\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\nconst getImmutableName = name => 'Immutable.' + name;\n\nconst printAsLeaf = name => '[' + name + ']';\n\nconst SPACE = ' ';\nconst LAZY = '…'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : getImmutableName(type) +\n      SPACE +\n      '{' +\n      (0, _collections.printIteratorEntries)(\n        val.entries(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      ) +\n      '}'; // Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\n\nfunction getRecordEntries(val) {\n  let i = 0;\n  return {\n    next() {\n      if (i < val._keys.length) {\n        const key = val._keys[i++];\n        return {\n          done: false,\n          value: [key, val.get(key)]\n        };\n      }\n\n      return {\n        done: true,\n        value: undefined\n      };\n    }\n  };\n}\n\nconst printImmutableRecord = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) => {\n  // _name property is defined only for an Immutable Record instance\n  // which was constructed with a second optional descriptive name arg\n  const name = getImmutableName(val._name || 'Record');\n  return ++depth > config.maxDepth\n    ? printAsLeaf(name)\n    : name +\n        SPACE +\n        '{' +\n        (0, _collections.printIteratorEntries)(\n          getRecordEntries(val),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        ) +\n        '}';\n};\n\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n  const name = getImmutableName('Seq');\n\n  if (++depth > config.maxDepth) {\n    return printAsLeaf(name);\n  }\n\n  if (val[IS_KEYED_SENTINEL]) {\n    return (\n      name +\n      SPACE +\n      '{' + // from Immutable collection of entries or from ECMAScript object\n      (val._iter || val._object\n        ? (0, _collections.printIteratorEntries)(\n            val.entries(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          )\n        : LAZY) +\n      '}'\n    );\n  }\n\n  return (\n    name +\n    SPACE +\n    '[' +\n    (val._iter || // from Immutable collection of values\n    val._array || // from ECMAScript array\n    val._collection || // from ECMAScript collection in immutable v4\n    val._iterable // from ECMAScript collection in immutable v3\n      ? (0, _collections.printIteratorValues)(\n          val.values(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )\n      : LAZY) +\n    ']'\n  );\n};\n\nconst printImmutableValues = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : getImmutableName(type) +\n      SPACE +\n      '[' +\n      (0, _collections.printIteratorValues)(\n        val.values(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      ) +\n      ']';\n\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  if (val[IS_MAP_SENTINEL]) {\n    return printImmutableEntries(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n    );\n  }\n\n  if (val[IS_LIST_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'List'\n    );\n  }\n\n  if (val[IS_SET_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n    );\n  }\n\n  if (val[IS_STACK_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'Stack'\n    );\n  }\n\n  if (val[IS_SEQ_SENTINEL]) {\n    return printImmutableSeq(val, config, indentation, depth, refs, printer);\n  } // For compatibility with immutable v3 and v4, let record be the default.\n\n  return printImmutableRecord(val, config, indentation, depth, refs, printer);\n}; // Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\n\nexports.serialize = serialize;\n\nconst test = val =>\n  val &&\n  (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\n\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.test = exports.serialize = void 0;\n\nvar ReactIs = _interopRequireWildcard(require('react-is'));\n\nvar _markup = require('./lib/markup');\n\nfunction _getRequireWildcardCache() {\n  if (typeof WeakMap !== 'function') return null;\n  var cache = new WeakMap();\n  _getRequireWildcardCache = function () {\n    return cache;\n  };\n  return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache();\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n  if (Array.isArray(arg)) {\n    arg.forEach(item => {\n      getChildren(item, children);\n    });\n  } else if (arg != null && arg !== false) {\n    children.push(arg);\n  }\n\n  return children;\n};\n\nconst getType = element => {\n  const type = element.type;\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || 'Unknown';\n  }\n\n  if (ReactIs.isFragment(element)) {\n    return 'React.Fragment';\n  }\n\n  if (ReactIs.isSuspense(element)) {\n    return 'React.Suspense';\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (ReactIs.isContextProvider(element)) {\n      return 'Context.Provider';\n    }\n\n    if (ReactIs.isContextConsumer(element)) {\n      return 'Context.Consumer';\n    }\n\n    if (ReactIs.isForwardRef(element)) {\n      if (type.displayName) {\n        return type.displayName;\n      }\n\n      const functionName = type.render.displayName || type.render.name || '';\n      return functionName !== ''\n        ? 'ForwardRef(' + functionName + ')'\n        : 'ForwardRef';\n    }\n\n    if (ReactIs.isMemo(element)) {\n      const functionName =\n        type.displayName || type.type.displayName || type.type.name || '';\n      return functionName !== '' ? 'Memo(' + functionName + ')' : 'Memo';\n    }\n  }\n\n  return 'UNDEFINED';\n};\n\nconst getPropKeys = element => {\n  const {props} = element;\n  return Object.keys(props)\n    .filter(key => key !== 'children' && props[key] !== undefined)\n    .sort();\n};\n\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(getType(element), config)\n    : (0, _markup.printElement)(\n        getType(element),\n        (0, _markup.printProps)(\n          getPropKeys(element),\n          element.props,\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        (0, _markup.printChildren)(\n          getChildren(element.props.children),\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        config,\n        indentation\n      );\n\nexports.serialize = serialize;\n\nconst test = val => val && ReactIs.isElement(val);\n\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.test = exports.serialize = void 0;\n\nvar _markup = require('./lib/markup');\n\nvar Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;\nconst testSymbol =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('react.test.json')\n    : 0xea71357;\n\nconst getPropKeys = object => {\n  const {props} = object;\n  return props\n    ? Object.keys(props)\n        .filter(key => props[key] !== undefined)\n        .sort()\n    : [];\n};\n\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(object.type, config)\n    : (0, _markup.printElement)(\n        object.type,\n        object.props\n          ? (0, _markup.printProps)(\n              getPropKeys(object),\n              object.props,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        object.children\n          ? (0, _markup.printChildren)(\n              object.children,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        config,\n        indentation\n      );\n\nexports.serialize = serialize;\n\nconst test = val => val && val.$$typeof === testSymbol;\n\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = escapeHTML;\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction escapeHTML(str) {\n  return str.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printText = exports.printChildren = exports.printProps = void 0;\n\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n  const indentationNext = indentation + config.indent;\n  const colors = config.colors;\n  return keys\n    .map(key => {\n      const value = props[key];\n      let printed = printer(value, config, indentationNext, depth, refs);\n\n      if (typeof value !== 'string') {\n        if (printed.indexOf('\\n') !== -1) {\n          printed =\n            config.spacingOuter +\n            indentationNext +\n            printed +\n            config.spacingOuter +\n            indentation;\n        }\n\n        printed = '{' + printed + '}';\n      }\n\n      return (\n        config.spacingInner +\n        indentation +\n        colors.prop.open +\n        key +\n        colors.prop.close +\n        '=' +\n        colors.value.open +\n        printed +\n        colors.value.close\n      );\n    })\n    .join('');\n}; // Return empty string if children is empty.\n\nexports.printProps = printProps;\n\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n  children\n    .map(\n      child =>\n        config.spacingOuter +\n        indentation +\n        (typeof child === 'string'\n          ? printText(child, config)\n          : printer(child, config, indentation, depth, refs))\n    )\n    .join('');\n\nexports.printChildren = printChildren;\n\nconst printText = (text, config) => {\n  const contentColor = config.colors.content;\n  return (\n    contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n  );\n};\n\nexports.printText = printText;\n\nconst printComment = (comment, config) => {\n  const commentColor = config.colors.comment;\n  return (\n    commentColor.open +\n    '<!--' +\n    (0, _escapeHTML.default)(comment) +\n    '-->' +\n    commentColor.close\n  );\n}; // Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\n\nexports.printComment = printComment;\n\nconst printElement = (\n  type,\n  printedProps,\n  printedChildren,\n  config,\n  indentation\n) => {\n  const tagColor = config.colors.tag;\n  return (\n    tagColor.open +\n    '<' +\n    type +\n    (printedProps &&\n      tagColor.close +\n        printedProps +\n        config.spacingOuter +\n        indentation +\n        tagColor.open) +\n    (printedChildren\n      ? '>' +\n        tagColor.close +\n        printedChildren +\n        config.spacingOuter +\n        indentation +\n        tagColor.open +\n        '</' +\n        type\n      : (printedProps && !config.min ? '' : ' ') + '/') +\n    '>' +\n    tagColor.close\n  );\n};\n\nexports.printElement = printElement;\n\nconst printElementAsLeaf = (type, config) => {\n  const tagColor = config.colors.tag;\n  return (\n    tagColor.open +\n    '<' +\n    type +\n    tagColor.close +\n    ' …' +\n    tagColor.open +\n    ' />' +\n    tagColor.close\n  );\n};\n\nexports.printElementAsLeaf = printElementAsLeaf;\n"],"sourceRoot":""}